Ho trovato un modo per ENTRAMBI scoprire quale nodo è chi (ovvero chi ha il ritardo del messaggio più lungo) E stimare il ritardo del viaggio di sola andata. Mentre le altre risposte sono corrette, stanno SOLO prendendo in considerazione la misurazione dell'orologio diretto che ovviamente non può funzionare. Tuttavia, come sto dimostrando qui, questa è solo una parte della storia in quanto qui è il mio algoritmo di lavoro per quanto sopra:
Assumi come nella vita reale:
Collegamenti di larghezza di banda finita b
Ogni nodo ha un indirizzo univoco (ad es. A e B)
La dimensione del pacchetto p è molto più piccola del prodotto di latenza della larghezza di banda *
I nodi A e B sono in grado di riempire il canale
I nodi hanno una funzione random ()
Ogni nodo riempie il canale con i propri pacchetti (contrassegnati rispettivamente con A o B) OPPURE inoltra i pacchetti ricevuti da altri nodi come segue:
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
Spiegazione intuitiva
Poiché il prodotto di latenza della larghezza di banda * di A è maggiore (poiché la latenza è maggiore) A riuscirà a ricevere più pacchetti di B, quindi ogni nodo può sapere chi sono nel diagramma .
Inoltre, con un tempo di convergenza sufficiente per l'esecuzione sopra l'algoritmo, il rapporto tra i pacchetti da A a B indicherà il rapporto effettivo del ritardo RTT da A a B e quindi l'OTT desiderato .
TRACCIA DEL RISULTATO DELLA SIMULAZIONE
Ecco una simulazione che dimostra quanto sopra e mostra come A convergere con successo verso un ritardo di 3 secondi e B convergere attorno a un ritardo di 1 secondo:
Spiegazione delle figure:
ogni riga rappresenta 1 secondo di tempo (la dimensione del pacchetto viene scelta per avere un tempo di trasmissione di 1 secondo per chiarezza). Si noti che ciascun nodo può avviare l'algo in qualsiasi momento, non in una sequenza o momento particolare. Le colonne sono le seguenti:
NODO A riceve: ciò che il nodo A vede nel suo lato ricevente (questo è anche P4 sotto)
NODE A inietta: quale nodo A invia (nota che è A, o casualmente A o B)
P1, P2, P3: I tre pacchetti in transito (in ordine) tra A e B (1 secondo di trasmissione significa che 3 pacchetti sono in transito per una latenza di 3)
NODE B riceve: ciò che B vede nel suo lato ricevente (questo è P3)
NODE B inietta: ciò che B invia (nota che è B, o casualmente A o B per algo)
P4: pacchetto in transito da B ad A (vedi anche P1, P2, P3)
A conta A: ciò che A conta per i pacchetti A che ha visto
A conta B: ciò che A conta per i pacchetti B che ha visto
B conta A: ciò che B conta per i pacchetti A che ha visto
B conta B: ciò che B conta per i pacchetti B che ha visto
A-> B: la latenza stimata da A verso B (rapporto di RTT di 4 secondi basato sui pacchetti visti)
B-> A: la latenza stimata da B verso A (rapporto di RTT di 4 secondi basato sui pacchetti visti)
Come possiamo vedere entrambi i nodi convergere e rimanere attorno alla loro vera latenza (in realtà non lo vediamo per A perché per convergere sono necessari più secondi ma converge lo stesso comportamento di B)
Filtri migliori potrebbero convergere più velocemente, ma possiamo vedere chiaramente come entrambi convergono attorno ai valori corretti per i loro ritardi, quindi possono esattamente conoscere il loro ritardo (anche se sto mostrando la loro stima solo a scopo illustrativo).
Inoltre, anche se le larghezze di banda tra i collegamenti sono diverse, il metodo di cui sopra potrebbe ancora essere valido (anche se si dovrà pensarci più per essere più certi) utilizzando coppie di pacchetti per capire le stime della larghezza di banda e quindi applicare all'equazione delle proporzioni sopra.
Conclusione
Abbiamo fornito un algoritmo per A e B per conoscere la loro posizione nella rete e conoscere la loro latenza sull'altro nodo per il diagramma sopra. Abbiamo usato un metodo di stima delle misure di rete piuttosto che approcci basati sull'orologio che in effetti non possono portare a una soluzione a causa di un problema di sincronizzazione dell'orologio ricorsivo.
Nota ora ho modificato questa risposta fornendo tutte le simulazioni perché nessuno mi crederebbe di averlo risolto per quanto si può vedere nei primi commenti. Spero che con questi risultati qualcuno possa essere più convinto e approvare per aiutare tutti almeno a trovare un errore o la correttezza in questo puzzle di misurazione della rete!