close

Netzwerkzeitprotokoll

Zur Navigation gehen Zur Suche gehen
Network Time Protocol (NTP)
Familie Familie der Internetprotokolle
Funktion Synchronisation von Computersystemuhren
Häfen 123/UDP
Speicherort im Protokollstapel
App NTP
Transport PDU
Netz IP
Normen
RFC 1305 (NTP)
RFC 4330 (SNTP)
RFC 5905 (Version 4, abwärtskompatibel)

Network Time Protocol (NTP) ist ein Internetprotokoll zur Synchronisierung der Uhren von Computersystemen durch das Routing von Paketen in Netzwerken mit variabler Latenz . NTP verwendet UDP als Transportschicht unter Verwendung von Port 123. Es wurde entwickelt, um den Auswirkungen variabler Latenz zu widerstehen.

Geschichte

[ aktualisieren ]

Entwicklung von RFCs für NTP
1980 —
1985 —
1990 -
Neunzenhundertfünfundneunzig -
2000 —
2005—
2010 —
2015 —
2020 —
RFC 958 [ 1 ]
RFC 1059 [ 2 ]
RFC 1119 [ 3 ]
RFC 1305 [ 4 ]
RFC 5905 [ 5 ]
RFC 7822 [ 6 ]
RFC 1361 [ 7 ]
RFC 1769 [ 8 ]
RFC 2030 [ 9 ]
RFC 4330 [ 10 ]
DCNET Internetuhrdienst [ 11 ]
SNTP

NTP ist eines der ältesten noch verwendeten Internetprotokolle , das 1981 entwickelt und erstmals in RFC 778 beschrieben wurde . NTP wurde ursprünglich von David L. Mills von der University of Delaware [ 12 ] entworfen und wird immer noch von ihm in Verbindung mit einem Team von Freiwilligen gepflegt. [ Zitat erforderlich ]

Die Betriebsdetails von NTP sind in RFC 778 , RFC 891 , RFC 956 , RFC 958 , RFC 1305 , RFC 4330 und RFC 5905 dargestellt .

NTP sollte nicht mit dem Tagesprotokoll ( RFC 867 ) oder dem Zeitprotokoll ( RFC 868 ) verwechselt werden.

Die aktuelle Version von NTP ist Version 4; Bis 2005 wurden in RFCs nur Versionen ab Version 3 dokumentiert . Die IETF NTP Working Group wurde gebildet, um die Arbeit der NTP-Community seit RFC 1305 zu standardisieren .

Es gibt eine weniger komplexe Form von NTP, die keine Speicherung von Informationen über frühere Kommunikationen erfordert, bekannt als „Simple Network Time Protocol“ oder SNTP , das bei eingebetteten Geräten und in Anwendungen, bei denen kein großes Netzwerk benötigt wird, an Popularität gewonnen hat RFC 1361 , RFC 1769 und RFC 2030 .

Beschreibung

NTP verwendet den Marzullo-Algorithmus mit der Zeitskala der koordinierten Weltzeit (UTC) , einschließlich Unterstützung für Funktionen wie Schaltsekunden . NTPv4 kann über das Internet innerhalb von 10 Millisekunden (1/100 Sekunde) synchron bleiben und kann in lokalen Netzwerken unter idealen Bedingungen bis zu 200 Mikrosekunden (1/5000 Sekunde) oder mehr erreichen.

Der Unix-NTP- Daemon ist ein Prozess auf Benutzerebene, der kontinuierlich auf dem Computer ausgeführt wird, der NTP unterstützt, und der größte Teil des Protokolls ist in diesem Benutzerprozess implementiert. Um die beste NTP-Leistung zu erzielen, ist es wichtig, dass eine Standard -Phasenregelkreis- NTP-Uhr im Betriebssystemkern implementiert ist, anstatt nur die Intervention eines externen NTP-Daemons zu verwenden: Alle aktuellen Versionen von GNU/Linux und Solaris unterstützen diese Funktion .

Auch die Betriebssysteme macOS und Windows verwenden derzeit dieses Protokoll, um die koordinierte Weltzeit (UTC) durch einfache Systemprozesse zu erhalten, die über das Internet funktionieren.

