NTP - Wie sind NTP-Server so genau?


52

Mir ist aufgefallen, dass auf meinen Servern und anderen Computern die Uhr immer schwankt, sodass sie synchronisiert werden muss, um genau zu bleiben.

Wie driften die NTP-Server-Uhren nicht und bleiben immer korrekt?


3
Zum einen wäre ich speziell an einer Zusammenfassung interessiert, wie die NTP-Protokolle es zwei Computern ermöglichen, ihre Zeit über ein unzuverlässiges Netzwerk zu synchronisieren ...
Xavier Nodet

@ XavierNodet Obwohl ich mir sicher bin, dass Sie das tun würden, ist das nicht das, worüber diese Frage sich stellt. Ich würde vorschlagen, dass Sie eine eigene Frage stellen (vorausgesetzt, sie wurde noch nicht gestellt; stellen Sie sicher, dass Sie zuerst suchen). Diese Frage stellt die Frage, wie die Uhren von NTP-Servern nicht driften können, während moderne Hardware-Uhren driften.
ein CVn

@ XavierNodet Gleiche hier. Ich lerne gerne, wie und warum die Dinge so funktionieren, wie sie funktionieren! :)
Jason

Antworten:


58

NTP-Server verlassen sich auf hochgenaue Uhren für eine präzise Zeitmessung. Eine übliche Zeitquelle für zentrale NTP-Server sind Atomuhren oder GPS-Empfänger (denken Sie daran, dass GPS-Satelliten Atomuhren an Bord haben). Diese Uhren sind als genau definiert, da sie eine sehr genaue Zeitreferenz liefern. GPS oder Atomuhren haben nichts Magisches an sich, sodass sie Ihnen genau sagen, wie spät es ist. Aufgrund der Funktionsweise von Atomuhren sind sie einfach sehr gut darin, wenn man ihnen einmal sagt, wie spät es ist, immer wieder genaue Zeitangaben zu machen (da die Sekunde in Bezug auf atomare Effekte definiert ist ). In der Tat ist es erwähnenswert, dass sich die GPS-Zeit von der UTC unterscheidet , die wir eher kennen. Diese Atomuhren sind wiederum gegen synchronisiertInternational Atomic Time oder TAI , um nicht nur den Zeitablauf, sondern auch die Zeit genau zu bestimmen .

Sobald Sie eine genaue Zeit auf einem System haben, das mit einem Netzwerk wie dem Internet verbunden ist, ist es eine Frage der Protokollentwicklung, die die Übertragung präziser Zeiten zwischen Hosts über ein unzuverlässiges Netzwerk ermöglicht. In dieser Hinsicht unterscheidet sich ein NTP-Server der Schicht 2 (oder weiter von der tatsächlichen Zeitquelle entfernt) nicht von Ihrem Desktop-System, das mit einer Reihe von NTP-Servern synchronisiert.

Wenn Sie einige genaue Zeiten haben (wie sie von NTP-Servern oder anderswo abgerufen werden) und die Weiterentwicklungsrate Ihrer lokalen Uhr kennen (die leicht zu bestimmen ist), können Sie die Driftrate Ihrer lokalen Uhr im Verhältnis zur "als genau" errechnen "im Laufe der Zeit. Nach dem Einrasten kann dieser Wert verwendet werden, um die lokale Uhr kontinuierlich so einzustellen, dass Werte angezeigt werden, die dem genauen Zeitablauf sehr nahe kommen, auch wenn die lokale Echtzeituhr selbst sehr ungenau ist. Solange Ihre lokale Uhr nicht sehr unregelmäßig ist, sollte dies eine gewisse Zeit lang ermöglichen, auch wenn Ihre vorgelagerte Zeitquelle aus irgendeinem Grund nicht mehr verfügbar ist. Einige NTP-Client-Implementierungen (wahrscheinlich die meisten ntpdDaemon- oder Systemdienst-Implementierungen) tun dies, andere (wie der Begleiter von ntpd)ntpdatedas stellt einfach mal die uhr ein) geht nicht. Dies wird im Allgemeinen als Drift-Datei bezeichnet, da sie permanent ein Maß für die Clock-Drift speichert. Genau genommen muss sie jedoch nicht als bestimmte Datei auf der Festplatte gespeichert werden.

In NTP ist Schicht 0 per Definition eine genaue Zeitquelle. Schicht 1 ist ein System, das eine Schicht 0-Zeitquelle als Zeitquelle verwendet (und daher etwas ungenauer als die Schicht 0-Zeitquelle ist). Auch Stratum 2 ist etwas ungenauer als Stratum 1, da es seine Zeit mit der Quelle von Stratum 1 synchronisiert. Und so weiter. In der Praxis ist dieser Genauigkeitsverlust so gering, dass er in allen bis auf die extremsten Fälle völlig vernachlässigbar ist.


