Network Time Protocol: Unterschied zwischen den Versionen

Aus Foxwiki
 
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' - Kurzbeschreibung
'''Network Time Protocol''' ('''NTP''') - ist ein Standard, um Endgeräte über das Internet mit einer Uhrzeit zu versorgen
 
== Beschreibung ==
== Beschreibung ==
  Familie= [[Internetprotokollfamilie]]
  Familie= [[Internetprotokollfamilie]]
  Einsatzfeld= Synchronisierung von Uhren in Computersystemen
  Einsatzfeld= Synchronisierung von Uhren in Computersystemen
  aufbauend auf= [[User Datagram Protocol|UDP]]/[[Transmission Control Protocol|TCP]] (jeweils [[Port (Netzwerkadresse)|Port]] 123)
  aufbauend auf= [[User Datagram Protocol|UDP]]/[[Transmission Control Protocol|TCP]] ([[Port (Netzwerkadresse)|Port]] 123)
  Version= 4<ref name="RFC5905" />
  Version= 4
  Standard= <nowiki>RFC&nbsp;5905</nowiki><ref name="RFC5905" />
  Standard= <nowiki>RFC&nbsp;5905</nowiki>


Das '''Network Time Protocol''' ('''NTP''') ist ein Standard, um intelligente Endgeräte über das Internet mit einer Uhrzeit zu versorgen. Die [[Synchronisation|Synchronisierung]] von [[Echtzeituhr]]en in [[Computer]]systemen wird mit paketbasierten [[Rechnernetz|Kommunikationsnetzen]] umgesetzt. NTP kann mit beiden Verbindungsprotokollen der vierten Schicht des [[OSI-Modell]]s arbeiten. Es ist nötig, damit eine zuverlässige [[Uhrzeit|Zeitangabe]] über Netzwerke mit variabler [[Paketumlaufzeit|Paketlaufzeit]] gesendet werden kann.
Das '''Network Time Protocol''' ('''NTP''') ist ein Standard, um intelligente Endgeräte über das Internet mit einer Uhrzeit zu versorgen
* Die [[Synchronisation|Synchronisierung]] von [[Echtzeituhr]]en in [[Computer]]systemen wird mit paketbasierten [[Rechnernetz|Kommunikationsnetzen]] umgesetzt
* NTP kann mit beiden Verbindungsprotokollen der vierten Schicht des [[OSI-Modell]]s arbeiten
* Es ist nötig, damit eine zuverlässige [[Uhrzeit|Zeitangabe]] über Netzwerke mit variabler [[Paketumlaufzeit|Paketlaufzeit]] gesendet werden kann