NTP verwendet ein Clock-Stratum -Hierarchiesystem , bei dem Stratum-1-Systeme mit einer externen Uhr wie einer GPS-Uhr oder einer Atomuhr synchronisiert werden . NTP-Stratum-2-Systeme leiten ihre Zeit von einem oder mehreren der Stratum-1-Systeme ab und so weiter (es sei darauf hingewiesen, dass sich dies von Taktschichten unterscheidet, die in Telekommunikationssystemen verwendet werden).

Die von NTP verwendeten Zeitstempel bestehen aus einer 32-Bit-Sekunde und einem 32-Bit-Bruchteil, was eine Skala von 2 32 Sekunden (136 Jahre) mit einer theoretischen Auflösung von 2 −32 Sekunden (0,233 Nanosekunden ) ergibt. ). Obwohl NTP-Zeitskalen auf alle 2 32 Sekunden gerundet werden, sollten Implementierungen die NTP-Zeit eindeutig machen, indem sie ungefähre Zeiten aus anderen Quellen verwenden. Dies ist im allgemeinen Gebrauch kein Problem, da dies nur etwa einige Jahrzehnte dauert.

Paketbeschreibung

Beschreibung des Paketformats NTP/SNTP Version 4, das den IP- und UDP-Headern folgt .

0 1 zwei 3 4 5 6 7 8 9 10 elf 12 13 14 fünfzehn 16 17 18 19 zwanzig einundzwanzig 22 23 24 25 26 27 28 29 30 31
LI BV Modus Schicht Hähnchen Präzision
Root-Verzögerung
Wurzelstreuung
Referenzkennung
Referenzzeitstempel (64)
Ursprungszeitstempel (64)
Zeitstempel empfangen (64)
Sendezeitstempel (64)
Schlüsselkennung (optional) (32)
Message Digest (optional) (128)
Sprunganzeige (LI)
2-Bit-Code, der verwendet wird, um anzuzeigen, dass eine Sekunde zur letzten Minute des aktuellen Tages hinzugefügt/entfernt wird.
LI Wert Bedeutung
00 0 ohne Modifikation
01 1 Die letzte Minute hat 61 Sekunden
10 zwei Die letzte Minute hat 59 Sekunden
elf 3 Alarmzustand (Uhr nicht synchronisiert)
Versionsnummer (VN)
3-Bit-Ganzzahl, die die Versionsnummer angibt. Version 3 steht für Version 3 (nur IPv4) und 4 steht für Version 4 (IPv4, IPv6 und OSI). Soll zwischen IPv4, IPv6 und OSI unterschieden werden, muss der gekapselte Kontext untersucht werden.
Modus
Drei-Bit-Ganzzahl, die verwendet wird, um den Modus anzugeben, der wie folgt definiert ist:
Modus Bedeutung
0 reserviert
1 aktiv symmetrisch
zwei passiv symmetrisch
3 Klient
4 Server
5 Übertragung
6 reserviert für NTP-Steuernachrichten
7 für den privaten Gebrauch reserviert
Schicht
Es ist eine 8-Bit-Ganzzahl ohne Vorzeichen, die die Ebene (Schicht) des lokalen Servers angibt. Die definierten Werte sind die folgenden:
Schicht Bedeutung
0 nicht angegeben oder nicht verfügbar
1 primäre Referenz (z. B. Funkuhr)
2-15 sekundäre Referenz (über NTP oder SNTP)
16-255 reserviert
Abfrageintervall
ist eine vorzeichenbehaftete 8-Bit-Ganzzahl, die das maximale Zeitintervall zwischen zwei aufeinanderfolgenden Nachrichten angibt, ausgedrückt in Sekunden und als nächste Potenz von 2. Die meisten Anwendungen verwenden den Bereich von 6 Bit (64") bis 10 (1024")
Präzision
ist eine Ganzzahl mit Vorzeichen, die die Genauigkeit der lokalen Uhr angibt, ausgedrückt in Sekunden hoch 2:

Root-Verzögerung

