Network Time Protocol
Network Time Protocol (NTP) - ist ein Standard, um Endgeräte über das Internet mit einer Uhrzeit zu versorgen
Beschreibung
Familie= Internetprotokollfamilie Einsatzfeld= Synchronisierung von Uhren in Computersystemen aufbauend auf= UDP/TCP (Port 123) Version= 4 Standard= RFC 5905
Das Network Time Protocol (NTP) ist ein Standard, um intelligente Endgeräte über das Internet mit einer Uhrzeit zu versorgen
- Die Synchronisierung von Echtzeituhren in Computersystemen wird mit paketbasierten Kommunikationsnetzen umgesetzt
- NTP kann mit beiden Verbindungsprotokollen der vierten Schicht des OSI-Modells arbeiten
- Es ist nötig, damit eine zuverlässige Zeitangabe über Netzwerke mit variabler Paketlaufzeit gesendet werden kann
Im allgemeinen Sprachgebrauch bezeichnet NTP sowohl das Protokoll als auch die Software-Referenzimplementierung desselben
- Das Simple Network Time Protocol (SNTP) ist eine vereinfachte Version des NTP
- Implementierungen
Neben der Referenz-NTP-Software
- die auf der NTP-Website für diverse Betriebssysteme erhältlich ist,
- bietet eine Reihe von Herstellern fertige Stand-alone-Lösungen an
- die als NTP-Zeitquelle in Computernetzwerken jeder Größe Verwendung finden können
Einige Tausend NTP-Server haben einen NTP-Pool gebildet
SNTP
Grundlagen
Statusmeldung
- Statusmeldung des NTP-Daemons

