Gibt es Forschungsmaterial zur NTP-Genauigkeit?

13

Soweit ich weiß, hängt die Genauigkeit der NTP-Synchronisation stark vom Netzwerk ab. Ich habe im Internet einige Zahlen von 50 Mikrosekunden bis "unter einer Sekunde" gesehen. Das ist ein großer Unterschied.

Ich glaube, Genauigkeitsabhängigkeit ist eine große Frage, die untersucht werden muss, aber bisher konnte ich kein Material finden, aus dem eindeutig hervorgeht, dass beispielsweise eine bestimmte Konfiguration diese bestimmte Genauigkeit gewährleistet.

Es heißt auf http://www.ntp.org/ntpfaq/NTP-s-algo.htm :

Ein Zeitunterschied von weniger als 128 ms zwischen Server und Client ist erforderlich, um die NTP-Synchronisation aufrechtzuerhalten. Die typische Genauigkeit im Internet reicht von etwa 5 ms bis 100 ms, möglicherweise abhängig von Netzwerkverzögerungen. Eine kürzlich durchgeführte Umfrage [2] ergab, dass 90% der NTP-Server Netzwerkverzögerungen von weniger als 100 ms aufweisen und etwa 99% innerhalb einer Sekunde mit dem Synchronisations-Peer synchronisiert sind.

Mit der PPS-Synchronisation ist auf einem Pentium-PC (zum Beispiel unter Linux) eine Genauigkeit von 50µs und eine Stabilität unter 0,1 PPM erreichbar.

Das ist etwas, aber vielleicht gibt es eine gründlichere Analyse zu diesem Thema?

akalenuk
quelle
3
Obwohl ich denke, dass diese Frage überhaupt keinen Forschungsaufwand darstellt und auf dieser Grundlage abstimmt - es ist nicht einmal klar, dass das OP irgendetwas von dem Material auf ntp.org gelesen hat -, halte ich es für eine rechtmäßige Frage und würde gegen die Schließung von argumentieren diese Basis. Es ist keine Zeitverschwendung, zu wissen, warum ein Protokoll so funktioniert, wie es angekündigt wurde, anstatt es blind zu implementieren und auf das Beste zu hoffen.
MadHatter
Vielen Dank für die Aktualisierung der Frage. Ich habe meine Ablehnung widerrufen. Das heißt, Sie finden es vielleicht ärgerlich, zurückgeschickt zu werden, woher Sie gekommen sind, aber wenn Sie uns nicht sagen, wo Sie waren, als Sie die Frage gestellt haben, wie können wir das wissen? Ich stelle auch fest, dass der Text, den Sie oben veröffentlichen, einen Verweis auf eine wissenschaftliche Arbeit enthält, in der die Genauigkeit von NTP-Servern untersucht wird. Haben Sie das gelesen und wenn ja, können Sie angeben, warum das nicht genug war?
MadHatter
Meinetwegen. Das Papier ist eine 14 Jahre alte Gesamtumfrage zum NTP-Netzwerk. Es hat weitere Links, aber alle sind natürlich noch älter. Ich habe Google Scholar und CiteSeer ausprobiert, aber die meisten Links sind dieselben Werke von Mills und Millnar aus den neunziger Jahren. Ich stöbere immer noch, aber ich bin ein bisschen weit vom Thema entfernt, und dies kann viel Zeit in Anspruch nehmen. Deshalb habe ich mich entschlossen, die Community um Hilfe zu bitten.
Akalenuk
1
NTP hat sich seit mindestens 14 Jahren nicht geändert. Warum hat sich die Genauigkeit signifikant geändert? Wie weiter unten erwähnt, soll NTP nicht sehr genau sein, sondern innerhalb von 1s (woher stammt dieses unterinformierte Zitat wahrscheinlich). Wenn Sie eine Genauigkeit von weniger als 1 ms benötigen, sollten Sie PTP verwenden. Ich kann wirklich keinen Wert darin sehen, die Genauigkeit von etwas zu untersuchen, das in einem sehr breiten Einsatz genau das tut, was es tun soll.
Chris S
2
Tatsächlich, Chris, machen die beiden zitierten Arbeiten deutlich, dass sich die Genauigkeit von NTP-Servern im Internet (nicht das Protokoll selbst, das immer ausgezeichnet war) zwischen 1999 und jetzt verbessert hat . Ich vermute, das liegt zum einen daran, dass das Internet besser ist - die Latenzen sind etwas geringer und viel weniger variabel als früher - und zum anderen daran, dass sich die Qualität von S1-Servern verbessert hat (laut dem Papier von 1999 ist die häufigste Taktquelle für S1-Server die OS Uhr!). Ich bin froh, dass das OP diese Frage gestellt hat. Ich denke, es lohnt sich.
MadHatter

Antworten:

14