es spiegelt die Roundtrip-Verzögerung zwischen dem Server und der primären Taktquelle wider. Bietet eine grobe Schätzung des Zeitübertragungsfehlers zwischen einem Client und einem Server im ungünstigsten Fall.

Wurzelstreuung

es ist eine Schätzung der Gesamtmenge an Fehlern/Abweichungen zwischen einem Server und der korrekten Zeit. Die Berechnung ist einfach: Jeder NTP-Server erhält seine Zeit von einer externen Uhr oder von einem anderen NTP-Server: Wenn ein Server seine Zeit von einer externen Uhr erhält, ist seine Wurzelspreizung der geschätzte maximale Fehler dieser Uhr. Wenn Sie Ihre Zeit von einem anderen NTP-Server beziehen, ist Ihr Root-Hash der Root-Hash dieses Servers plus der Hash, der durch die Netzwerkverbindung zwischen ihnen hinzugefügt wird.

Referenzkennung

ist eine 4-stellige Zeichenfolge, die den Typ der Quelle angibt. Einige der Kennungen sind:
Code Externe Referenzquelle
LOCL lokale Uhr nicht kalibriert
CESM kalibrierte Cäsiumuhr
RBDM kalibrierte Rubidiumuhr
PPS kalibrierte Quarzuhr oder andere Pulse-pro-Sekunde-Quelle
IRIG Inter-Range-Instrumentierungsgruppe
AKTEN NIST-Telefonmodemdienst
USNR USNO-Telefonmodemdienst
Herr Radionavigationssystem LORAN-C
OMEG OMEGA Radio-Navigationssystem
Geographisches Positionierungs System globaler Positionsdienst


Uhrenschichten

Image
NTP-Schichtenschema.

NTP hat eine hierarchische Struktur nach Ebenen, jede dieser Ebenen wird als Stratum bezeichnet. Diese Pegel bestimmen den Abstand von der Referenzuhr.

Die Referenzuhr ist das oberste Gerät in der Hierarchie, sie befindet sich in Schicht Null, wir werden diese Schicht weiter unten genauer sehen.

Es gibt ein Maximum an Schichtebenen, nämlich bis zu 15 Schichten, mit zunehmender Schichtzahl werden die Geräte ungenauer. Server in einem Stratum können sich miteinander verbinden, um die interne Synchronisation zu verbessern. Um Ungenauigkeiten entgegenzuwirken und das Stratum-System zuverlässiger zu machen, kann jeder Client mehrere Server aus dem oberen Stratum abfragen.

Die oberen Schichten sind unten aufgeführt:

Schicht 0

Geräte in dieser Schicht werden auch als Referenzuhren bezeichnet, diese haben eine geringe oder keine Zeitverzögerung. Sie verteilen die koordinierte Weltzeit (UTC) über ein Netzwerk an andere Geräte. Alle Geräte, die Zeit von einem Stratum 0-Server empfangen, werden als Clients bezeichnet.

Als Beispiele können wir Atomuhren oder Funkuhren hervorheben .

Schicht 1

Sie sind jene Server, die direkt mit einer Referenzuhr verbunden sind und das Signal direkt das Signal der koordinierten Weltzeit (UTC) empfangen . Es synchronisiert in wenigen Mikrosekunden.

Schicht 2

Entspricht den Servern, die mit einem oder mehreren Servern in Stratum 1 synchronisiert sind, also von diesen Servern ihre Zeit erhalten.

Anschließend fungieren diese Server von Schicht 2 als Server für Schicht 3 und so weiter, bis die letzte Schicht erreicht ist.

Nachrichtenaustausch

Der vom NTP-Protokoll durchgeführte Nachrichtenaustauschprozess ist wie folgt:

