NTP
Einleitung
Für zeitkritische Prozesse ist manuelle Methode der Zeiteinstellung auf Rechnern
unzureichend: Nicht nur, dass eine auf diese Weise gepflegte Systemzeit bzgl. der
"korrekten" Uhrzeit meist beträchtliche Differenzen im Minutenbereich aufweist, die
Systemzeit läuft durch das manuelle Nachstellen auch ungleichmässig, d.h. sie
"springt" vor bzw. zurück.
Falsche Systemzeit bzw. Systemzeitdifferenzen innerhalb einer Gruppe von Rechnern bereiten
Probleme z.B. bei:
RFC des NTP
Das Network Time Protocol wurde in den RFCs 1119 und 1129 dokumentiert. Seine Grundfunktionen
sind
Ersteres bewirkt, dass die Uhren im Netzwerk immer bezüglich einer Referenz-Uhrzeit
(der "Universal Coordinated Time", UTC) übereinstimmen, letzteres, dass sie mit gleicher
Frequenz vorrücken, d.h. im gleichen Rhythmus "ticken".
Das Network Time Protocol ist in vielen Punkten leistungsfähiger als das ältere
TIME Protocol (RFC 868) und die "ICMP Timestamp Option". Es erlaubt die Koordination von Uhren
innerhalb grosser Netzwerke mit vielen Routern, aber auch in sehr schnellen Netzen (in denen
sehr präzise Uhren erforderlich sind).
Wirkungsweise
An irgendeiner Stelle muss die korrekte UTC-Zeit ins Netzwerk "eingespeisst" werden. Hierzu
wird ein Netzwerkrechner mit einer speziellen Hardware-Uhr ausgerüstet, die per Funk ein
Zeitzeichensignal empfängt, welches meist von einer Atomuhr generiert wird. Für
unsere geographischen Verhältnisse ist die Physikalisch-Technische Bundesanstalt
Braunschweig mit ihrem DCF77 Zeitsignal die massgebende Zeitquelle.
Ein so ausgerüsteter Rechner synchronisiert seine eigene Systemuhr in Zeit und Frequenz
mit der externen Hardware-Uhr und wird so zu einem "primären Timeserver" im Netzwerk.
Die Zeitgenauigkeit eines solchen Timeservers wird von der Auflösung der eigenen Systemuhr
bestimmt. Eine Genauigkeit von 10 ms ist zwar für die oben aufgeführten Probleme
nicht erforderlich, das NTP-Protokoll erfordert jedoch, dass die Uhren von Timeservern eine
derartige Präzision aufweisen.
Hierarchie
Timeserver stehen in hierarchischer Beziehung zueinander. Ein sekundärer Timerserver
erhält seine Zeit über das Netzwerk von einem primären Timerserver.
Andere Timerserver beziehen ihre Zeit wiederum von einem sekundären Timeserver. Die
Stellung eines Timeservers in dieser Hierarchie wird mit einer Zahl, dem "Stratum"
gekennzeichnet. Ein primärer Timeserver hat ein Stratum von 1, ein sekundärer hat
ein Stratum von 2 usw.. Je höher das Stratum, desto "weiter" ist der Timeserver von der
primären Zeitquelle entfernt und desto höher ist die Wahrscheinlichkeit, dass wir
es mit einem ungenauen Timeserver zu tun haben.
Synchronisation in LAN und WAN
Die Zeitsynchronisation zwischen Client und Server läuft vereinfacht gesehen
folgendermassen ab: Der Client schickt eine NTP-Message an den Server. Der Server nimmt das
eintreffende Datagramm und tauscht die IP-Adressen und einige Felder in der Message aus und
schickt es wieder zurück. Resultat dieses Prozesses sind vier Zeitstempel. Daraus kann
ein Rechner zwei Grössen bestimmen: Das "Delay", also die Zeit, die die NTP-Message im
Netz unterwegs war, und das "Offset", die Zeitspanne, worin die Uhren der Rechner differieren.
Das Offset beinhaltet eine Mittelung des Delay, d.h. NTP geht davon aus, dass Hin- und
Rückweg der NTP-Pakete gleich lang sind. Abweichungen davon gehen als Fehler in die
Berechnung des Offsets ein. Bei LANs macht das Rount-Trip Delay nur einen Bruchteil des
Offsets aus, wodurch letztere Grösse sehr genau bestimmt werden kann.
Anders hingegen sehen die Verhältnisse im WAN-Bereich aus. Um den verfälschenden
Einfluss von Laufzeitschwankungen zu minimieren, werden die ermittelten Offset- und
Delaywerte einer zusätzlichen Filterprozedur unterworfen:
Aus den letzten acht empfangenen NTP-Messages eines Timeservers bestimmt die Message mit dem
geringsten Delay den aktuellen Offset-Wert; zusätzlich wird aus der gleichen Liste eine
weitere Grösse berechnet,die "Dispersion": Einen gewichteten Mittelwert der
Offset-Abweichungen der letzten acht NTP-Messages vom aktuellen Offset-Wert, wobei die
Offset-Werte bei geringem Delay-Wert ein grösseres Gewicht haben als die mit grossen
Delay-Werten. Die "Dispersion" eines Timeservers spielt eine Rolle bei der Bewertung der
Güte von Timeservern.
Ausfallsicherheit
NTP wurde für den Einsatz im Internet entworfen, und im Internet ist immer mit
Störungen zu rechnen. Folglich müssen Vorkehrungen für Störungen bei
Zeitzeichen-Empfängern und Timeservern bzw. den Netzverbindungen zwischen Timeservern
getroffen werden. Beim NTP werden hierzu im wesentlichen zwei Techniken angewandt:
Update der Time-Informationen
Die Frequenz, mit der zwischen Timeservern Messages ausgetauscht werden, schwankt dynamisch
zwischen 64 s (mit aktueller Synchronisationsquelle) und ca. 34 min (mit Backup-Timerservern).
Wenn bis jetzt zwischen (Time-)Server und Client unterschieden wurde, geschah dies im Hinblick
darauf, wer von wem die korrekte Zeit bekommt: Der Client fordert vom Server eine NTP-Message
mit den schon beschriebenen Zeitstempeln an und synchronisiert danach seine eigene Uhr, falls
der Server sich als der "beste" verfügbare erweist. Im NTP-Protokoll wird von
"Assoziationen" zwischen Timeservern gesprochen, die sich mit den fünf verschiedenen
Betriebszuständen beschreiben lassen, in denen ein Timeserver operiert.
Assoziation | Host 1 | Host 2 |
Client <--> Server | Client | Server |
Broadcast | Client | Broadcast Server |