Im allgemeinen Sprachgebrauch bezeichnet ''NTP'' sowohl das Protokoll als auch die Software-Referenzimplementierung desselben. Das Simple Network Time Protocol ([[#SNTP|SNTP]]) ist eine vereinfachte Version des NTP.
Im allgemeinen Sprachgebrauch bezeichnet ''NTP'' sowohl das Protokoll als auch die Software-Referenzimplementierung desselben
* Das Simple Network Time Protocol ([[#SNTP|SNTP]]) ist eine vereinfachte Version des NTP


== Grundlagen ==
== Grundlagen ==
[[Datei:Architecture NTP labels de.svg|mini|400px]]
===Statusmeldung des NTP-Daemons ===
[[Datei:Ntp statusmessage.png|mini|400px|Statusmeldung des NTP-Daemons. Spalten v.&nbsp;l.&nbsp;n.&nbsp;r.: Status des ''Peers'' (+: Wird miteinbezogen; *: 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) und wie stark die abgefragte Zeit schwankt ([[jitter]], Millisekunden)<ref>{{Internetquelle |url=https://www.eecis.udel.edu/~mills/ntp/html/ntpq.html |titel=ntpq – standard NTP query program |abruf=2019-12-01}}</ref>]]
[[Datei:Ntp statusmessage.png|mini|400px|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.&nbsp;Mills]] an der [[University of Delaware|Universität von Delaware]] entwickelt und 1985 als <nowiki>RFC&nbsp;958</nowiki> veröffentlicht
* Seit der Pensionierung von Mills wird die Referenzimplementierung derzeit als [[Open Source|Open-Source]]-Projekt durch die im Jahr 2011 gegründete ''Network Time Foundation'' unter der Leitung von Harlan Stenn gepflegt


NTP wurde von [[David L. Mills]] an der [[University of Delaware|Universität von Delaware]] entwickelt und 1985 als <nowiki>RFC&nbsp;958</nowiki><ref>{{RFC-Internet |RFC=958 |Titel=Network Time Protocol (NTP) |Datum=1985 |Kommentar=veraltet}}</ref> veröffentlicht. Seit der Pensionierung von Mills wird die Referenzimplementierung derzeit als [[Open Source|Open-Source]]-Projekt durch die im Jahr 2011 gegründete ''Network Time Foundation'' unter der Leitung von Harlan Stenn gepflegt.<ref name="jZjhj">{{cite web| url=http://www.informationweek.com/cloud/infrastructure-as-a-service/ntp-needs-money-is-a-foundation-the-answer/d/d-id/1319557| title=NTP Needs Money: Is A Foundation The Answer?| work=[[InformationWeek]]| date=2015-03-23| access-date=2015-04-04| archive-url=https://web.archive.org/web/20150410033108/http://www.informationweek.com/cloud/infrastructure-as-a-service/ntp-needs-money-is-a-foundation-the-answer/d/d-id/1319557| archive-date=2015-04-10| url-status=live|language=en}}</ref><ref name="MShrI">{{cite web| url=http://www.informationweek.com/it-life/ntps-fate-hinges-on-father-time/d/d-id/1319432?cmp=em-prog-na-na-newsltr_20150313_control&imm_mid=0ce65e&page_number=2| title=NTP's Fate Hinges On 'Father Time'| work=[[InformationWeek]]| date=2015-03-11| access-date=2015-04-04| archive-url=https://web.archive.org/web/20150410021745/http://www.informationweek.com/it-life/ntps-fate-hinges-on-father-time/d/d-id/1319432?cmp=em-prog-na-na-newsltr_20150313_control&imm_mid=0ce65e&page_number=2| archive-date=2015-04-10| url-status=live|language=en}}</ref>
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 (Netzwerkadresse)|Port]] 123 ist für NTP reserviert


Bis zum Tod von Mills wurde das Protokoll und die UNIX-Implementierung unter seiner Leitung ständig weiterentwickelt. Gegenwärtig ist die Protokollversion 4<ref>{{Internetquelle |url=https://www.eecis.udel.edu/~mills/ntp/html/release.html |titel=NTP Version 4 Release Notes |abruf=2019-12-01}}</ref> aktuell. Der UDP-[[Port (Netzwerkadresse)|Port]] 123 ist für NTP reserviert.
NTP ist in [[Unixoides System|UNIX-artigen]] Betriebssystemen in Form des [[Hintergrundprozess]]es ([[daemon]]) ntpd implementiert, der sowohl das lokale System justieren als auch als Server die Zeit für andere Systeme bereitstellen kann.  


NTP ist in [[Unixoides System|UNIX-artigen]] Betriebssystemen in Form des [[Hintergrundprozess]]es ([[daemon]]) ntpd implementiert, der sowohl das lokale System justieren als auch als Server die Zeit für andere Systeme bereitstellen kann. [[Microsoft Windows|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.<ref>{{Internetquelle |url=https://support.industry.siemens.com/cs/document/22144502/wie-konfigurieren-sie-ihren-pc-als-ntp-server-?lc=de-WW |titel=SIOS |abruf=2019-12-01}}</ref>
[[Microsoft Windows|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


{{Anker|PLL}} Der UNIX-ntpd synchronisiert die lokale Uhr mit Hilfe von externen Zeitsignalen, die er entweder direkt von einer lokalen [[Atomuhr]] ([[Caesium]]-Uhr, [[Rubidium-Oszillator]] usw.) oder einem lokalen Funkempfänger (zum Beispiel [[DCF77]], [[Global Positioning System|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 mit Hilfe einer Software-[[Phasenregelschleife|PLL]] sowie einer Software-[[Frequency Locked Loop|FLL]]. 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.
Der UNIX-ntpd synchronisiert die lokale Uhr mithilfe von externen Zeitsignalen, die er entweder direkt von einer lokalen [[Atomuhr]] ([[Caesium]]-Uhr, [[Rubidium-Oszillator]] usw.) oder einem lokalen Funkempfänger (zum Beispiel [[DCF77]], [[Global Positioning System|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-[[Phasenregelschleife|PLL]] sowie einer Software-[[Frequency Locked Loop|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


Die Zeitstempel im NTP (bis v3) sind 64 Bits lang. 32 Bits kodieren die Sekunden seit dem Beginn einer Ära, wobei Ära&nbsp;0 am 1.&nbsp;Januar 1900, 00:00:00 Uhr begann, weitere 32 Bits den Sekundenbruchteil. Auf diese Weise lässt sich ein Zeitraum von [[Liste von Größenordnungen der Zeit#109 s bis 1010 s (31,7 a bis 317 a)|2<sup>32</sup> Sekunden]] (etwa 136 Jahre) mit einer Auflösung von 2<sup>−32</sup> 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 Bits umfassenden Zeitstempel auch die Ära übermittelt werden.<ref name="RFC5905" />
; Zeitstempel
Die Zeitstempel im NTP (bis v3) sind 64 Bit lang. 32 Bit kodieren die Sekunden seit dem Beginn einer Ära, wobei Ära&nbsp;0 am 1.&nbsp;Januar 1900, 00:00:00 Uhr begann, weitere 32 Bit den Sekundenbruchteil
* Auf diese Weise lässt sich ein Zeitraum von [[Liste von Größenordnungen der Zeit#109 s bis 1010 s (31,7 a bis 317 a)|2<sup>32</sup> Sekunden]] (etwa 136 Jahre) mit einer Auflösung von 2<sup>−32</sup> 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


NTP nutzt ein hierarchisches System verschiedener ''Strata'' (Plural von ''Stratum''). Als Stratum&nbsp;0 bezeichnet man das Zeitnormal, beispielsweise eine [[Atomuhr]] oder eine [[Funkuhr]] (Zeitzeichenempfänger via [[Globales Navigationssatellitensystem|GNSS]] oder [[DCF77]]). Die unmittelbar mit ihm gekoppelten NTP-Server heißen Stratum&nbsp;1. Jede weitere abhängige Einheit erhält bei der Bezeichnung eine höhere Nummer (Stratum&nbsp;2, Stratum&nbsp;3&nbsp;…).<ref>{{Internetquelle |url=https://endruntechnologies.com/products/ntp-time-servers/stratum1 |titel=What is Stratum 1? |hrsg=EndRun Technologies |abruf=2019-12-01}}</ref> Die NTP-Software auf Stratum&nbsp;1, Stratum&nbsp;2, Stratum&nbsp;3 usw. ist zugleich Client des darüber liegenden Stratums als auch Server des darunter liegenden Stratums, sofern eines existiert.
; Stratum
NTP nutzt ein hierarchisches System verschiedener ''Strata'' (Plural von ''Stratum'')
[[Datei:Architecture NTP labels de.svg|600px]]
* Als Stratum&nbsp;0 bezeichnet man das Zeitnormal, beispielsweise eine [[Atomuhr]] oder eine [[Funkuhr]] (Zeitzeichenempfänger via [[Globales Navigationssatellitensystem|GNSS]] oder [[DCF77]])
* Die unmittelbar mit ihm gekoppelten NTP-Server heißen Stratum&nbsp;1
* Jede weitere abhängige Einheit erhält bei der Bezeichnung eine höhere Nummer (Stratum&nbsp;2, Stratum&nbsp;3&nbsp;…)
* Die NTP-Software auf Stratum&nbsp;1, Stratum&nbsp;2, Stratum&nbsp;3 usw.&nbsp;ist zugleich Client des darüber liegenden Stratums als auch Server des darunter liegenden Stratums, sofern eines existiert


== Fehler, Algorithmus und Genauigkeit ==
== Fehler, Algorithmus und Genauigkeit ==


Die lokale Systemzeit einer Prozessorumgebung variiert mit verschiedenen typischen Fehlerquellen. Dadurch treten mindestens zwei typische Fehler auf:
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
* kurzzeitige Schwankungen des Zeitinkrements entlang der laufenden Uhrzeit
* stabile lokale Abweichungen von einer gemeinsamen Systemzeit
* stabile lokale Abweichungen von einer gemeinsamen Systemzeit
Beide Zeitfehler werden mit verschiedenen Methoden kompensiert.
Beide Zeitfehler werden mit verschiedenen Methoden kompensiert


Die lokalen Abweichungen infolge der [[Verzögerung (Telekommunikation)|Latenzzeit]] der stochastisch bestimmten Übertragungswege werden durch Messverfahren der [[Paketumlaufzeit]] vom Server ([[Berkeley-Algorithmus]]) oder vom Client ([[Algorithmus von Cristian]]) kompensiert.
Die lokalen Abweichungen infolge der [[Verzögerung (Telekommunikation)|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 ([[Global Positioning System|GPS]]) oder von anderen Zeitnormalen ([[DCF77]]) kompensiert werden.
Die kurzzeitigen pseudo-stochastischen Abweichungen der lokalen Systemuhr können nur durch eine bessere weitere Systemuhr (Frequenznormal) und direkten Empfang von Satellitensignalen ([[Global Positioning System|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 [[University of California, San Diego|Universität San Diego]] in seiner [[Dissertation]]) und auch einen Algorithmus, um [[Byzantinischer Fehler|Byzantinische Fehler]] zu behandeln. NTP wird meist mit einer [[Koordinierte Weltzeit|UTC]]-[[Zeitskala]] eingesetzt.
NTP benutzt für die interne Fehlerkompensation der Prozessorumgebung den Marzullo-Algorithmus (entwickelt von Keith Marzullo von der [[University of California, San Diego|Universität San Diego]] in seiner [[Dissertation]]) und auch einen Algorithmus, um [[Byzantinischer Fehler|Byzantinische Fehler]] zu behandeln
* NTP wird meist mit einer [[Koordinierte Weltzeit|UTC]]-[[Zeitskala]] eingesetzt


NTP unterstützt [[Schaltsekunde]]n. 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.
NTP unterstützt [[Schaltsekunde]]n
* 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]] etc.) lässt sich unter Verwendung der Kernel-PLL ''([[#PLL|siehe oben]])'' der Fehler zwischen Referenzzeitgeber und lokaler Uhr bis in die Größenordnung weniger Mikrosekunden reduzieren.
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]] etc.) lässt sich unter Verwendung der Kernel-PLL ''([[#PLL|siehe oben]])'' der Fehler zwischen Referenzzeitgeber und lokaler Uhr bis in die Größenordnung weniger Mikrosekunden reduzieren


== SNTP ==
== SNTP ==
Das ''Simple Network Time Protocol (SNTP)'' ist eine vereinfachte Version des NTP. Ursprünglich als eigenständiger Standard beginnend mit <nowiki>RFC&nbsp;1361</nowiki><ref>{{RFC-Internet |RFC=1361 |Titel=Simple Network Time Protocol (SNTP) |Datum=1992-08}}</ref> bis <nowiki>RFC&nbsp;4330</nowiki>,<ref>{{RFC-Internet |RFC=4330 |Titel=Simple Network Time Protocol (SNTP) Version 4 for IPv4, IPv6 and OSI |Datum=2006-01}}</ref> ist es seit Juni 2010 in der NTP Version&nbsp;4 integriert als kleines Unterkapitel im <nowiki>RFC&nbsp;5905</nowiki>.<ref name="RFC5905" />
Das ''Simple Network Time Protocol (SNTP)'' ist eine vereinfachte Version des NTP
* Ursprünglich als eigenständiger Standard beginnend mit <nowiki>RFC&nbsp;1361</nowiki> ist es seit Juni 2010 in der NTP Version&nbsp;4 integriert als kleines Unterkapitel im <nowiki>RFC&nbsp;5905</nowiki>


Der Aufbau des Protokolls ist mit dem von NTP identisch. SNTP-Clients können damit die Zeit auch von NTP-Servern beziehen. Der wesentliche Unterschied liegt in den verwendeten Algorithmen zur Zeitsynchronisation. Während bei NTP die Zeitsynchronisation in der Regel mit mehreren [[Zeitserver]]n erfolgt, wird bei SNTP nur ein Zeitserver verwendet. SNTP verzichtet auch auf die Beeinflussung von Phase und Frequenz des lokalen Zeitgebers.<ref>[https://www.eecis.udel.edu/~mills/database/papers/history.ps eecis.udel.edu] ([[PostScript]])</ref> SNTP kann daher nicht dieselbe Genauigkeit wie NTP liefern. Aufgrund der einfacheren Algorithmen benötigt SNTP weniger Rechenressourcen.<ref>{{Literatur |Hrsg=Spectracom |Titel=What is the difference between NTP and SNTP? |Ort=New York |Datum=2004-07-21 |Sprache=en-US |Online=[https://www.orolia.com/sites/default/files/document-files/Differences_Between_NTP_and_SNTP_v1-02-13-19.pdf spectracomcorp.com] |Format=PDF |KBytes=32 |Abruf=2009-05-29}}</ref>
Der Aufbau des Protokolls ist mit dem von NTP identisch
* SNTP-Clients können damit die Zeit auch von NTP-Servern beziehen
* Der wesentliche Unterschied liegt in den verwendeten Algorithmen zur Zeitsynchronisation
* Während bei NTP die Zeitsynchronisation in der Regel mit mehreren [[Zeitserver]]n erfolgt, wird bei SNTP nur ein Zeitserver verwendet
* SNTP verzichtet auch auf die Beeinflussung von Phase und Frequenz des lokalen Zeitgebers
SNTP kann daher nicht dieselbe Genauigkeit wie NTP liefern
* Aufgrund der einfacheren Algorithmen benötigt SNTP weniger Rechenressourcen


Ältere Windows-Versionen wie [[Microsoft Windows 2000|Windows 2000]] verwenden SNTP, um die Uhrzeit auf dem lokalen Computer aktuell zu halten. Dies wird durch den Windows-Service W32Time übernommen. In [[Microsoft Windows XP|Windows&nbsp;XP]] und [[Microsoft Windows Server 2003|Windows Server 2003]] wurde die Dynamic-Link-Library W32Time.dll überarbeitet, so dass nun NTP zur Zeitsynchronisation verwendet wird.
Ältere Windows-Versionen wie [[Microsoft Windows 2000|Windows 2000]] verwenden SNTP, um die Uhrzeit auf dem lokalen Computer aktuell zu halten
* Dies wird durch den Windows-Service W32Time übernommen
* In [[Microsoft Windows XP|Windows&nbsp;XP]] und [[Microsoft Windows Server 2003|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 [[Microsoft Windows 2000|Windows 2000]] einführte, haben einige Softwarehersteller eigenständige Programme zur Zeitsynchronisation unter Windows entwickelt. Moderne Authentifizierungssysteme (wie [[Kerberos (Protokoll)|Kerberos]]), die in Windows 2000 und neueren Versionen verwendet werden, benötigen zur Erhöhung der Sicherheit Zeitstempel, daher ergibt sich auch hier ein Anwendungsfall für NTP.
Da Microsoft das Verfahren zur Zeitsynchronisation erst mit [[Microsoft Windows 2000|Windows 2000]] einführte, haben einige Softwarehersteller eigenständige Programme zur Zeitsynchronisation unter Windows entwickelt
* Moderne Authentifizierungssysteme (wie [[Kerberos (Protokoll)|Kerberos]]), die in Windows 2000 und neueren Versionen verwendet werden, benötigen zur Erhöhung der Sicherheit Zeitstempel, daher ergibt sich auch hier ein Anwendungsfall für NTP


== Implementierung ==
== Implementierung ==
Neben der Referenz-NTP-Software (ntpd), die auf der NTP-Website für diverse [[Betriebssystem]]e erhältlich ist, bieten eine Reihe von Herstellern fertige Standalone-Lösungen an, die als NTP-Zeitquelle in [[Rechnernetz|Computernetzwerken]] jeder Größe Verwendung finden können.
Neben der Referenz-NTP-Software (ntpd), die auf der NTP-Website für diverse [[Betriebssystem]]e erhältlich ist, bieten eine Reihe von Herstellern fertige Standalone-Lösungen an, die als NTP-Zeitquelle in [[Rechnernetz|Computernetzwerken]] jeder Größe Verwendung finden können


Einige tausend NTP-Server haben einen [[NTP-Pool]] gebildet.
Einige tausend NTP-Server haben einen [[NTP-Pool]] gebildet


In den deutschsprachigen Ländern gibt es folgende hauptsächlich verwendete öffentliche NTP-Server:
In den deutschsprachigen Ländern gibt es folgende hauptsächlich verwendete öffentliche NTP-Server:


{| class="wikitable sortable"
{| class="wikitable big"
|-
|-
! Land !! Pool-Server !! amtliche Metrologie
! Land !! Pool-Server !! amtliche Metrologie
Zeile 76: Zeile 126:


=== PTP ===
=== PTP ===
Das ''[[Precision Time Protocol]]'' (PTP) ist ein [[Netzwerkprotokoll]], das die [[Synchronität]] der Uhrzeiteinstellungen mehrerer Geräte in einem [[Rechnernetz]]werk bewirkt.
Das ''[[Precision Time Protocol]]'' (PTP) ist ein [[Netzwerkprotokoll]], das die [[Synchronität]] der Uhrzeiteinstellungen mehrerer Geräte in einem [[Rechnernetz]]werk bewirkt
Anders als beim Network Time Protocol (NTP) strebt PTP höchste Genauigkeit ([[Nanosekunde|Nano]]- bzw. [[Pikosekunde]]n)<ref>{{Internetquelle |url=https://www.masterclock.com/network-timing-technology-ntp-vs-ptp.html |titel=Network Timing Technology: NTP vs. PTP {{!}} Masterclock Industry Knowledge |abruf=2024-01-18}}</ref> in lokal begrenzten Netzen an. Damit ist in Hardware-Ausführung eine [[Genauigkeit]] von Nanosekunden und als Software unter einer [[Mikrosekunde]] möglich. PTP ist definiert in der [[Institute of Electrical and Electronics Engineers|IEEE]] 1588 und in [[International Electrotechnical Commission|IEC]] 61588 übernommen worden.
Anders als beim Network Time Protocol (NTP) strebt PTP höchste Genauigkeit ([[Nanosekunde|Nano]]- bzw. [[Pikosekunde]]n) in lokal begrenzten Netzen an
* Damit ist in Hardware-Ausführung eine [[Genauigkeit]] von Nanosekunden und als Software unter einer [[Mikrosekunde]] möglich
* PTP ist definiert in der [[Institute of Electrical and Electronics Engineers|IEEE]] 1588 und in [[International Electrotechnical Commission|IEC]] 61588 übernommen worden


=== NTS ===
=== NTS ===
[[Network Time Security]] (NTS) ist ein Netzwerkprotokoll zur [[Kryptographie|kryptographischen]] Absicherung von NTP. NTS wurde von der [[Internet Engineering Task Force]] (IETF) unter Mitarbeit von [[Akamai]], Netnod und der [[Physikalisch-Technische Bundesanstalt|Physikalisch-Technischen Bundesanstalt]] (PTB) entwickelt und am 1.&nbsp;Oktober 2020 im <nowiki>RFC&nbsp;8915</nowiki><ref>{{RFC-Internet |RFC=8915 |Titel=Network Time Security for the Network Time Protocol |Datum=2020}}</ref> veröffentlicht. Es orientiert sich an den im <nowiki>RFC&nbsp;7384</nowiki><ref>{{RFC-Internet |RFC=7384 |Titel=Security Requirements of Time Protocols in Packet Switched Networks |Datum=2014-10}}</ref> genannten Sicherheitsanforderungen. Insbesondere gewährleistet NTS [[Authentifizierung|Authentifizierbarkeit]] der Zeitserver, [[Integrität (Informationssicherheit)|Integrität]] und [[Authentizität]] von NTP-Paketen sowie [[Skalierbarkeit]]. Die Genauigkeit der Uhrensynchronisation soll trotz des zusätzlichen [[Overhead (EDV)|Overheads]] von NTS nicht nachteilig beeinflusst werden. Der [[Schlüssel (Kryptologie)|Schlüssel]]<nowiki />austausch basiert auf [[Transport Layer Security|TLS]] 1.3 (<nowiki>RFC&nbsp;8446</nowiki><ref>{{RFC-Internet |RFC=8446 |Titel=The Transport Layer Security (TLS) Protocol Version 1.3 |Datum=2018-08}}</ref>) und erfolgt [[Liste der standardisierten Ports|standardmäßig]] über den TCP-Port 4460.<ref>{{Internetquelle |url=https://www.internetsociety.org/blog/2020/10/nts-rfc-published-new-standard-to-ensure-secure-time-on-the-internet/ |titel=NTS RFC Published: New Standard to Ensure Secure Time on the Internet |hrsg=[[Internet Society]] |datum=2020-10-01 |sprache=en |abruf=2022-01-02}}</ref><ref name="PTB">{{Internetquelle |url=https://www.ptb.de/cms/ptb/fachabteilungen/abtq/gruppe-q4/ref-q42/zeitsynchronisation-von-rechnern-mit-hilfe-des-network-time-protocol-ntp.html |titel=Zeitsynchronisation von Rechnern mit Hilfe des „Network Time Protocol“ (NTP) |hrsg=[[Physikalisch-Technische Bundesanstalt]] |datum=2021-07-28 |abruf=2023-11-14}}</ref><ref name="Netnod">{{Internetquelle |url=https://www.netnod.se/nts/network-time-security |titel=Network Time Security |hrsg=Netnod |datum=2021 |sprache=en |abruf=2022-01-02}}</ref>
[[Network Time Security]] (NTS) ist ein Netzwerkprotokoll zur [[Kryptographie|kryptographischen]] Absicherung von NTP
* NTS wurde von der [[Internet Engineering Task Force]] (IETF) unter Mitarbeit von [[Akamai]], Netnod und der [[Physikalisch-Technische Bundesanstalt|Physikalisch-Technischen Bundesanstalt]] (PTB) entwickelt und am 1.&nbsp;Oktober 2020 im <nowiki>RFC&nbsp;8915</nowiki> veröffentlicht
* Es orientiert sich an den im <nowiki>RFC&nbsp;7384</nowiki> genannten Sicherheitsanforderungen
* Insbesondere gewährleistet NTS [[Authentifizierung|Authentifizierbarkeit]] der Zeitserver, [[Integrität (Informationssicherheit)|Integrität]] und [[Authentizität]] von NTP-Paketen sowie [[Skalierbarkeit]]
* Die Genauigkeit der Uhrensynchronisation soll trotz des zusätzlichen [[Overhead (EDV)|Overheads]] von NTS nicht nachteilig beeinflusst werden
* Der [[Schlüssel (Kryptologie)|Schlüssel]]<nowiki />austausch basiert auf [[Transport Layer Security|TLS]] 1.3 (<nowiki>RFC&nbsp;8446</nowiki>) und erfolgt [[Liste der standardisierten Ports|standardmäßig]] über den TCP-Port 4460


Beispiele für öffentlich erreichbare NTP-Server, die NTS unterstützen, sind:<ref>{{Internetquelle |autor=Marcel Waldvogel |url=https://netfuture.ch/2021/12/transparent-trustworthy-time-with-ntp-and-nts/#server-list |titel=Transparent, Trustworthy Time with NTP and NTS |werk=Netfuture |datum=2021-12-26 |abruf=2022-01-18}}</ref>
Beispiele für öffentlich erreichbare NTP-Server, die NTS unterstützen, sind:
{{Mehrspaltige Liste |liste=
{{Mehrspaltige Liste |liste=
* ptbtime1.ptb.de (Deutschland)<ref name="PTB" />
* ptbtime1.ptb.de (Deutschland)
* ptbtime2.ptb.de (Deutschland)<ref name="PTB" />
* ptbtime2.ptb.de (Deutschland)
* ptbtime3.ptb.de (Deutschland)<ref name="PTB" />
* ptbtime3.ptb.de (Deutschland)
* ptbtime4.ptb.de (Deutschland)<ref name="PTB" />
* ptbtime4.ptb.de (Deutschland)
* europe.pool.ntp.org (Europa)<ref name="PTB" />
* europe.pool.ntp.org (Europa)
* time.cloudflare.com (global)<ref>{{Internetquelle |url=https://www.cloudflare.com/time/ |titel=Cloudflare Time Services |hrsg=[[Cloudflare]] |sprache=en |abruf=2022-01-02}}</ref>
* time.cloudflare.com (global)
* nts.netnod.se (Schweden)<ref name="Netnod" />
* nts.netnod.se (Schweden)
* ntp.3eck.net (Schweiz)<ref>{{Internetquelle |url=https://3eck.net/ |titel=3eck.net public services |hrsg=Genossenschaft Dreieck |sprache=en |abruf=2022-01-18}}</ref>
* ntp.3eck.net (Schweiz)
* ntp.trifence.ch (Schweiz)<ref>{{Internetquelle |url=https://ntp.trifence.ch/ |titel=NTP/NTS Server at ntp.trifence.ch |hrsg=Zeitgitter |sprache=en |abruf=2022-01-18}}</ref>
* ntp.trifence.ch (Schweiz)
* ntp.zeitgitter.net (Schweiz)<ref>{{Internetquelle |url=https://ntp.zeitgitter.net/ |titel=NTP/NTS Server at ntp.zeitgitter.net |hrsg=Zeitgitter |sprache=en |abruf=2022-01-18}}</ref>
* ntp.zeitgitter.net (Schweiz)
}}
}}


== Softwarealternativen ==
== Software ==
 
=== OpenNTPD ===
=== OpenNTPD ===
Im Jahre 2004 präsentierte Henning Brauer die NTP Implementierung OpenNTPD, welche einen Fokus auf Sicherheit legt. Das Protokoll ist kompatibel zu bestehenden NTP-Servern. Ursprünglich ist es für [[OpenBSD]] geschrieben worden, ist jedoch mittlerweile auch als portable Version und als Paket in der Linux-Paketverwaltung verfügbar. OpenNTPD steht in der Kritik, nicht dieselbe Genauigkeit zu bieten wie NTP. Die Abweichungen können hierbei 50–200&nbsp;ms betragen, OpenBSD bestätigt dies, da es nicht zu den Designzielen gehörte hoch präzise zu sein.<ref>{{Internetquelle |url=https://www.openbsd.org/faq/faq6.html#OpenNTPDaccurate |titel=OpenBSD FAQ: Networking |titelerg=6.12.1 – „But OpenNTPD isn’t as accurate as the ntp.org daemon!“ |werk=The OpenBSD Project |sprache=en |offline=1 |archiv-url=https://web.archive.org/web/20060924134221/https://www.openbsd.org/faq/faq6.html#OpenNTPD |archiv-datum=2006-09-24 |abruf=2018-09-01}}</ref>
Im Jahre 2004 präsentierte Henning Brauer die NTP Implementierung OpenNTPD, welche einen Fokus auf Sicherheit legt
* Das Protokoll ist kompatibel zu bestehenden NTP-Servern
* Ursprünglich ist es für [[OpenBSD]] geschrieben worden, ist jedoch mittlerweile auch als portable Version und als Paket in der Linux-Paketverwaltung verfügbar
* OpenNTPD steht in der Kritik, nicht dieselbe Genauigkeit zu bieten wie NTP
* Die Abweichungen können hierbei 50–200&nbsp;ms betragen, OpenBSD bestätigt dies, da es nicht zu den Designzielen gehörte hoch präzise zu sein


=== Ntimed ===
=== Ntimed ===
Das NTPD-Programm dient als Zeitserver, Zeitclient und deckt viele weitere Funktionen ab. Da der Quelltext der NTP-Referenzimplementierung mit über 300.000 Zeilen sehr umfangreich ist, fördert die [[Linux Foundation]] mit dem Projekt Ntimed von FreeBSD-Entwickler Poul-Henning Kamp eine Modularisierung. Der Client-Quelltext umfasst ca. 3700 Zeilen. Slave-Server, Refclocks und Protokolle wie [[Precision Time Protocol|PTP]] werden bei Interesse am Projekt ergänzt.<ref>Sebastian Grüner: [https://www.golem.de/news/freebsd-entwickler-linux-foundation-sponsert-ntpd-alternative-1412-111316.html ''Linux-Foundation sponsert NTPD-Alternative''.] golem.de</ref>
Das NTPD-Programm dient als Zeitserver, Zeitclient und deckt viele weitere Funktionen ab
* Da der Quelltext der NTP-Referenzimplementierung mit über 300.000 Zeilen sehr umfangreich ist, fördert die [[Linux Foundation]] mit dem Projekt Ntimed von FreeBSD-Entwickler Poul-Henning Kamp eine Modularisierung
* Der Client-Quelltext umfasst ca. 3700 Zeilen
* Slave-Server, Refclocks und Protokolle wie [[Precision Time Protocol|PTP]] werden bei Interesse am Projekt ergänzt


=== NTPsec ===
=== NTPsec ===
NTPsec ist ein [[Abspaltung (Softwareentwicklung)|Fork]] des originalen NTPD-Projekts mit dem Ziel, das Programm durch verschiedene Maßnahmen sicherer zu machen. So wurde die Codebasis aktuellen Standards angepasst und konnte u.&nbsp;a. dadurch von 253k auf 62k [[Lines of Code|Zeilen Quellcode]] reduziert werden.<ref>{{Internetquelle |url=https://blog.ntpsec.org/2016/11/29/less-is-more.html |titel=Less Is More: Stripping Down NTP |abruf=2019-12-01}}</ref><ref>{{Internetquelle |url=https://www.ntpsec.org/accomplishments.html |titel=What we’ve accomplished |abruf=2019-12-01}}</ref> Die erste stabile 1.0 Version wurde am 10.&nbsp;Oktober 2017 veröffentlicht.<ref>{{Internetquelle |url=https://blog.ntpsec.org/2017/10/10/version-1.0.0.html |titel=version 1.0.0 |abruf=2020-12-07}}</ref>
NTPsec ist ein [[Abspaltung (Softwareentwicklung)|Fork]] des originalen NTPD-Projekts mit dem Ziel, das Programm durch verschiedene Maßnahmen sicherer zu machen
* So wurde die Codebasis aktuellen Standards angepasst und konnte u.&nbsp;a.&nbsp;dadurch von 253k auf 62k [[Lines of Code|Zeilen Quellcode]] reduziert werden
* Die erste stabile 1.0 Version wurde am 10.&nbsp;Oktober 2017 veröffentlicht


=== tlsdate ===
=== tlsdate ===
Mit gefälschten NTP-Antworten kann der Schutz des HTTP-Strict-Transport-Security-Protokolls ([[HTTP Strict Transport Security|HSTS]]) von HTTPS umgangen werden. Zudem werden NTP-Server mitunter für Reflection-Angriffe missbraucht, da NTP das verbindungslose [[User Datagram Protocol|UDP]] verwendet. Wenn Angreifer Pakete mit gefälschter Absenderadresse an einen NTP-Server leiten, landet die Antwort beim Opfer. Ist die Antwort größer als die Anfrage, kann man damit [[Denial of Service|Denial-of-Service]]-Angriffe verstärken. Diese und weitere Probleme umgeht das später entstandene TLS-Protokoll, da es ebenfalls Zeitangaben überträgt. Mit dem von [[Jacob Appelbaum]] entwickelten Programm tlsdate übernimmt das TLS-Protokoll auch die Funktion des NTP-Protokolls.<ref>Hanno Böck: [https://www.golem.de/news/zeitserver-sicherheitsluecken-in-ntp-1412-111296.html ''Sicherheitslücken in NTP''.] golem.de</ref> Ein Nachteil von tlsdate ist seine recht große Ungenauigkeit von maximal ±1 Sekunde, zuzüglich der Netzwerklatenz. Primär resultiert die relativ große Ungenauigkeit aus der bei TLS 1.2 bestehenden Zeitstempelauflösung von einer Sekunde.<ref name="hboeck.de">{{Internetquelle |url=https://blog.hboeck.de/archives/863-dont-update-ntp-stop-using-it.html |titel=Don’t update NTP – stop using it |werk=Hanno’s blog |sprache=en |abruf=2018-09-12}}</ref> Ab der TLS-Version 1.3 fällt die bisher über TLS übertragene Zeit weg. tlsdate ist somit in der vorliegenden Version keine dauerhafte Problemlösung.<ref name="hboeck.de" />
Mit gefälschten NTP-Antworten kann der Schutz des HTTP-Strict-Transport-Security-Protokolls ([[HTTP Strict Transport Security|HSTS]]) von HTTPS umgangen werden
* Zudem werden NTP-Server mitunter für Reflection-Angriffe missbraucht, da NTP das verbindungslose [[User Datagram Protocol|UDP]] verwendet
* Wenn Angreifer Pakete mit gefälschter Absenderadresse an einen NTP-Server leiten, landet die Antwort beim Opfer
* Ist die Antwort größer als die Anfrage, kann man damit [[Denial of Service|Denial-of-Service]]-Angriffe verstärken
* Diese und weitere Probleme umgeht das später entstandene TLS-Protokoll, da es ebenfalls Zeitangaben überträgt
* Mit dem von [[Jacob Appelbaum]] entwickelten Programm tlsdate übernimmt das TLS-Protokoll auch die Funktion des NTP-Protokolls
Ein Nachteil von tlsdate ist seine recht große Ungenauigkeit von maximal ±1 Sekunde, zuzüglich der Netzwerklatenz
* Primär resultiert die relativ große Ungenauigkeit aus der bei TLS 1.2 bestehenden Zeitstempelauflösung von einer Sekunde


=== chrony ===
=== chrony ===
Chrony ist eine eigenständige Implementierung von NTP und NTS und wird unter GPLv2 veröffentlicht.<ref>{{Internetquelle |url=https://chrony.tuxfamily.org/ |titel=chrony – Introduction |sprache=en |abruf=2021-02-16}}</ref>
Chrony ist eine eigenständige Implementierung von NTP und NTS und wird unter GPLv2 veröffentlicht


<noinclude>
<noinclude>
Zeile 124: Zeile 196:
* [[Allan-Varianz]]
* [[Allan-Varianz]]
* [[Y2K36]]
* [[Y2K36]]
==== Normen und Standards ====
NTP ist als [[Request for Comments]] (RFC) standardisiert
{| class="wikitable options big"
|-
! RFC !! Titel
|-
| [https://www.rfc-editor.org/info/rfc958 958] || Network Time Protocol (NTP)
|-
| [https://www.rfc-editor.org/info/rfc1059 1059] || Network Time Protocol (Version 1)
|-
| [https://www.rfc-editor.org/info/rfc1119 1119] || Network Time Protocol (Version 2)
|-
| [https://www.rfc-editor.org/info/rfc1305 1305] || Network Time Protocol (Version 3)
|-
| [https://www.rfc-editor.org/info/rfc5905 5905] || Network Time Protocol (Version 4)
|-
| [https://www.rfc-editor.org/info/rfc7822 7822] || Network Time Protocol Version 4 (NTPv4) Extension Fields
|-
| [https://www.rfc-editor.org/info/rfc8573 8573] || Message Authentication Code for the Network Time Protocol
|-
| [https://www.rfc-editor.org/info/rfc5906 5906] || Network Time Protocol Version 4: Autokey Specification
|-
| [https://www.rfc-editor.org/info/rfc5907 5907] || Definitions of Managed Objects for Network Time Protocol Version 4 (NTPv4)
|-
| [https://www.rfc-editor.org/info/rfc5908 5908] || Network Time Protocol (NTP) Server Option for DHCPv6
|-
| [https://www.rfc-editor.org/info/rfc8915 8915] || Network Time Security for the Network Time Protocol
|-
| [https://www.rfc-editor.org/info/rfc2783 2783] || PPS API (Hochpräzise Zeitsynchronisation bei [[Unix]]-Kerneln)
|}


==== Links ====
==== Links ====
===== Weblinks =====
===== Weblinks =====
# https://de.wikipedia.org/wiki/Network_Time_Protocol
# https://de.wikipedia.org/wiki/Network_Time_Protocol
# [https://www.ntp.org/ ntp.org] – NTP-Homepage
# [https://www.eecis.udel.edu/~mills/ntp.html ''Dave Mills’ NTP-Homepage''.] eecis.udel.edu
# [https://www.meinbergglobal.com/download/ntp/docs/ntp_cheat_sheet.pdf ''NTP Configuration Short Reference''.] (PDF; 315&nbsp;kB) meinbergglobal.com
# [https://support.ntp.org/bin/view/Servers/StratumOneTimeServers ''Liste mit öffentlichen Stratum-1 Zeitservern weltweit''.] support.ntp.org
# [https://ncomputers.org/ntptest NTP Server Test Online Tool.] ncomputers.org
# [https://www.pool.ntp.org/zone/de ''NTP-Pool Germany – de.pool.ntp.org'']
# [http://www.hullen.de/helmut/filebox/DCF77/ntpsrvr.html ''Liste von in Deutschland betriebenen NTP-Server'']
</noinclude>
</noinclude>
= TMP =
== Normen und Standards ==
NTP ist als [[Request for Comments]] (RFC) standardisiert:
* {{RFC-Internet |RFC=958 |Titel=Network Time Protocol (NTP) |Datum=1985 |Kommentar=veraltet}}
* {{RFC-Internet |RFC=1059 |Titel=Network Time Protocol (Version 1) |Datum=1988 |Kommentar=veraltet}}
* {{RFC-Internet |RFC=1119 |Titel=Network Time Protocol (Version 2) |Datum=1989 |Kommentar=veraltet}}
* {{RFC-Internet |RFC=1305 |Titel=Network Time Protocol (Version 3) |Datum=1992 |Kommentar=veraltet}}
* {{RFC-Internet |RFC=5905 |Titel=Network Time Protocol (Version 4) |Datum=2010 |Kommentar=abwärtskompatibel mit <nowiki>RFC&nbsp;1305</nowiki> für Version&nbsp;3}}<br /> Ergänzungen:
** {{RFC-Internet |RFC=7822 |Titel=Network Time Protocol Version 4 (NTPv4) Extension Fields |Datum=2016}}
** {{RFC-Internet |RFC=8573 |Titel=Message Authentication Code for the Network Time Protocol |Datum=2019}}
Ergänzungen:
* {{RFC-Internet |RFC=5906 |Titel=Network Time Protocol Version 4: Autokey Specification |Datum=2010}}
* {{RFC-Internet |RFC=5907 |Titel=Definitions of Managed Objects for Network Time Protocol Version 4 (NTPv4) |Datum=2010}}
* {{RFC-Internet |RFC=5908 |Titel=Network Time Protocol (NTP) Server Option for DHCPv6 |Datum=2010}}
* {{RFC-Internet |RFC=8915 |Titel=Network Time Security for the Network Time Protocol |Datum=2020}}
Spezifische Anwendung-RFC:
* {{RFC-Internet |RFC=2783 |Titel=PPS API (Hochpräzise Zeitsynchronisation bei [[Unix]]-Kerneln) |Datum=2000}}
== Literatur ==
* {{Literatur
  |Autor=David L. Mills
  |Titel=Computer Network Time Synchronization: The Network Time Protocol
  |Verlag=CRC Taylor & Francis
  |Ort=Boca Raton
  |Datum=2006
  |ISBN=0-8493-5805-1}}
* {{Literatur
  |Autor=Benjamin Pfister
  |Titel=Kurz erklärt: NTP über Network Time Security absichern
  |Sammelwerk=[[iX – Magazin für professionelle Informationstechnik|iX]]
  |Nummer=2
  |Datum=2021
  |Seiten=114
  |Kommentar=Inklusive Kommentar zu <nowiki>RFC&nbsp;8915</nowiki>
  |Online=https://www.heise.de/select/ix/2021/2/seite-114
  |Abruf=2021-01-27}}
== Weblinks ==
* [https://www.ntp.org/ ntp.org] – NTP-Homepage (englisch)
* [https://www.eecis.udel.edu/~mills/ntp.html ''Dave Mills’ NTP-Homepage''.] eecis.udel.edu (englisch)
* [https://www.meinbergglobal.com/download/ntp/docs/ntp_cheat_sheet.pdf ''NTP Configuration Short Reference''.] (PDF; 315&nbsp;kB) meinbergglobal.com (englisch)
* [https://support.ntp.org/bin/view/Servers/StratumOneTimeServers ''Liste mit öffentlichen Stratum-1 Zeitservern weltweit''.] support.ntp.org (englisch)
* [https://ncomputers.org/ntptest NTP Server Test Online Tool.] ncomputers.org
* Deutschland:
** [https://www.pool.ntp.org/zone/de ''NTP-Pool Germany – de.pool.ntp.org''] (englisch)
** {{Webarchiv |url=http://www.ptb.de/cms/ptb/fachabteilungen/abt4/fb-44/fragenzurzeit/fragenzurzeit07.html |text=''Gibt es die Zeit auch online?'' |wayback=20160414072641}} PTB – [[Physikalisch-Technische Bundesanstalt]]
** [http://www.hullen.de/helmut/filebox/DCF77/ntpsrvr.html ''Liste von in Deutschland betriebenen NTP-Server'']
* Österreich:
** [https://www.pool.ntp.org/zone/at ''NTP-Pool Austria – at.pool.ntp.org''] (englisch)
** [https://www.metrologie.at/messtechnische-fachbereiche/zeit/zeitsynchronisation-ueber-internet/ ''Zeitsynchronisation über Internet''.] [[Bundesamt für Eich- und Vermessungswesen]] (BEV)
* Schweiz:
** [https://www.pool.ntp.org/zone/ch ''NTP-Pool Switzerland – ch.pool.ntp.org''] (englisch)
== Einzelnachweise ==
<references responsive>
<ref name="RFC5905">
{{RFC-Internet |RFC=5905 |Titel=Network Time Protocol Version 4: Protocol and Algorithms Specification |Datum=2010 |Kommentar=abwärtskompatibel mit <nowiki>RFC&nbsp;1305</nowiki> für Version&nbsp;3}}
</ref>
</references>


[[Kategorie:Internet-Anwendungsprotokoll]]
[[Kategorie:Internet-Anwendungsprotokoll]]
[[Kategorie:Netzwerk-Zeitübertragung]]
[[Kategorie:Netzwerk-Zeitübertragung]]

Aktuelle Version vom 8. Februar 2024, 10:49 Uhr

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

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

Grundlagen

Statusmeldung des NTP-Daemons

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 usw.) 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 usw. 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 etc.) 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

Das Simple Network Time Protocol (SNTP) ist eine vereinfachte Version des NTP

  • Ursprünglich als eigenständiger Standard beginnend mit RFC 1361 ist es seit Juni 2010 in der NTP Version 4 integriert als kleines Unterkapitel im RFC 5905

Der Aufbau des Protokolls ist mit dem von NTP identisch

  • SNTP-Clients können damit die Zeit auch von NTP-Servern beziehen
  • Der wesentliche Unterschied liegt in den verwendeten Algorithmen zur Zeitsynchronisation
  • Während bei NTP die Zeitsynchronisation in der Regel mit mehreren Zeitservern erfolgt, wird bei SNTP nur ein Zeitserver verwendet
  • SNTP verzichtet auch auf die Beeinflussung von Phase und Frequenz des lokalen Zeitgebers

SNTP kann daher nicht dieselbe Genauigkeit wie NTP liefern

  • Aufgrund der einfacheren Algorithmen benötigt SNTP weniger Rechenressourcen

Ä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

  • Moderne Authentifizierungssysteme (wie Kerberos), die in Windows 2000 und neueren Versionen verwendet werden, benötigen zur Erhöhung der Sicherheit Zeitstempel, daher ergibt sich auch hier ein Anwendungsfall für NTP

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

Protokollalternativen

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

  • Damit ist in Hardware-Ausführung eine Genauigkeit von Nanosekunden und als Software unter einer Mikrosekunde möglich
  • PTP ist definiert in der IEEE 1588 und in IEC 61588 übernommen worden

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:

<templatestyles src="column-multiple/styles.css" />

  • 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

OpenNTPD

Im Jahre 2004 präsentierte Henning Brauer die NTP Implementierung OpenNTPD, welche einen Fokus auf Sicherheit legt

  • Das Protokoll ist kompatibel zu bestehenden NTP-Servern
  • Ursprünglich ist es für OpenBSD geschrieben worden, ist jedoch mittlerweile auch als portable Version und als Paket in der Linux-Paketverwaltung verfügbar
  • OpenNTPD steht in der Kritik, nicht dieselbe Genauigkeit zu bieten wie NTP
  • Die Abweichungen können hierbei 50–200 ms betragen, OpenBSD bestätigt dies, da es nicht zu den Designzielen gehörte hoch präzise zu sein

Ntimed

Das NTPD-Programm dient als Zeitserver, Zeitclient und deckt viele weitere Funktionen ab

  • Da der Quelltext der NTP-Referenzimplementierung mit über 300.000 Zeilen sehr umfangreich ist, fördert die Linux Foundation mit dem Projekt Ntimed von FreeBSD-Entwickler Poul-Henning Kamp eine Modularisierung
  • Der Client-Quelltext umfasst ca. 3700 Zeilen
  • Slave-Server, Refclocks und Protokolle wie PTP werden bei Interesse am Projekt ergänzt

NTPsec

NTPsec ist ein Fork des originalen NTPD-Projekts mit dem Ziel, das Programm durch verschiedene Maßnahmen sicherer zu machen

  • So wurde die Codebasis aktuellen Standards angepasst und konnte u. a. dadurch von 253k auf 62k Zeilen Quellcode reduziert werden
  • Die erste stabile 1.0 Version wurde am 10. Oktober 2017 veröffentlicht

tlsdate

Mit gefälschten NTP-Antworten kann der Schutz des HTTP-Strict-Transport-Security-Protokolls (HSTS) von HTTPS umgangen werden

  • Zudem werden NTP-Server mitunter für Reflection-Angriffe missbraucht, da NTP das verbindungslose UDP verwendet
  • Wenn Angreifer Pakete mit gefälschter Absenderadresse an einen NTP-Server leiten, landet die Antwort beim Opfer
  • Ist die Antwort größer als die Anfrage, kann man damit Denial-of-Service-Angriffe verstärken
  • Diese und weitere Probleme umgeht das später entstandene TLS-Protokoll, da es ebenfalls Zeitangaben überträgt
  • Mit dem von Jacob Appelbaum entwickelten Programm tlsdate übernimmt das TLS-Protokoll auch die Funktion des NTP-Protokolls

Ein Nachteil von tlsdate ist seine recht große Ungenauigkeit von maximal ±1 Sekunde, zuzüglich der Netzwerklatenz

  • Primär resultiert die relativ große Ungenauigkeit aus der bei TLS 1.2 bestehenden Zeitstempelauflösung von einer Sekunde

chrony

Chrony ist eine eigenständige Implementierung von NTP und NTS und wird unter GPLv2 veröffentlicht


Anhang

Siehe auch



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)

Links

Weblinks
  1. https://de.wikipedia.org/wiki/Network_Time_Protocol
  2. ntp.org – NTP-Homepage
  3. Dave Mills’ NTP-Homepage. eecis.udel.edu
  4. NTP Configuration Short Reference. (PDF; 315 kB) meinbergglobal.com
  5. Liste mit öffentlichen Stratum-1 Zeitservern weltweit. support.ntp.org
  6. NTP Server Test Online Tool. ncomputers.org
  7. NTP-Pool Germany – de.pool.ntp.org
  8. Liste von in Deutschland betriebenen NTP-Server