Niemand kann garantieren, wie gut NTP in Ihrem Netzwerk funktioniert, da niemand weiß, wie gut Ihr Netzwerk mit dem Internet und den darauf befindlichen Zeitservern verbunden ist. Allerdings laut Uhrendisziplin-Algorithmus-Seite auf ntp.org

Wenn ein NTP-Client in einem schnellen LAN in einer Heim- oder Büroumgebung ununterbrochen ausgeführt wird, kann er die Synchronisation nominal innerhalb einer Millisekunde aufrechterhalten. Wenn die Schwankungen der Umgebungstemperatur weniger als ein Grad Celsius betragen, wird die Taktoszillatorfrequenz auf einen Teil pro Million (PPM) reduziert, selbst wenn der native Frequenzversatz des Taktoszillators 100 PPM oder mehr beträgt.

Beachten Sie, dass eine große, aber stabile Latenz zwischen Ihrem LAN und den Uhrenservern des Internets die Genauigkeit nicht so stark beeinträchtigt wie eine sehr variable Latenz.

Sie sagen nicht, woher Sie die obigen Schätzungen haben ('50 Mikrosekunden bis ... "unter einer Sekunde"), daher kann ich sie nicht kommentieren, aber meiner Erfahrung nach ist 50us unwahrscheinlich, es sei denn, Sie haben eine direkt angehängte Clock-Quelle und 1s ist unwahrscheinlich, es sei denn, Sie haben eine feuchte Schnur, die Sie mit dem Internet verbindet, und Sie verwenden Upstream-Server in der Antarktis.

Bearbeiten : Der Text, den Sie jetzt in Ihrer Frage zitieren, gibt einen Hinweis auf ein Papier, in dem 1999 festgestellt wurde, dass 99% der NTP-Server innerhalb einer Sekunde synchronisiert sind. Zum Glück gibt es neuere Arbeiten; In diesem Artikel haben einige Autoren der brasilianischen Federal University of Parana das Experiment im Jahr 2005 wiederholt und festgestellt (wenn ich deren Abbildung 1 richtig verstehe), dass nördlich von 99% - eher 99,5% - der Server jetzt weniger Offsets haben als 100ms, und dass 90% Offsets von weniger als 10ms haben. Das passt ziemlich gut zu meinen Erfahrungen (siehe oben).

Edit 2 : Eine letzte Falte: In all diesen Studien wird nicht untersucht, wie genau die lokale Uhr ist, sondern wie weit sie sich von der vorgelagerten Referenzuhr unterscheidet. Das ist offenbar nicht dasselbe. Aber der erste ist unerkennbar; Um zu wissen, wie falsch Ihre Uhr ist, müssen Sie genau wissen, wie spät es ist, und wenn Sie das gewusst hätten, warum hätten Sie Ihre Uhr überhaupt falsch eingestellt? Beachten Sie jedoch, dass diese Studien nicht den Unterschied zwischen lokaler Uhr und absoluter Zeit messen , sondern zwischen lokaler Uhr und Referenzuhr.

MadHatter
quelle
+1 Ich habe auch einen Pool-Server betrieben,> 20 ms Drift, die landesweit überwacht wurden, waren ungewöhnlich.
Chris S
9

Welches Problem versuchen Sie zu lösen?

Die Lösung für Umgebungen, die eine höhere Genauigkeit als NTP erfordern, ist das Precision Time Protocol (PTP) . Ich hatte es in wissenschaftlichen und finanziellen Computeranwendungen. Es gibt jedoch Kompromisse .

Siehe auch: ptp-Zeitsynchronisation auf centos6 / rhel

ewwhite
quelle
4
"Welches Problem versuchst du zu lösen?" Meine Lieblingsfrage - ich stelle sie die ganze Zeit.
mfinni
@mfinni, Wenn Sie den ersten Rang Ihrer Kunden vergeben müssen (z. B. HFT ), ist es hilfreich, Ihre Zeit genau einzuhalten .
Pacerier
6

Einige andere erwähnenswerte Dinge:

  • Sie können sich glücklich schätzen, dass auf einer virtuellen Maschine weniger als 100 ms Taktschwankungen auftreten. Das Folgende gilt also nur für einen physischen Host
  • Jitter unter 100 ms ist für fast jede Aufgabe nahezu unermesslich und über das Internet leicht zu erreichen
  • Für einige Umgebungen mit allgemeinen Diensten kann ein Jitter von weniger als 30 ms erforderlich sein (ich brauchte ihn für die Protokollkorrelation bei einem früheren Auftrag). Dies lässt sich problemlos mit NTP-Servern auf demselben Kontinent erreichen, auf dem die Verbindung nicht über "Consumer" -Verbindungen (z. B. nicht über Satellit) erfolgt , ADSL, DOCSIS, GPON, UMTS / LTE / HSPA / usw.)
  • Für eine absolute Genauigkeit darunter sollten Sie Hardware-NTP-Server von einem Qualitätsanbieter (z. B. Symmetricom) installieren.
  • Eine lokale Vereinbarung von weniger als 10 ms (häufig weniger als 1 ms) kann leicht erreicht werden, indem Sie einfach ein Trio (Sie können mit weniger auskommen, aber es gibt Gründe, drei oder fünf zu verwenden) in einem Rechenzentrum haben, das für so gut wie jede nicht-wissenschaftliche Anwendung ausreicht