Image
NTP-Nachrichtenaustauschschema.
  • Zum Zeitpunkt T0 wird vom Client eine Synchronisationsanforderung gesendet, um zu überprüfen, ob die Verzögerungszeit zwischen Server und Client größer als 17 Minuten ist.
  • Diese Anfrage wird vom Server zum Zeitpunkt T1 empfangen. In diesem Moment können wir zwei Szenarien finden:
    • Wenn die Verzögerung weniger als 17 Minuten beträgt, sendet der Server zum Zeitpunkt T2 eine Nachricht.
    • Wenn die Verzögerung mehr als 17 Minuten beträgt, wird der Vorgang beendet und es findet keine Synchronisierung statt.
  • Zum Zeitpunkt T3 erhält der Client das Paket vom Server. Zu diesem Zeitpunkt wird jede Minute eine Zeitanpassung vorgenommen, bis sich 128 ms Serverzeit nähern. Ab einer Verzögerung größer 128ms wird alle 17 Minuten die Verzögerung angegeben.
Image
NTP-Nachrichtenflussschema.


Die Phasenverschiebung (θ) zwischen beiden Takten wird nach folgender Formel berechnet:

Image
Formel Offset berechnen.


Netzwerkzeitsicherheit

Network Time Security (NTS für NTP) ist in RFC 8915 spezifiziert und verwendet Port 4460 für den Austausch von Verschlüsselungsschlüsseln. [ 13 ]

Es ist ein kryptografischer Sicherheitsmechanismus für die Netzwerkzeitsynchronisierung. Eine vollständige Spezifikation für die Anwendung von NTS auf den Client-Server-Modus des Network Time Protocol (NTP) wird bereitgestellt [ RFC 5905 ].

Die Ziele von NTS sind:

  • Identität: Die Identität der Parteien, mit denen sie kommunizieren, wird mittels eines öffentlichen X.509-Schlüssels festgestellt.
  • Authentifizierung: kryptografische Überprüfung der Pakete, um sicherzustellen, dass ihre Herkunft identifiziert und sie während der Übertragung nicht verändert wurden.
  • Vertraulichkeit: NTS bietet Unterstützung für die Verschlüsselung von NTP-Erweiterungsfeldern.
  • Replay Prevention: Erkennung doppelter Zeitsynchronisationspakete.
  • Request-Response-Konsistenz: Überprüfung durch den Client, dass ein empfangenes Zeitsynchronisationspaket vom Server einer vorherigen Client-Anfrage entspricht.
  • Skalierbarkeit: Der Server kann eine große Anzahl von Clients bedienen.
  • Leistung: Die bei der Übertragung verwendete Verschlüsselung und Authentifizierung sollte minimal sein.

Softwareimplementierungen

Chrony

Image
chronyc wird in einem Ubuntu 16.04-Terminalfenster ausgeführt und zeigt die zu verwendende Lizenz und Hilfe beim Anzeigen von Befehlszeilenoptionen.

Chrony ist standardmäßig in Red Hat -Distributionen enthalten [ impl_soft 1 ] und ist in den Ubuntu -Repositories verfügbar [ impl_soft 2 ] Chrony ist auch für virtuelle Maschinen konzipiert, eine viel instabilere Umgebung. Es zeichnet sich durch seinen geringen Ressourcenverbrauch (Kosten) aus und unterstützt beide Protokolle sehr gut (NTP und PTP ). Es besteht aus zwei Hauptkomponenten: chronyd, einem Daemon, der beim Computerstart ausgeführt wird, und chronyc, einer Befehlszeilen-Benutzeroberfläche für die Konfiguration. Es wurde als sehr sicher und mit nur wenigen Zwischenfällen bewertet. [ impl_soft 3 ]​ sein Vorteil ist die Vielseitigkeit seines Codes, der von Grund auf neu geschrieben wurde, um Codekomplexität zu vermeiden, [ impl_soft 4 ]​ Chrony ist unter der GNU General Public License, Version 2 , geschrieben und wurde 1997 von Richard Curnow zusammen mit anderen Mitwirkenden geschrieben und wird derzeit von Miroslav Lichvar gewartet und Entwicklung und Wartung werden von Red Hat gesponsert. [ impl_soft 5 ]

Seit Oktober 2020 verwendet chrony das NTS-Protokoll für NTP. [ 13 ]

SNTP

