Angenommen, ein Computer verfügt über eine genaue Uhr, die nicht initialisiert wurde. Das heißt, die Uhrzeit auf der Uhr des Computers ist die Echtzeit zuzüglich eines konstanten Versatzes. Der Computer hat eine Netzwerkverbindung und wir möchten diese Verbindung verwenden, um den konstanten Offset zu bestimmen .
Die einfache Methode besteht darin, dass der Computer eine Abfrage an einen Zeitserver sendet und dabei die Ortszeit notiert . Der Zeitserver empfängt die Abfrage zu einem Zeitpunkt und sendet eine Antwort, die zurück an den Client, der sie zu einem Zeitpunkt empfängt . Dann ist , dh .
Wenn die Netzwerkübertragungszeit und die Server-Verarbeitungszeit symmetrisch sind, ist . Soweit mir bekannt ist, gehtNTP, das in freier Wildbahn verwendete Zeitsynchronisationsprotokoll, von dieser Annahme aus.
Wie kann die Präzision verbessert werden, wenn die Verzögerungen nicht symmetrisch sind? Gibt es eine Möglichkeit, diese Asymmetrie in einer typischen Internetinfrastruktur zu messen?
quelle
Antworten:
Unfähigkeit, Asymmetrie zu messen
Nein, Sie können die Asymmetrie nicht messen. Betrachten Sie diese beiden Kommunikationsdiagramme, das erste mit einem negativen Taktversatz und gleichen Verzögerungen und das zweite ohne Taktversatz und mit vollständig asymmetrischen Verzögerungen (aber derselben Umlaufzeit).
Wichtig ist, dass die beiden Interaktionen aus Sicht von PC und Server exakt identisch sind. Sie erhalten gleichzeitig Nachrichten. Sie senden gleichzeitig Nachrichten.
Sie können weitere Fälle erstellen, indem Sie die PC-Zeitachse "greifen" und verschieben und die Sende- / Empfangspunkte für Nachrichten im Verhältnis zu den jeweiligen Zeitachsen festhalten. Die von Ihnen verursachten Asymmetrien werden durch den Taktversatz genau negiert. Tatsächlich können Sie Nachrichten sogar in eine Richtung ZURÜCKVERKEHREN lassen (solange die Umlaufzeit noch dieselbe ist), und der Server / Client kann dies NOCH nicht feststellen!
Daher ist es unmöglich, Latenzasymmetrien zu messen. Im schlimmsten Fall, wenn Sie keine anderen Informationen als diese Einweglatenzen haben, sind diese positiv und summieren sich auf die Umlaufzeit. Die Genauigkeit der Uhrensynchronisation ist auf die Umlaufzeit beschränkt.
Kann die Zwischeninfrastruktur helfen?
Ob die Zwischeninfrastruktur helfen kann oder nicht, hängt stark von Ihrem theoretischen Modell der Situation ab.
Wenn die Asymmetrie konstant ist und die Zwischeninfrastruktur die Router auf dem Kommunikationspfad zwischen Ihnen und dem Server ist, dann nein. Selbst wenn jeder Router seine Uhr mit dem benachbarten Router synchronisiert hätte, würden sich die Fehler auf dieselbe Weise verschlimmern, als hätten Sie über die Kommunikation zwischen den Routern mit dem Server synchronisiert.
In der realen Welt können Sie sich darauf verlassen, dass Verzögerungen aus architektonischen Gründen etwas symmetrisch sind, dass wiederholte Synchronisationen Asymmetrien aufgrund von Verzögerungen in der Warteschlange (usw.) reduzieren und dass mehrere Kommunikationspfade andere Arten von Asymmetrien reduzieren.
Wenn Sie die Annahmen Ihres Modells irgendwo dazwischen setzen (da es natürlich interessant ist, den Modellraum zu erkunden), erwarte ich, dass das Ergebnis auch irgendwo dazwischen liegen sollte.
quelle
Betrachten wir ein Netz von Zeit - Server bekannt ist, dass synchron, , und einen Client - Rechner P .θ={A,B,C} P
Lassen Sie die eine Art und Weise Flugzeit von Maschine seiner X auf Maschine Y , mit der Möglichkeit , dass T X Y ≠ T Y X .TXY X Y TXY≠TYX
Sei sein , das Maß für die Asymmetrie zwischen Maschinen X und Y .ΔXY=|TXY−TYX| X Y
Angenommen, die Asymmetrie zwischen zwei Synchronmaschinen kann gemessen werden, indem die Synchronmaschinen damit einverstanden sind, gleichzeitig eine Einwegnachricht aneinander zu senden. Die Differenz der Ankunftszeiten beträgt zwischen diesen Maschinen, dh:Δ
kann gemessen werden.
Betrachten Sie nun die Flugzeit der Schaltkreise:
, bezeichnet mit C A B ,P→ A → B → P CA B
, bezeichnet durch C B A .P→ B → A → P CB A
Es sei angenommen, dass die Client-Maschine beide dieser Schaltungen gleichzeitig initiiert und die Differenz der Ankunftszeiten x misst :P x
Sowohl & Dgr; A B sind durch zuvor erwähnte Messungen bekannt, so dass die Unbekannten nach links verschoben werden:x ΔAB
In ähnlicher Weise für und { C B C , C C B } es kann gezeigt werden , daß:{CAC,CCA} {CBC,CCB}
Inspizieren sorgfältig, stellen wir fest , dass . Die linke Seite enthält aus Messungen bekannte Werte, die rechte Seite enthält 3 Unbekannte in 3 Gleichungen.ΔXY≡ΔYX
Gleichzeitig lösen,
woher,
quelle
Wenn Sie nur die Endpunkte steuern. Das kannst du nicht. Siehe Craigs Antwort.
Selbst wenn Sie mehr Maschinen und eine komplexere Gruppe von Computern hinzufügen, wie in Bingos Antwort, können Sie sich auf Maschinen beschränken, bei denen die synchronisierten sofort auf die anderen zugreifen können (Verzögerung = 0).TXY
Beachten Sie, dass Sie, wenn Sie tun , Δ A P = Δ B P = Δ C P = 0 erhalten .TAB=TBC=TCA=0 ΔAP=ΔBP=ΔCP=0
Also was kannst du tun? Senden Sie eine wirklich gute Uhr per Post. ;)
Wenn Sie die Kontrolle über alle Knoten zwischen ihnen haben, können Sie die Zeit für die Verarbeitung jedes Pakets überprüfen und die Verzögerung zwischen jedem aufeinanderfolgenden Paar berechnen, die symmetrisch sein sollte, wenn beide das gleiche physische Medium verwenden.
Möglicherweise müssen Sie die allgemeine Relativitätstheorie berücksichtigen und sich daran erinnern, dass keine Gleichzeitigkeit besteht.
quelle
Der Client hat nach Empfang des Rückpakets alle 4 Werte und berechnet den tatsächlichen Offset. Sobald der relative Versatz zwischen Client und Server berechnet wurde, kann der Versatz "absolute Zeit" synchronisiert werden, dh der Client kann den exakten Versatz des Servers, der gemessen wurde, in Bezug auf seinen lokalen Zeitversatz, dh das "Delta", genau schätzen.
In Netzwerken hängt die Verzögerungszeit von zwei Hauptfaktoren ab, hauptsächlich von der Latenz und der Bandbreite.
Ein grundlegender Algorithmus zur Verbesserung der Genauigkeit der Berechnung des in NTP verwendeten Offsets (und zur Korrektur einer gewissen zufälligen Netzwerklatenz) besteht darin, den Vorgang mehrmals zu wiederholen und die "Spitze des Keilstreuungsdiagramms" zu verwenden. Dies ist auf dem "Taktfilteralgorithmus" auf Folie 10 dieser PPT auf NTP von David Mills zu sehen. Siehe auch Taktfilteralgorithmus von Mills. (Beachten Sie, dass es weiterhin zwischen einem einzelnen Server und einem Client verwendet werden kann, obwohl der allgemeine Code so geschrieben wurde, dass mehrere Server zulässig sind.) Dies ist Teil der in NTP-Architektur und -Algorithmen beschriebenen "Minderungsalgorithmen" .
quelle
Wenn wir nur Pakete in der Zeit zurückschicken könnten
Annahmen:
quelle
Hier ist eine Idee, die für mich absolut überzeugend klingt und daher auf dumme Weise absolut falsch sein könnte.
1] Ich denke, die Annahmen sind natürlich und notwendig. Sie können mit der Hoffnung begründet werden, dass sich die jeweiligen Mengen für die Dauer unseres Synchronisationsversuchs nicht zu stark ändern .
quelle