Ich habe einen Weg gefunden, BEIDES herauszufinden, welcher Knoten wer ist (dh wer die längere Nachrichtenverzögerung hat) UND die Einweg-Auslöseverzögerung abzuschätzen. Die anderen Antworten sind zwar korrekt, sie berücksichtigen jedoch NUR die Annäherung an die direkte Taktmessung, was natürlich nicht funktionieren kann. Wie ich hier beweise, ist dies jedoch nur ein Teil der Geschichte, da hier mein Arbeitsalgorithmus für das Obige ist:
Angenommen, wie im wirklichen Leben:
Links mit endlicher Bandbreite b
Jeder Knoten hat eine eindeutige Adresse (zB A und B)
Die Paketgröße p ist viel kleiner als das Latenzprodukt für Bandbreite *
Die Knoten A und B können den Kanal füllen
Knoten haben eine zufällige () Funktion
Jeder Knoten füllt den Kanal mit seinen eigenen Paketen (mit A oder B markiert) ODER leitet die von anderen Knoten empfangenen Pakete wie folgt weiter:
Always fill the channel with my own packets except:
if I receive a packet from another node then
Randomly choose to
either forward that packet from the other node
or discard that packet and forward my own packet
Intuitive Erklärung
Da das Latenzprodukt für Bandbreite * von A höher ist (weil die Latenz höher ist), kann A mehr Pakete empfangen als B, sodass jeder Knoten wissen kann, wer sie im Diagramm sind .
Weiterhin mit genügend Konvergenzzeit wird bezeichnen obigen Algorithmus des Laufens das Verhältnis von Paketen , von A zu B das tatsächliche Verhältnis von RTT Verzögerung von A nach B und damit die gewünschte OTT .
VERFOLGUNG DER SIMULATIONSERGEBNISSE
Hier ist eine Simulation, die das Obige beweist und zeigt, wie A erfolgreich in Richtung einer Verzögerung von 3 Sekunden und B in Richtung einer Verzögerung von 1 Sekunde konvergiert:
Erläuterung der Figuren:
Jede Zeile repräsentiert 1 Sekunde der Zeit (die Paketgröße wird aus Gründen der Klarheit so gewählt, dass sie 1 Sekunde Übertragungszeit hat). Beachten Sie, dass jeder Knoten den Algo jederzeit und nicht in einer bestimmten Reihenfolge oder Zeit starten kann. Die Spalten lauten wie folgt:
NODE A empfängt: Was Node A auf seiner Empfangsseite sieht (dies ist auch P4 unten)
Knoten A injiziert: Was Knoten A aussendet (beachten Sie, dass dies A oder zufällig A oder B ist)
P1, P2, P3: Die drei Pakete, die zwischen A und B (in der Reihenfolge) übertragen werden (1 Sekunde bedeutet, dass 3 Pakete für eine Latenz von 3 übertragen werden)
NODE B empfängt: Was B auf seiner Empfangsseite sieht (dies ist P3)
NODE B injiziert: Was B aussendet (beachten Sie, dass dies B ist oder zufällig A oder B pro Algo)
P4: Das Paket auf dem Weg von B nach A (siehe auch P1, P2, P3)
A zählt A: Was A für die A-Pakete zählt, die es gesehen hat
A zählt B: Was A für die B-Pakete zählt, die es gesehen hat
B zählt A: Was B für die A-Pakete zählt, die es gesehen hat
B zählt B: Was B für die B-Pakete zählt, die es gesehen hat
A-> B: Die Latenz, die A in Richtung B schätzt (Verhältnis der RTT von 4 Sekunden basierend auf den gesehenen Paketen)
B-> A: Die Latenz, die B in Richtung A schätzt (Verhältnis der RTT von 4 Sekunden basierend auf den gesehenen Paketen)
Wie wir sehen können, konvergieren beide Knoten und bleiben um ihre wahre Latenz herum (tatsächlich sehen wir das für A nicht, weil mehr Sekunden benötigt werden, um zu konvergieren, aber es konvergiert dasselbe Verhalten wie B)
Bessere Filter könnten schneller konvergieren, aber wir können deutlich sehen, wie sie beide um die korrekten Werte für ihre Verzögerungen konvergieren, daher können sie genau sie ihre Verzögerung kennen (obwohl ich ihre Schätzung nur zur Veranschaulichung zeige).
Auch wenn die Bandbreiten zwischen den Verbindungen unterschiedlich sind, könnte das obige Verfahren immer noch gelten (obwohl man sich mehr Gedanken darüber machen muss, um sicherer zu sein), indem Paketpaare verwendet werden, um Bandbreitenschätzungen herauszufinden, und dann einfach auf die obige Proportionsgleichung angewendet werden.
Schlussfolgerung
Wir haben einen Algorithmus bereitgestellt, mit dem sowohl A als auch B ihre Position im Netzwerk und ihre Latenz zum anderen Knoten für das obige Diagramm kennen. Wir verwendeten eine Schätzmethode für die Netzwerkmessung anstelle von taktbasierten Ansätzen, die aufgrund von Problemen mit der rekursiven Taktsynchronisation in der Tat nicht zu einer Lösung führen können.
Hinweis: Ich habe diese Antwort jetzt bearbeitet und alle Simulationen bereitgestellt, da mir niemand glauben würde, dass ich sie gelöst habe, wie Sie in den ersten Kommentaren sehen können. Hoffentlich kann jemand mit diesen Ergebnissen überzeugter sein und jedem helfen, mindestens einen Fehler oder eine Richtigkeit in diesem Netzwerk-Messrätsel zu finden!