Das SNTP-Verfahren wurde für kleinere, weniger leistungsstarke Computer entwickelt und benötigt weniger Speicher- und CPU-Ressourcen als NTP. Es ist auch Teil von TCP/IP und verwendet den UDP-Port 123. Obwohl es dasselbe tut, ist es einfacher als NTP, da es weniger Schritte hat und die Zeit nur periodisch anpasst, was zu einer geringeren Genauigkeit führt. Der Inhalt des Pakets, mit dem er mit dem Server kommuniziert, umgeht viele Funktionalitäten des NTP-Verfahrens. Der größte Nachteil dieses Protokolls ist seine Anfälligkeit für mögliche Angriffe, da es keine Verschlüsselungsmethode verwendet, was eine geringe Sicherheit bietet.

In folgenden Fällen ist der Einsatz von SNTP interessant:

  • Geräte, bei denen die Zeitsynchronisation nicht entscheidend ist.
  • Einfache Geräte wie Mikrocontroller und kleine Computer mit wenig Speicher.

OpenNTPD

Es ist eine Implementierung von NTP, die hauptsächlich von Henning Brauer im Jahr 2004 als Teil des OpenBSD -Projekts entwickelt wurde . Es ist einfach zu bedienen und bietet die Möglichkeit, die lokale Uhr mit entfernten NTP-Servern zu synchronisieren.

Obwohl es sich mehr auf die einfacheren allgemeinen Bedürfnisse von OpenBSD -Benutzern konzentriert , bietet es auch einige Verbesserungen der Protokollsicherheit.

Einige Merkmale dieser Implementierung sind:

  • Einfache und leicht verständliche Codebasis.
  • Trennung von Privilegien, die nicht privilegierten Netzwerkcode von privilegiertem Zeitkonfigurationscode isoliert.
  • Privilegiengetrennte DNS-Unterstützung, die zur Laufzeit dynamisch arbeitet und eine späte Auflösung ermöglicht, selbst wenn das Netzwerk beim Start ausgefallen ist.

Neueste Versionen

Die aktuelle Version ist NTPv4 (Version 4), das 2010 in RFC 5905 eingeführt wurde . Es entstand als Weiterentwicklung von Version 3. Diese Version ist mit früheren Versionen kompatibel, einschließlich der auf RFC 1305 basierenden NTPv3-Version .

Diese neueste Version verbesserte Abschwächungs- und Disziplinalgorithmen, die die Genauigkeit zur Unterstützung von Workstations, Laptops, Handhelds und LANs auf mehrere zehn Mikrosekunden verbessern. NTPv4 hat auch eine Servererkennungsfunktion, die es einfach macht, die Konfiguration eines Servers zu identifizieren.

Vergleich zwischen NTPv3 und NTPv4

Die Hauptunterschiede zwischen diesen Versionen sind:

  • NTPv4 ermöglicht zusätzlich zur IPv4-Adressierung die IPv6-Adressierung zwischen Clients und Servern.
  • Es ermöglicht die Integration von Sicherheit in die Kommunikation, dies wird erreicht, da NTPv4 Public-Key-Kryptografie und Standard-X509-Zertifikate unterstützt.
  • Mit NTP können Sie die Größe von Paketen reduzieren und den Bereich der verfügbaren Werte erweitern, indem Sie den Datentyp von 64-Bit-Fest auf 64-Bit-Gleitkomma ändern.
  • Verbessert die DNS-Unterstützung, sodass das Gerät mit NTPv4, wenn Sie einen Hostnamen für die Synchronisierung konfigurieren, den Hostnamen sucht, indem es ihn in den Einstellungen speichert, und auch die IP-Adresse in den Einstellungen speichert. Im Gegensatz zu NTPv3 wurde der Hostname nicht gespeichert.

