05 Zeitsynchronisation: Unterschied zwischen den Versionen

Aus M126
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:
== Die Bedeutung der Zeitmessung ==
== 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).
Zeit ist eine fundamentale physikalische Größe, die in vielen Bereichen der Wissenschaft und Technik eine zentrale Rolle spielt. Seit dem 17. Jahrhundert wird die Zeitmessung auf Basis des mittleren Sonnentags durchgeführt, der als Durchschnitt der Sonnentage gemessen vom Sonnenhöchststand bis zum nächsten Sonnenhöchststand definiert ist und 24 Stunden beträgt. Dies entspricht 86.400 Sekunden pro Tag.​:contentReference[oaicite:8]{index=8}


1946 wurde die Atomuhr entwickelt. Seit 1967 ist die Sekunde durch die 9.192.631.770 Schwingungen des Cäsium-133-Atoms definiert.
:contentReference[oaicite:9]{index=9} :contentReference[oaicite:10]{index=10} :contentReference[oaicite:11]{index=11} :contentReference[oaicite:12]{index=12}​:contentReference[oaicite:13]{index=13}


== Schaltsekunden ==
== Schaltsekunden ==


Da die Erdrotation variiert, wurde 1972 die Schaltsekunde eingeführt. Sie gleicht Unterschiede zwischen UTC und UT1 aus.
:contentReference[oaicite:14]{index=14} :contentReference[oaicite:15]{index=15} :contentReference[oaicite:16]{index=16} :contentReference[oaicite:17]{index=17} :contentReference[oaicite:18]{index=18}​:contentReference[oaicite:19]{index=19}


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.
:contentReference[oaicite:20]{index=20} :contentReference[oaicite:21]{index=21} :contentReference[oaicite:22]{index=22} :contentReference[oaicite:23]{index=23}​:contentReference[oaicite:24]{index=24}
 
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) ==
== Network Time Protocol (NTP) ==


NTP sorgt für präzise Zeitangaben in Netzwerken (z. B. für AD, NFS, Cluster, Logvergleich).
:contentReference[oaicite:25]{index=25} :contentReference[oaicite:26]{index=26} :contentReference[oaicite:27]{index=27} :contentReference[oaicite:28]{index=28}​:contentReference[oaicite:29]{index=29}


== Externe Zeitgeber ==
== Externe Zeitgeber ==
=== DCF77 ===
=== DCF77 ===
* Standort: Mainflingen, Deutschland
* **Standort:** :contentReference[oaicite:30]{index=30}​:contentReference[oaicite:31]{index=31}
* Frequenz: 77.5 kHz
* **Frequenz:** :contentReference[oaicite:32]{index=32}​:contentReference[oaicite:33]{index=33}
* Betreiber: Physikalisch-Technische Bundesanstalt (PTB)
* **Betreiber:** :contentReference[oaicite:34]{index=34}​:contentReference[oaicite:35]{index=35}
* Genauigkeit: 10^-12 (≈ 1 Sekunde in 30.000 Jahren)
* **Genauigkeit:** :contentReference[oaicite:36]{index=36}​:contentReference[oaicite:37]{index=37}
 
:contentReference[oaicite:38]{index=38} :contentReference[oaicite:39]{index=39}​:contentReference[oaicite:40]{index=40}


=== TDF ===
=== TDF ===
* Standort: Paris, Frankreich
* **Standort:** :contentReference[oaicite:41]{index=41}​:contentReference[oaicite:42]{index=42}
* Genaueste Atomuhr (Cäsium-Fontäne)
* **Frequenz:** :contentReference[oaicite:43]{index=43}​:contentReference[oaicite:44]{index=44}
* Abdeckung: ganz Europa (2000 kW)
* **Betreiber:** :contentReference[oaicite:45]{index=45}​:contentReference[oaicite:46]{index=46}
* **Abdeckung:** :contentReference[oaicite:47]{index=47}​:contentReference[oaicite:48]{index=48}
 
:contentReference[oaicite:49]{index=49} :contentReference[oaicite:50]{index=50}​:contentReference[oaicite:51]{index=51}


=== GPS ===
=== GPS ===
* Global verfügbar
* **Global verfügbar**
* Zivile Nutzung abhängig vom US-Militär
* **Zivile Nutzung abhängig von politischen Umständen**
* Europäisches Galileo in Planung
* **Europäisches Galileo-System als zukünftige Alternative geplant**
 
:contentReference[oaicite:52]{index=52} :contentReference[oaicite:53]{index=53}​:contentReference[oaicite:54]{index=54}