LapTop006
quelle
5

Eigeninteresse meinerseits: Ich bin ein Meinberg-Agent :-)

Ja. NTP kann eine End-to-End-Genauigkeit von bis zu ca. 50 us (das sind Mikrosekunden) Jitter, wenn Sie einen Linux- "Client" auf Bare Metal mit Chrony oder ntpd mit einem Linux-basierten NTP-Server synchronisieren, der von einem GPS, einer lokalen Atomuhr oder einer ähnlichen Quelle gesteuert wird.

Auf dem Computer mit lokalem GPS (mit einer PPS-Verbindung) werden zwischen der im Betriebssystem ausgeführten ntpd-Instanz und der Eingabe des PPS-Refclock-Treibers wahrscheinlich 0-2 Mikrosekunden Versatz angezeigt.

Diese verbleibenden 50 us "Ende an Ende über ein LAN" sind das Ergebnis mehrerer Pufferstufen, variabler IRQ-Latenz, anderen Datenverkehrs, der das LAN und die beteiligten Computerbusse stört, und so weiter. 50 us bedeutet ein LAN mit sehr wenig Verkehr. Sogar ein Switch kann einige Mikrosekunden Jitter verursachen - und High-End-Switches mit komplexen Funktionen sorgen für mehr Latenz und Jitter. Mit anderen Worten, es kann ziemlich schwierig sein, diese 50 Mikrosekunden unter realen Bedingungen in einem praktischen LAN zu erreichen.

In ähnlicher Weise resultieren diese cca <2us des PPS-Offsets nur aus der Unsicherheit der IRQ-Latenz und dem allgemeinen Jitter der Buslatenz auf gut verhaltener PC-Hardware.

Beachten Sie, dass NTP und seine Implementierungen ntpd und Chrony zweifellos die NTP-Transaktions-Roundtrip-Zeit messen und eine Hälfte dieser Roundtrip-Zeit subtrahieren (tatsächlich addieren), um die systematische Transportlatenz herauszufiltern (in eine Richtung). Sie führen auch eine Ausreißer-Ablehnung, einen Quorum-Konsens, eine Syspeer-Wahl durch und jeder NTP-Dämon filtert die Antworten, die er auf seine vorgelagerten Abfragen erhält. Die Millisekunden, die Sie in Ping und Traceroute sehen, verschieben Ihre lokale Uhr also nicht direkt. Entscheidend ist die Variabilität des Transaktions-Roundtrips, dh des sonstigen Datenverkehrs auf dem Pfad zu Ihrem vorgelagerten NTP-Server. Ntpq -p ist dein Freund.

Ein grundlegender GPS-Empfänger für die Zeitmessung mit einem TCXO kann möglicherweise 100-200 ns verbleibenden Jitter + Wander auf seinem PPS-Ausgang haben. Genug für NTP, solange das GPS gesperrt bleibt. (Die Holdover-Leistung ist bei TCXOs nicht sehr gut.) Ein GPS mit Qualitäts-Timing mit einem OCXO kann deutlich innerhalb von 100 ns liegen, vielleicht eher 10-30 ns Restfehler (Offset von der globalen UTC).

Beachten Sie, dass Satelliten, die über Ihnen fliegen und Sie durch die Atmosphäre strahlen, für den Empfänger möglicherweise etwas schwieriger sind als das Benchmarking in einem Labor mit einem GPS-Generator.

PTP ist ein Hammer. Sie benötigen HW-Unterstützung beim Großmeister, bei den Slaves und bei allen Switches - aber wenn Sie all dies erhalten, sind Restoffsets im niedrigen zweistelligen Nanosekundenbereich möglich. Ich persönlich habe dies in ptp4l mit einer i210-Netzwerkkarte mit HW-Unterstützung (Zeitstempel mit einer Nanosekundenauflösung) gesehen.

Der i210-Chip ist ein Wunder. Es verfügt über 4 universelle Pins, die zur Eingabe oder Ausgabe eines PPS-Signals verwendet werden können. Das Referenz-Intel-NIC-Addon-Board mit i210 (und seine OEM-Versionen von mehreren großen Anbietern) ist mit einem Pin-Header ausgestattet, mit dem Sie auf mindestens zwei dieser GPIO-Pins (SDPs, die von Intel genannt werden) zugreifen können. Neben der Implementierung eines PTP-Grandmaster-Ports kann der PPS-Eingang für eine präzise Zeitstempelung bei der Paketerfassung genutzt werden. Sie benötigen eine präzise PPS-Quelle und eine benutzerdefinierte Software, um eine Servoschleife auszuführen und die PHC des i210 auf die ext.PPS abzustimmen. Dies führte auf meinem Prüfstand zu einstelligen ns (pro 1 s Iteration) des Restversatzes. Dies ist die Genauigkeit, die Sie dann in Ihren Erfassungszeitstempeln erhalten, Wenn Sie ein aktuelles tcpdump oder wireshark auf einem modernen Linux-Kernel ausführen (die gesamte Software benötigt Unterstützung für die Auflösung im Nanosekundenbereich). Besser noch: Ich bin den ganzen Weg gegangen und habe einen einfachen PLL-Synthesizer gebaut, um 25 MHz für die NIC-Takte zu erzeugen, der an eine präzise 10-MHz-Referenz vorgelagert ist. Danach fiel der verbleibende Offset in der Servoschleife meines Paketerfassungsgeräts auf eine saubere 0 (ein Beweis dafür, dass meine 10-MHz-Referenz mit der PPS von derselben GPS-Box phasensynchron ist).

Beachten Sie, dass PTP-Grandmaster angegeben werden können, um Zeitstempel mit einer tatsächlichen Granularität pro 8 ns bereitzustellen (in einem Datentyp mit einer Auflösung von 1 ns). Dies ist sinnvoll - Gigabit-Ethernet verwendet in der Regel einen 125-MHz-Takt, der als Byte-Takt in den Interna des MAC verwendet wird, dieser Takt wird wahrscheinlich auch im GMII verwendet, und er ist auch der Symboltakt in metallischem 1000Base-TX (vier Paare) parallel 2 Bits pro Symbol pro Paar). Wenn Sie also nicht 1000Base-FX (Glasfaser) mit SERDES und eine extremistische Implementierung der HW-Zeitstempeleinheit in der PHY verwenden, die auf einzelne SERDES-Bits beschränkt ist, sind diese 8 ns alles, worauf Sie bei Gigabit-Ethernet realistisch hoffen können. Einige Chip-Datenblätter (mit PTP-Unterstützung) behaupten sogar, dass der MII-Datenpfad nicht frei von Puffern ist und dass von dort Jitter ausgehen kann.

Die PTP-Pakete enthalten tatsächlich Zeitstempel, die in einem Datentyp gespeichert sind, der eine Auflösung im Subnanosekundenbereich ermöglicht. Das "Sub-Nanosekunden-Teilfeld" wird heutzutage jedoch typischerweise nicht mehr verwendet. AFAIR nur das White Rabbit-Projekt (im Zusammenhang mit CERN, dem Schweizer Forschungszentrum) hat bisher Sub-ns-Präzision implementiert.

PTP ist auch in reiner Software ohne HW-Beschleunigung verfügbar. In diesem Fall erwarten Sie für einen SW-basierten GM und einen SW-basierten Client einen ähnlichen Restjitter wie bei NTP - dh ungefähr 50 us in einem dedizierten, aber PTP-unbewussten LAN. Ich erinnere mich, dass ich von einem HW-Großmeister auf einer direkten Verbindung (ohne Zwischenschaltung) und einem Nur-SW-Client (auf einer PTP-PC-NIC ohne Kenntnisnahme) eine Präzision im Submikrosekundenbereich erhalten habe. Im Vergleich zu NTP konvergiert der PTP-Servo viel schneller.

Während ich einige "Hausaufgaben" machte, kam mir kürzlich der Gedanke, dass das Transportieren von PPS oder ähnlichen "diskreten" Zeitsignalen über großflächige Glasfaserrouten anfällig für temperaturabhängiges "Wandern" der Ausbreitungszeit sein kann. Und obwohl ich dies nicht experimentell testen kann, zitieren einige Quellen in den Zwischenwebs Zahlen zwischen 40 und 76 Pikosekunden pro km und Kelvin. Es ist zu beachten, dass diese Art von "thermischer Wanderung" bei der Simplex-PPS-Übertragung zwar nicht "im Band" gemindert werden kann, PTP dies jedoch aufgrund seiner Standard-Pfadverzögerungsmessungen (die von der Vollduplex-Übertragung abhängen) automatisch nachkompensieren würde.

Soviel zu einem Überblick darüber, wie die "Präzisionen" bei verschiedenen Timing-Technologien / Schnittstellen aussehen. Welche Genauigkeit für Sie gut genug ist, hängt von Ihrer Anwendung und Ihren tatsächlichen Anforderungen ab.

frr
quelle