Referenzen

  1. RFC 958 Network Time Protocol (NTP) , September 1985.
  2. RFC 1059 Network Time Protocol (Version 1) Specification and Implementation , Juli 1988.
  3. RFC 1119 Network Time Protocol (Version 2) Specification and Implementation , September 1989.
  4. RFC 1305 Network Time Protocol (Version 3) Specification, Implementation and Analysis , März 1992.
  5. RFC 5905 Network Time Protocol Version 4: Protocol and Algorithms Specification , Juni 2010.
  6. RFC 7822 Network Time Protocol Version 4 (NTPv4) Extension Fields , März 2016.
  7. RFC 1361 Simple Network Time Protocol (SNTP) , August 1992.
  8. RFC 1769 Simple Network Time Protocol (SNTP) , März 1995.
  9. RFC 2030 Simple Network Time Protocol (SNTP) Version 4 für IPv4, IPv6 und OSI , Oktober 1996.
  10. RFC 4330 Simple Network Time Protocol (SNTP) Version 4 für IPv4, IPv6 und OSI , Januar 2006
  11. RFC 778 DCNET Internet Clock Service , April 1981.
  12. „Was ist ein Netzwerkzeitprotokoll NTP?“ . CAVSI . Archiviert vom Original am 18. März 2015 . Abgerufen am 19. November 2017 . „NTP wird verwendet, um die Uhrzeit von Geräten in einem Computernetzwerk zu synchronisieren. NTP wurde von David Mills an der University of Delaware entwickelt und hat sich zu einem Standard im Internet entwickelt. »  
  13. ^ a b Ladd, Watson (1. Oktober 2020). "NTS ist jetzt ein RFC" . Cloudflare (auf Englisch) . Archiviert vom Original am 3. Oktober 2020 . Abgerufen am 3. Oktober 2020 . Heute wurde aus dem Dokument, das Network Time Security für NTP beschreibt, offiziell RFC 8915 . Das bedeutet, dass Network Time Security (NTS) offiziell Teil der Sammlung von Protokollen ist, die das Internet zum Laufen bringen. Wir haben unseren Zeitdienst geändert, um den offiziell zugewiesenen Port 4460 für den NTS-Schlüsselaustausch zu verwenden, damit Sie unseren Dienst problemlos nutzen können. » 

Referenzen: Softwareimplementierungen

  1. Lichvar, Miroslav (20. Juli 2016). "Kombinieren von PTP mit NTP, um das Beste aus beiden Welten zu erhalten" . Red Hat Enterprise Linux -Blog . RedHat . Archiviert vom Original am 30. Juli 2017 . Abgerufen am 19. November 2017 . „Ab Red Hat Enterprise Linux 7.0 (und jetzt in Red Hat Enterprise Linux 6.8) wird auch eine vielseitigere NTP-Implementierung über das chrony-Paket bereitgestellt.“  
  2. Lichtenheld, Frank. "Paket: chrony (2.1.1-1) [Universum]" . Ubuntu-Paket (auf Englisch) . Ubuntu-Paket. Archiviert vom Original am 19. November 2017 . Abgerufen am 19. November 2017 . «Vielseitige Implementierung des Network Time Protocol».  
  3. Heiderich, Mario (August 2017). Pentest-Bericht Chronik 08.2017 (pdf) . Cure53.de-Team (auf Englisch) . wiki.mozilla.org, auch bekannt als MozillaWiki oder WikiMO. Archiviert vom Original am 5. Oktober 2017 . Abgerufen am 19. November 2017 . „Das Bestehen von elf vollen Tagen On-Remote-Tests im August 2017 bedeutet, dass Chrony robust, stark und mit Blick auf Sicherheit entwickelt wurde. »  
  4. ^ "Netzwerkzeiten sichern" . Core Infrastructure Initiative, ein Gemeinschaftsprojekt der Linux Foundation . Kerninfrastruktur-Initiative. 27. September 2017. Archiviert vom Original am 28. Oktober 2017 . Abgerufen am 19. November 2017 . "Insgesamt steht die Chrony NTP-Software solide und kann als vertrauenswürdig angesehen werden."  
  5. ^ "chronische Einführung" . TuxFamily, eine gemeinnützige Organisation. (auf Englisch) . chron. Archiviert vom Original am 9. Dezember 2009 . Abgerufen am 19. November 2017 . «Die Software wird unter Linux, FreeBSD, NetBSD, macOS und Solaris unterstützt. »  

Siehe auch

Externe Links

NTP-bezogene Software