1
Respektvoll bedeutet "hohe Schicht" nicht niedrige Schichtzahl, dies sollte aus der Antwort entfernt werden. S2 ist höher als S1. Weitere Hinweise finden Sie in der Erklärung von Prof. Mills (auch bekannt als Prof NTP). "Das NTP-Subnetz arbeitet mit einer Hierarchie von Ebenen, wobei jeder Ebene eine Nummer zugeordnet ist, die als Schicht bezeichnet wird. Die (primären) Schicht-1-Server auf der untersten Ebene werden direkt synchronisiert zu nationalen Zeitdiensten ... Stratum 2 (sekundäre) Server auf der nächsthöheren Ebene werden mit Stratum 1-Servern synchronisiert und so weiter. " eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
Es ist besser, aber ich glaube nicht, dass Schicht 0 "per Definition eine genaue Zeitquelle" ist. Stratum 0 bedeutet einfach, dass es sich um eine Art Referenzuhr handelt. Nur weil es sich um eine S0-Uhr handelt, heißt das noch lange nicht, dass sie richtig funktioniert. Die Schichthöhe entspricht der Entfernung von Referenzuhren, wobei die Genauigkeit nicht garantiert wird.
DFC

@dfc Ich schätze die Eingabe, da ich die Antwort dadurch noch besser machen kann. Trotzdem stimme ich Ihrer Aussage nicht zu, dass S0 nicht bedeutet, dass es korrekt ist. Vielleicht ist das im engeren Sinne so, aber wenn die von einer S0-Uhr angegebene Zeit ungenau ist, ist diese Uhr in der Praxis als S0-Quelle unbrauchbar. Ergo sind S0-Uhren genau. Oder anders ausgedrückt, wenn Sie eine isolierte Gruppe von Hosts haben, von denen einer an einen S0 - Zeitquelle angeschlossen ist und alle anderen synchronisieren dagegen, die von der S0 Quelle gegebenen Zeit ist die richtige Zeit, soweit diese Hosts betroffen sind. Dann brauchen Sie sich keine Sorgen um TAI zu machen.
ein CVn

10

Bei der Netzwerkzeitmessung wird die Spezifikation, die angibt, wie ein Server seine Zeitquelle erhält, Stratum-Ebene genannt. Je niedriger die Stufe, desto besser ist die Zeit, die dieser Server einhält.

Stratum Level 0-Geräte sind nicht direkt mit dem Netzwerk verbunden. Sie sind das eigentliche Zeitmessgerät und müssen an einen Computer angeschlossen werden, um die tatsächliche Zeit abzuleiten. Dieser Computer wird dann zu einem Stratum Level 1 NTP-Server.

Ein Computer, der eine Verbindung zu einem Stratum Level 1 herstellt, kann auch zu einem Zeitserver werden, in diesem Fall jedoch zu einem Stratum Level 2. Je niedriger Ihr Stratum Level ist, desto genauer kann Ihre Zeitmessung sein.

Stratum Level 0-Geräte umfassen Atomuhren, die an TAI (International Atomic Time) teilnehmen.oder mit ihm synchronisiert, und Empfänger von Zeitsignalen, die von einer solchen Uhr gesendet werden. Am häufigsten sind dies GPS-Zeitnehmungsempfänger mit einer geeigneten Schnittstelle, die das GPS-PPS-Signal enthält. Das PPS-Signal sendet, wenn das GPS mehrere Satelliten gut erfasst, einen Impuls pro Sekunde, und die Vorderflanke dieses Impulses liegt innerhalb von Nanosekunden nach dem tatsächlichen Beginn dieser Sekunde. Abhängig von der Spezifikation des GPS-Empfängers kann das PPS-Signal mehr oder weniger genau sein. Dies liegt daran, dass jeder GPS-Satellit eine Atomuhr hat. Sobald der GPS-Empfänger seine eigene Position und den Standort der GPS-Satelliten gefunden hat, die er hört, kann er die HF-Ausbreitung korrigieren und Ihnen eine Zeit liefern, die fast so genau ist wie eine Atomuhr direkt am GPS-Empfänger.

Stratum Level 1-Server stellen also eine Verbindung zu Atomuhren oder GPS-Empfängern her, und NTP-Server stellen eine Verbindung zu ihnen her. Selbst wenn Sie eine Verbindung zu einem Server der Schichtstufe 2 oder 3 herstellen, der häufig angepasst wird, erhalten Sie eine in Nanosekunden gemessene Zeitgenauigkeit. Wenn Sie jedoch ein besseres Timing benötigen, stellen Sie eine Verbindung zu einem Server der Schicht 1 her, oder kaufen Sie einen geeigneten GPS-Empfänger für die Zeitmessung und werden Sie selbst zu einer Quelle der Schicht 1.


