Network Time Protocol
Anwendung | NTP | ||||
---|---|---|---|---|---|
Transport | UDP | TCP | |||
Internet | IP (IPv4, IPv6) | ||||
Netzzugang | Ethernet | Token Bus |
Token Ring |
FDDI | … |
Das Network Time Protocol (NTP) ist ein Standard zur Synchronisierung von Uhren in Computersystemen über paketbasierte Kommunikationsnetze. NTP verwendet in der Regel das verbindungslose Transportprotokoll UDP. Es wurde speziell entwickelt, um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit zu ermöglichen.
Grundlagen

NTP ist eines der ältesten noch immer verwendeten Protokolle. Es wurde von David Mills an der Universität von Delaware entwickelt und 1985 als RFC 958 veröffentlicht. Unter seiner Leitung werden Protokoll und UNIX-Implementierung ständig weiterentwickelt. Gegenwärtig ist die Protokollversion 4 aktuell. Der UDP-Port 123 ist für NTP reserviert.
NTP ist in UNIX-artigen Betriebssystemen in Form des Hintergrundprozesses ntpd implementiert. Dieser synchronisiert die lokale Uhr mit Hilfe von externen Zeitsignalen, die er entweder direkt von einem lokalen Empfänger (DCF77, GPS, Loran-C) oder per NTP von einem NTP-Server erhält. Damit die lokale Uhrzeit nicht nur zu den zyklischen Synchronisationszeitpunkten präzise mit dem externen Signal übereinstimmt, korrigiert der ntpd-Prozess nicht nur die Phase sondern auch die Frequenz des lokalen Zeitgebers mit Hilfe einer Software-PLL. Um den internen Zeitgeber mit Hilfe eines hochpräzisen Sekundensignals noch enger an einen externen Normalzeitempfänger zu koppeln, haben einige UNIX-Varianten (unter anderem Linux und FreeBSD) die oben erwähnte Software-PLL im Kernel implementiert.
Die Zeitstempel im NTP sind 64 Bits lang. 32 Bits kodieren die Sekunden seit dem 1. Januar 1900 00:00:00 Uhr, weitere 32 Bits den Sekundenbruchteil. Auf diese Weise lässt sich ein Zeitraum von 232 Sekunden (etwa 136 Jahre) mit einer Auflösung von 2−32 Sekunden (etwa 0,25 Nanosekunden) darstellen. Obwohl diese Skala also alle 232 Sekunden umspringt, sind NTP-Implementierungen in der Lage, die tatsächliche Zeit festzustellen, indem sie eine ungefähre Zeit aus anderen Quellen heranziehen. Da dies nur eine Genauigkeit von ein paar Jahrzehnten erfordert, sollte dies im Alltag kein Problem sein.
NTP nutzt ein hierarchisches System verschiedener Strata, wobei Systeme mit dem Stratum 1 direkt mit einer sehr genauen externen Uhr (z. B. eine GPS- oder andere Funkuhr) verbunden sind. Systeme mit dem Stratum 2 beziehen ihre Zeit von einem oder mehreren Systemen mit Stratum 1 usw. Der Begriff Stratum hat hier aber eine andere Bedeutung als sonst in der Telekommunikationstechnik üblich.
Algorithmus und Genauigkeit
NTP benutzt den Marzullo-Algorithmus (erfunden von Keith Marzullo von der Universität San Diego in seiner Dissertation) mit einer UTC-Zeitskala und unterstützt Schaltsekunden. Durch die Betrachtung der Schaltsekunden im Protokoll kommt es dazu, dass mit jeder Schaltsekunde (welche jedoch selten vorkommen) eine neue Sekundenskala benutzt wird. Für die Skala der Systemzeit wird jedoch für gewöhnlich die tatsächlich vergangene Zeit seit einem bestimmten Zeitpunkt benutzt und Schaltsekunden kommen erst bei der Darstellung der Zeit ins Spiel.
NTPv4 kann die lokale Zeit eines Systems über das öffentliche Internet mit einer Genauigkeit von 10 Millisekunden halten, in lokalen Netzwerken sind unter idealen Bedingungen sogar Genauigkeiten von 200 Mikrosekunden und besser möglich. Bei einem hinreichend stabilen lokalen Taktgeber (thermostatgesteuerter Quarzoszillator, Rubidium-Oszillator, etc.) lässt sich unter Verwendung der Kernel-PLL (siehe oben) der Phasenfehler zwischen Referenzzeitgeber und lokaler Uhr bis in die Größenordnung von wenigen Mikrosekunden reduzieren.
SNTP
Das Simple Network Time Protocol (SNTP) ist eine vereinfachte Version des NTP. Es wird im RFC 4330 beschrieben.
Ältere Windows-Versionen wie Windows 2000 verwenden SNTP, um die Uhrzeit auf dem lokalen Computer aktuell zu halten. Dies wird durch den Windows-Service W32Time übernommen. In Windows XP und Windows Server 2003 wurde die Dynamic-Link-Library W32Time.dll überarbeitet, so dass nun NTP zur Zeitsynchronisation verwendet wird.
Da Microsoft das Verfahren zur Zeitsynchronisation erst mit Windows 2000 einführte, haben einige Softwarehersteller eigenständige Programme zur Zeitsynchronisation unter Windows entwickelt (siehe Weblinks). Durch die Verwendung moderner Authentifizierungssysteme in Windows 2000 und neueren Versionen (wie Kerberos) wird eine genaue Zeitsynchronisation auch in Microsoft Windows notwendig.
Die NTP-Homepage
Neben der Referenz-NTP-Software, die auf der NTP-Homepage für diverse Betriebssysteme erhältlich ist, bieten eine Reihe von Herstellern fertige Standalone-Lösungen an, die als NTP-Zeitquelle in Computernetzwerken jeder Größe Verwendung finden können.
Standards
Die Standards sind in folgenden RFCs festgelegt[1]:
- RFC 4330 – SNTP V4
- Für NTP V4 gibt es zur Zeit keine öffentliche Spezifikation
- RFC 1305 – NTP V3 (PDF-Fassung)
- RFC 2783 – PPS API
Folgende RFCs sind obsolet:
- RFC 2030 – SNTP V4
- RFC 1769 – SNTP V3
- RFC 1361 – SNTP
- RFC 1119 – NTP V2 (PostScript-Format)
- RFC 1059 – NTP V1
- RFC 958 – NTP
Quellen
Siehe auch
- Allan-Varianz
- Synchronisierung
- Liste der TCP/IP-basierten Netzwerkdienste
- NTP-Pool
- OpenNTPD
- Zeitserver
Literatur
- David L. Mills: Computer Network Time Synchronization: The Network Time Protocol. CRC Press, 2006. ISBN 978-0-8493-5805-0
Weblinks
- ntp.org − NTP-Homepage (englisch)
- NTP-Client Implementierung in .NET
- ntp.isc.org − NTP Public Service Project des Internet Systems Consortium
- Dave Mills’ NTP-Homepage
- Physikalisch-Technische Bundesanstalt
- Erklärungen zur Konfiguration von NTP
Öffentliche Zeitserver: