05 Zeitsynchronisation

Aus M126
Zur Navigation springen Zur Suche springen

Peripheriegeräte im Netzwerkbetrieb

Die Bedeutung der Zeitmessung

Zeit ist eine der genauesten physikalischen Einheiten. Seit dem 17. Jahrhundert kennen wir die astronomische Zeitmessung mit dem mittleren Sonnentag (24 Stunden = 86400 Sekunden).

1946 wurde die Atomuhr entwickelt. Seit 1967 ist die Sekunde durch die 9.192.631.770 Schwingungen des Cäsium-133-Atoms definiert.

Schaltsekunden

Da die Erdrotation variiert, wurde 1972 die Schaltsekunde eingeführt. Sie gleicht Unterschiede zwischen UTC und UT1 aus.

Schaltsekunden werden in der Regel am 30. Juni oder 31. Dezember nach 23:59:59 UTC als zusätzliche Sekunde (23:59:60) eingefügt.

Beispielproblem: Am 30. Juni 2012 kam es weltweit zu Serverproblemen (Linux-Kernel 2.6.26 – 3.3, MySQL, Java). Google löste das Problem durch "Leap Smearing".

Network Time Protocol (NTP)

NTP sorgt für präzise Zeitangaben in Netzwerken (z. B. für AD, NFS, Cluster, Logvergleich).

Externe Zeitgeber

DCF77

  • Standort: Mainflingen, Deutschland
  • Frequenz: 77.5 kHz
  • Betreiber: Physikalisch-Technische Bundesanstalt (PTB)
  • Genauigkeit: 10^-12 (≈ 1 Sekunde in 30.000 Jahren)

TDF

  • Standort: Paris, Frankreich
  • Genaueste Atomuhr (Cäsium-Fontäne)
  • Abdeckung: ganz Europa (2000 kW)

GPS

  • Global verfügbar
  • Zivile Nutzung abhängig vom US-Militär
  • Europäisches Galileo in Planung

Funktionsweise von NTP

NTP kommuniziert über UDP Port 123. Es nutzt mehrere Zeitquellen (Multicast, Broadcast, Unicast) und aktualisiert die Zeit in kleinen Schritten, um Dienste nicht zu stören.

Zeitabfrageprozess

  1. Client sendet Anfrage mit Timestamp A
  2. Server empfängt bei X, antwortet bei Y
  3. Client empfängt bei B
  4. Berechnet Laufzeit: B-A-(Y-X)
  5. Korrigiert seine Systemzeit

Stratum-System

  • Stratum 0: z. B. GPS, DCF77 (Primärquellen)
  • Stratum 1: Lokaler Server, der Zeit direkt von Stratum 0 bezieht
  • Stratum 2+: Clients und nachgeschaltete Server

Zeitdarstellung

  • 64-Bit Zeitstempel (32 Bit Sekunden seit 1.1.1900, 32 Bit Bruchteile)
  • Genauigkeit bis ca. 0,23 Nanosekunden

Erkennung falscher Zeitangaben (Byzantinischer Fehler)

NTP erkennt falsche Zeitserver mit einem Konsens-Algorithmus, der dem byzantinischen Generäle-Problem ähnelt. Falschinformationen werden ausgeschlossen, solange weniger als ein Drittel kompromittiert sind.

Reale Auswirkungen

Beispiel: Lufthansa-Flug 2014 – vereiste Sensoren lieferten falsche, aber gleiche Daten. Bordcomputer steuerte in den Sinkflug.

Konfiguration auf einem Raspberry Pi

Installation von NTP

sudo apt-get install ntp

Zeitserver eintragen (z. B. für die Schweiz)

sudo nano /etc/ntp.conf
# Evt. liegt die Datei auch hier:
sudo nano /etc/ntpsec/ntp.conf

server 0.ch.pool.ntp.org iburst
server 1.ch.pool.ntp.org iburst
server 2.ch.pool.ntp.org iburst
server 3.ch.pool.ntp.org iburst
server ntp.metas.ch iburst

Dienst starten/stoppen

sudo systemctl stop ntp
sudo systemctl start ntp

Abfrage der Synchronisation

ntpq -p

Ausgabe von ntpq -p

Bedeutungen

  • `remote`: Zeitserver
  • `refid`: Quelle des Servers
  • `st`: Stratum-Level
  • `t`: Typ (u = unicast, l = local, m = multicast)
  • `when`: Zeit seit letzter Antwort
  • `poll`: Abfrageintervall
  • `reach`: Erreichbarkeit (377 = 8/8 erfolgreich)
  • `delay`: Antwortzeit in ms
  • `offset`: Zeitdifferenz in ms
  • `jitter`: Schwankung in ms

Markierungen

  • `*`: Aktuelle Zeitquelle
  • `+`: Im Mittelwert enthalten
  • `x`: Ungültige Quelle
  • `#`: Quelle außerhalb der Distanz
  • `o`: Pulse-per-Second
  • `-`: Ausgeschlossen durch Algorithmus
  • `.`: Letzter Kandidat

Quellen