4
Es gibt viele, viele Leute, die Raspberry PI-Computer mit billigen GPS-Empfängern in Stratum 1-NTP-Server verwandeln. Sie können einen vollständigen Stratum Level 1-Server für unter 80 US-Dollar in Ihrem Netzwerk haben: google.com/search?q=raspberry+pi+ntp+gps+pps
Adam Davis

2
Theoretisch könnte ein Smartphone mit einem GPS-Empfänger (mittlerweile fast alle) ein Stratum 0/1-Gerät sein?
Bob

1
Wenn das Telefon den pps-Ausgang des GPS-Empfängers verwendet hat, ja. Beachten Sie, dass CDMA-Telefone ebenfalls ein genaues Timing verwenden müssen, sodass der CDMA-Chipsatz auch eine Schicht-Level-0-Quelle für den Prozessor des Telefons sein kann. Ein OEM-GPS-Modul und Himbeer-Pi wäre allerdings billiger.
Adam Davis

2
Ein Raspberry Pi ist jedoch kein hervorragender NTP-Server, da er einen etwas schuppigen Netzwerkadapter mit geringer Qualität (den LAN9512-Chip) verwendet.
Duskwuff

1
@duskwuff Ja, aber es ist besser als viele Stratum Level 2-Server über das Internet, und mit richtig konfigurierten NTP-Einstellungen sowohl auf dem Server als auch auf dem Client kann der durch den USB-basierten LAN-Chip geringer Qualität verursachte Jitter und Offset überwunden werden. Für die Kosten ist es schwer zu schlagen, aber etwas mehr ausgeben und Sie können dieses kleinere Problem beheben.
Adam Davis

3

Alle Takte driften bis zu einem gewissen Grad, dies hängt von der Quelle des Taktsignals und dessen Nachverfolgung ab. In einem PC ist dies heutzutage die HPET, aber der PC kann den Überblick darüber verlieren, wie viele Ticks bei Überlastung vergangen sind.

Die NTP-Server, mit denen Ihr Computer spricht, verlieren wahrscheinlich ebenfalls Zeit. Sie verschieben jedoch ihre Zeit zurück zu einer besseren Quelle.

Letztendlich sind hochgenaue Uhren wie Atomuhren die besseren Quellen. Sie können sich NTP als ein Netzwerk von Maschinen vorstellen, von denen jede über eine Reihe von Quellen verfügt, auf die sie sich für die Zeit stützt, und die ihre eigene Zeit auf die als genauer erachtete Zeit verstellt.

Dies wird durch eine Quelle geregelt, die ihre Schicht angibt. Eine Atom- oder GPS-Uhr ist Schicht 0 und die Autorität über die Uhrzeit. Jede Schicht davon ist die nächste Schicht - Schicht 1, und überprüft eine Anzahl von Schichten-0-Quellen zusammen mit Gleichaltrigen auf derselben Ebene, um die Zeitquellen auf vernünftige Weise zu überprüfen.

Sie sprechen wahrscheinlich mit einer Zeitquelle der Schicht 2 oder 3.


1

Was die anderen geschrieben haben, ist wahr: Ein Stratum 1-Server bezieht seine Zeit von einem Stratum 0-Gerät. Ich weiß nicht, in welchen Zeitabständen das passiert, aber ich denke, dass sie dort ziemlich genau sind.

Ein Stratum n-Server mit n> 1 erhält seine Zeit über NTP von einem Stratum n-1-Server. Das heißt, es synchronisiert sich in regelmäßigen Abständen. Beim Starten des NTP-Dienstes erfolgt die Synchronisierung in recht kurzen Intervallen, und mit der Zeit nehmen die Intervalle zu. Schließlich ist das Intervall so groß wie 1024 s, ungefähr 17 Minuten.

Was nicht angesprochen wurde, ist die Frage, was zwischen diesen beiden Ereignissen passiert? Nun, es gibt eine Einrichtung namens Drift-Datei . Es hilft NTP, jegliche Abweichung zwischen der lokalen Uhr und der Referenzuhr zu überwachen. Die Frequenz der lokalen Uhr wird dann entsprechend der erkannten Abweichung angepasst, so dass die Zeit auch zwischen Serverabfragen genau ist.

Andere NTP-Implementierungen verwenden möglicherweise andere Funktionen, aber eines ist häufig: die Notwendigkeit und die Fähigkeit, die Taktfrequenz anzupassen.


Ich würde jedoch argumentieren, dass die Drift-Datei ein Implementierungsdetail einer bestimmten Software-Implementierung ist und nicht damit zusammenhängt, wie genau die Hardware-Uhr des NTP-Servers sein kann.
ein CVn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.