== Funktionsweise von NTP ==
== 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.
NTP kommuniziert über den User Datagram Protocol (UDP) Port 123 und ermöglicht es Clients, die Zeit von externen Quellen wie Funkuhren oder Internet-Zeitservern abzufragen. Der Synchronisationsprozess beinhaltet mehrere Schritte, bei denen der Client Zeitstempel sendet und empfängt, um die lokale Uhrzeit präzise anzupassen. Dabei werden Algorithmen verwendet, um Verzögerungen im Netzwerk zu kompensieren und die Genauigkeit der Zeitangaben zu erhöhen.
 
::contentReference[oaicite:55]{index=55}
=== Zeitabfrageprozess ===
# Client sendet Anfrage mit Timestamp A
# Server empfängt bei X, antwortet bei Y
# Client empfängt bei B
# Berechnet Laufzeit: B-A-(Y-X)
# 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 ==
== Konfiguration auf einem Raspberry Pi ==

Version vom 31. März 2025, 11:27 Uhr

Peripheriegeräte im Netzwerkbetrieb

Die Bedeutung der Zeitmessung

Zeit ist eine fundamentale physikalische Größe, die in vielen Bereichen der Wissenschaft und Technik eine zentrale Rolle spielt. Seit dem 17. Jahrhundert wird die Zeitmessung auf Basis des mittleren Sonnentags durchgeführt, der als Durchschnitt der Sonnentage gemessen vom Sonnenhöchststand bis zum nächsten Sonnenhöchststand definiert ist und 24 Stunden beträgt. Dies entspricht 86.400 Sekunden pro Tag.​:contentReference[oaicite:8]{index=8}

contentReference[oaicite:9]{index=9} :contentReference[oaicite:10]{index=10} :contentReference[oaicite:11]{index=11} :contentReference[oaicite:12]{index=12}​:contentReference[oaicite:13]{index=13}

Schaltsekunden

contentReference[oaicite:14]{index=14} :contentReference[oaicite:15]{index=15} :contentReference[oaicite:16]{index=16} :contentReference[oaicite:17]{index=17} :contentReference[oaicite:18]{index=18}​:contentReference[oaicite:19]{index=19}
contentReference[oaicite:20]{index=20} :contentReference[oaicite:21]{index=21} :contentReference[oaicite:22]{index=22} :contentReference[oaicite:23]{index=23}​:contentReference[oaicite:24]{index=24}

Network Time Protocol (NTP)

contentReference[oaicite:25]{index=25} :contentReference[oaicite:26]{index=26} :contentReference[oaicite:27]{index=27} :contentReference[oaicite:28]{index=28}​:contentReference[oaicite:29]{index=29}

Externe Zeitgeber

DCF77

  • **Standort:** :contentReference[oaicite:30]{index=30}​:contentReference[oaicite:31]{index=31}
  • **Frequenz:** :contentReference[oaicite:32]{index=32}​:contentReference[oaicite:33]{index=33}
  • **Betreiber:** :contentReference[oaicite:34]{index=34}​:contentReference[oaicite:35]{index=35}
  • **Genauigkeit:** :contentReference[oaicite:36]{index=36}​:contentReference[oaicite:37]{index=37}
contentReference[oaicite:38]{index=38} :contentReference[oaicite:39]{index=39}​:contentReference[oaicite:40]{index=40}

TDF

  • **Standort:** :contentReference[oaicite:41]{index=41}​:contentReference[oaicite:42]{index=42}
  • **Frequenz:** :contentReference[oaicite:43]{index=43}​:contentReference[oaicite:44]{index=44}
  • **Betreiber:** :contentReference[oaicite:45]{index=45}​:contentReference[oaicite:46]{index=46}
  • **Abdeckung:** :contentReference[oaicite:47]{index=47}​:contentReference[oaicite:48]{index=48}
contentReference[oaicite:49]{index=49} :contentReference[oaicite:50]{index=50}​:contentReference[oaicite:51]{index=51}

GPS

  • **Global verfügbar**
  • **Zivile Nutzung abhängig von politischen Umständen**
  • **Europäisches Galileo-System als zukünftige Alternative geplant**
contentReference[oaicite:52]{index=52} :contentReference[oaicite:53]{index=53}​:contentReference[oaicite:54]{index=54}

Funktionsweise von NTP

NTP kommuniziert über den User Datagram Protocol (UDP) Port 123 und ermöglicht es Clients, die Zeit von externen Quellen wie Funkuhren oder Internet-Zeitservern abzufragen. Der Synchronisationsprozess beinhaltet mehrere Schritte, bei denen der Client Zeitstempel sendet und empfängt, um die lokale Uhrzeit präzise anzupassen. Dabei werden Algorithmen verwendet, um Verzögerungen im Netzwerk zu kompensieren und die Genauigkeit der Zeitangaben zu erhöhen.

contentReference[oaicite:55]{index=55}

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
# oder
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