- Spalten
- Status des Peers (+: Wird einbezogen; *: Aktueller Hauptpeer; -: Wird nicht beachtet)
- Servername (remote)
- Zeitquellen-ID, hier die IP des Servers, von dem der Peer die Zeit hat (refid)
- Stratum des Servers (st)
- Typ des Servers (u: Unicast)
- wann das letzte Mal abgefragt wurde in Sekunden (when)
- in welchem Intervall der Server abgefragt wird (poll, in Sekunden)
- wie oft der Server erreicht wurde (reach; 377 heißt, dass die letzten 8 Abfragen erfolgreich waren, ein Schieberegister)
- die Laufzeit (Round-Trip-Time) des NTP-Pakets (delay)
- der Offset der lokalen Uhr gegenüber dem Server (offset, in Millisekunden)
- wie stark die abgefragte Zeit schwankt (jitter, Millisekunden)
NTP wurde von David L. Mills an der Universität von Delaware entwickelt und 1985 als RFC 958 veröffentlicht
- Seit der Pensionierung von Mills wird die Referenzimplementierung derzeit als Open-Source-Projekt durch die im Jahr 2011 gegründete Network Time Foundation unter der Leitung von Harlan Stenn gepflegt
Bis zum Tod von Mills wurde das Protokoll und die UNIX-Implementierung unter seiner Leitung 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 (daemon) ntpd implementiert, der sowohl das lokale System justieren als auch als Server die Zeit für andere Systeme bereitstellen kann.
Windows-Systeme können ebenfalls ohne Zusatzsoftware die genaue Zeit mittels NTP aus dem Internet beziehen (Systemsteuerung "Datum und Uhrzeit" / "Internetzeit", oder Kommando w32tm.exe) und nach Bearbeitung eines Eintrags in der Registrierungsdatenbank auch über NTP bereitstellen
Der UNIX-ntpd synchronisiert die lokale Uhr mithilfe von externen Zeitsignalen, die er entweder direkt von einer lokalen Atomuhr (Caesium-Uhr, Rubidium-Oszillator und weitere) oder einem lokalen Funkempfänger (zum Beispiel DCF77, GPS, LORAN), 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 mithilfe einer Software-PLL sowie einer Software-FLL
- Um den internen Zeitgeber mithilfe 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
- Zeitstempel
Die Zeitstempel im NTP (bis v3) sind 64 Bit lang. 32 Bit kodieren die Sekunden seit dem Beginn einer Ära, wobei Ära 0 am 1. Januar 1900, 00:00:00 Uhr begann, weitere 32 Bit 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,23 Nanosekunden) darstellen
- Soweit das Betriebssystem mit einer Genauigkeit von etwa 68 Jahren die grobe Zeit vorgeben kann, genügt theoretisch ein NTP-Zeitstempel, um die exakte Zeit in der richtigen Ära zu erhalten, allerdings wird dies nicht von allen Betriebssystemen korrekt beachtet
- Ab NTP v4 kann mit einem 128 Bit umfassenden Zeitstempel auch die Ära übermittelt werden
- Stratum
NTP nutzt ein hierarchisches System verschiedener Strata (Plural von Stratum)
- Als Stratum 0 bezeichnet man das Zeitnormal, beispielsweise eine Atomuhr oder eine Funkuhr (Zeitzeichenempfänger via GNSS oder DCF77)
- Die unmittelbar mit ihm gekoppelten NTP-Server heißen Stratum 1
- Jede weitere abhängige Einheit erhält bei der Bezeichnung eine höhere Nummer (Stratum 2, Stratum 3 …)
- Die NTP-Software auf Stratum 1, Stratum 2, Stratum 3 und weitere ist zugleich Client des darüber liegenden Stratums als auch Server des darunter liegenden Stratums, sofern eines existiert
Fehler, Algorithmus und Genauigkeit
Die lokale Systemzeit einer Prozessorumgebung variiert mit verschiedenen typischen Fehlerquellen
- Dadurch treten mindestens zwei typische Fehler auf:
- kurzzeitige Schwankungen des Zeitinkrements entlang der laufenden Uhrzeit
- stabile lokale Abweichungen von einer gemeinsamen Systemzeit
Beide Zeitfehler werden mit verschiedenen Methoden kompensiert
Die lokalen Abweichungen infolge der Latenzzeit der stochastisch bestimmten Übertragungswege werden durch Messverfahren der Paketumlaufzeit vom Server (Berkeley-Algorithmus) oder vom Client (Algorithmus von Cristian) kompensiert
Die kurzzeitigen pseudo-stochastischen Abweichungen der lokalen Systemuhr können nur durch eine bessere weitere Systemuhr (Frequenznormal) und direkten Empfang von Satellitensignalen (GPS) oder von anderen Zeitnormalen (DCF77) kompensiert werden
NTP benutzt für die interne Fehlerkompensation der Prozessorumgebung den Marzullo-Algorithmus (entwickelt von Keith Marzullo von der Universität San Diego in seiner Dissertation) und auch einen Algorithmus, um Byzantinische Fehler zu behandeln
NTP 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 Frequenznormal als Taktgeber (thermostatgesteuerter Quarzoszillator, Rubidium-Oszillator und weitere) lässt sich unter Verwendung der Kernel-PLL (siehe oben) der Fehler zwischen Referenzzeitgeber und lokaler Uhr bis in die Größenordnung weniger Mikrosekunden reduzieren
SNTP
Implementierung
Neben der Referenz-NTP-Software (ntpd), die auf der NTP-Website 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
Einige tausend NTP-Server haben einen NTP-Pool gebildet
In den deutschsprachigen Ländern gibt es folgende hauptsächlich verwendete öffentliche NTP-Server:
Land | Pool-Server | amtliche Metrologie |
---|---|---|
Deutschland | de.pool.ntp.org | ptbtime1.ptb.de |
Österreich | at.pool.ntp.org | time.metrologie.at |
Schweiz | ch.pool.ntp.org | ntp.metas.ch |
Liechtenstein | li.pool.ntp.org | ntp.metas.ch |
Alternativen
- Protokollalternativen
Protokoll | Beschreibung |
---|---|
PTP | Das Precision Time Protocol (PTP) ist ein Netzwerkprotokoll, das die Synchronität der Uhrzeiteinstellungen mehrerer Geräte in einem Rechnernetzwerk bewirkt
Anders als beim Network Time Protocol (NTP) strebt PTP höchste Genauigkeit (Nano- bzw. Pikosekunden) in lokal begrenzten Netzen an
|
NTS | Network Time Security (NTS) ist ein Netzwerkprotokoll zur kryptographischen Absicherung von NTP
|
Beispiele für öffentlich erreichbare NTP-Server, die NTS unterstützen, sind:
- ptbtime1.ptb.de (Deutschland)
- ptbtime2.ptb.de (Deutschland)
- ptbtime3.ptb.de (Deutschland)
- ptbtime4.ptb.de (Deutschland)
- europe.pool.ntp.org (Europa)
- time.cloudflare.com (global)
- nts.netnod.se (Schweden)
- ntp.3eck.net (Schweiz)
- ntp.trifence.ch (Schweiz)
- ntp.zeitgitter.net (Schweiz)
Software
Software | Beschreibung |
---|---|
OpenNTPD | Im Jahre 2004 präsentierte Henning Brauer die NTP Implementierung OpenNTPD, welche einen Fokus auf Sicherheit legt
|
Ntimed | Das NTPD-Programm dient als Zeitserver, Zeitclient und deckt viele weitere Funktionen ab
|
NTPsec | NTPsec ist ein Fork des originalen NTPD-Projekts mit dem Ziel, das Programm durch verschiedene Maßnahmen sicherer zu machen
|
tlsdate | Mit gefälschten NTP-Antworten kann der Schutz des HTTP-Strict-Transport-Security-Protokolls (HSTS) von HTTPS umgangen werden
Ein Nachteil von tlsdate ist seine recht große Ungenauigkeit von maximal ±1 Sekunde, zuzüglich der Netzwerklatenz
|
chrony | Chrony ist eine eigenständige Implementierung von NTP und NTS und wird unter GPLv2 veröffentlicht |
Anhang
Siehe auch
- Daytime - Zeitübertragung im ASCII-Format
- Allan-Varianz
- Y2K36
Normen und Standards
NTP ist als Request for Comments (RFC) standardisiert
RFC | Titel |
---|---|
958 | Network Time Protocol (NTP) |
1059 | Network Time Protocol (Version 1) |
1119 | Network Time Protocol (Version 2) |
1305 | Network Time Protocol (Version 3) |
5905 | Network Time Protocol (Version 4) |
7822 | Network Time Protocol Version 4 (NTPv4) Extension Fields |
8573 | Message Authentication Code for the Network Time Protocol |
5906 | Network Time Protocol Version 4: Autokey Specification |
5907 | Definitions of Managed Objects for Network Time Protocol Version 4 (NTPv4) |
5908 | Network Time Protocol (NTP) Server Option for DHCPv6 |
8915 | Network Time Security for the Network Time Protocol |
2783 | PPS API (Hochpräzise Zeitsynchronisation bei Unix-Kerneln) |
- NTP ist als Request for Comments (RFC) standardisiert
- RFC 958 - Network Time Protocol (NTP) (1985, veraltet)
- RFC 1059 - Network Time Protocol (Version 1) (1988, veraltet)
- RFC 1119 - Network Time Protocol (Version 2) (1989, veraltet)
- RFC 1305 - Network Time Protocol (Version 3) (1992, veraltet)
- RFC 5905 - Network Time Protocol (Version 4) (2010) - abwärtskompatibel mit RFC 1305 für Version 3
- Ergänzung RFC 7822 - Network Time Protocol Version 4 (NTPv4) Extension Fields (2016)
- Ergänzung RFC 8573 - Message Authentication Code for the Network Time Protocol (2019)
- Ergänzungen
- RFC 5906 - Network Time Protocol Version 4: Autokey Specification (2010)
- RFC 5907 - Definitions of Managed Objects for Network Time Protocol Version 4 (NTPv4) (2010)
- RFC 5908 - Network Time Protocol (NTP) Server Option for DHCPv6 (2010)
- RFC 8915 - Network Time Security for the Network Time Protocol (2020)
- Spezifische Anwendung-RFC
- RFC 2783 - PPS API (Hochpräzise Zeitsynchronisation bei Unix-Kerneln) (2000)
Links
Weblinks
- https://de.wikipedia.org/wiki/Network_Time_Protocol
- ntp.org - NTP-Homepage
- Dave Mills’ NTP-Homepage. eecis.udel.edu
- NTP Configuration Short Reference. (PDF; 315 kB) meinbergglobal.com
- Liste mit öffentlichen Stratum-1 Zeitservern weltweit. support.ntp.org
- NTP Server Test Online Tool. ncomputers.org
- NTP-Pool Germany - de.pool.ntp.org
- Liste von in Deutschland betriebenen NTP-Server