He encontrado una manera de AMBOS descubrir qué nodo es quién (es decir, quién tiene el retraso de mensaje más largo) Y estimar el retraso de viaje de ida. Si bien las otras respuestas son correctas, SOLO están considerando la medición directa del reloj que, por supuesto, no puede funcionar. Sin embargo, como estoy demostrando aquí, esto es solo una parte de la historia, ya que aquí está mi algoritmo de trabajo para lo anterior:
Asumir como en la vida real:
Enlaces de ancho de banda finito b
Cada nodo tiene una dirección única (por ejemplo, A y B)
Tamaño de paquete p mucho más pequeño que el ancho de banda * producto de latencia
Los nodos A y B pueden llenar el canal
Los nodos tienen una función aleatoria ()
Cada nodo llena el canal con sus propios paquetes (marcados con A o B respectivamente) O reenvía los paquetes que recibió de otros nodos de la siguiente manera:
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
Explicación intuitiva
Dado que el producto de latencia de ancho de banda * de A es mayor (porque la latencia es mayor) A logrará recibir más paquetes que B, por lo tanto, cada nodo puede saber quiénes son en el diagrama .
Además, con suficiente tiempo de convergencia de ejecución por encima del algoritmo, la proporción de paquetes de A a B denotará la proporción real de retraso RTT de A a B y, por lo tanto, la OTT deseada .
RASTREO DE RESULTADOS DE SIMULACIÓN
Aquí hay una simulación que demuestra lo anterior y muestra cómo A converge exitosamente hacia un retraso de 3 segundos y B converge alrededor de un retraso de 1 segundo:
Explicación de las figuras:
cada línea representa 1 segundo de tiempo (el tamaño del paquete se elige para tener 1 segundo de tiempo de transmisión para mayor claridad). Tenga en cuenta que cada nodo puede iniciar el algoritmo en cualquier momento, no en una secuencia o tiempo particular. Las columnas son las siguientes:
NODO A recibe: lo que ve el nodo A en su lado receptor (esto también es P4 a continuación)
NODO A inyecta: qué nodo A envía (tenga en cuenta que esto es A, o aleatoriamente A o B)
P1, P2, P3: los tres paquetes que están en tránsito (en orden) entre A y B (1 segundo de transmisión significa que 3 paquetes están en tránsito para una latencia de 3)
NODO B recibe: lo que B ve en su lado receptor (esto es P3)
NODE B inyecta: lo que B envía (tenga en cuenta que esto es B, o aleatoriamente A o B por algo)
P4: El paquete en tránsito de B a A (ver también P1, P2, P3)
A cuenta A: lo que A cuenta para los paquetes A que ha visto
A cuenta B: lo que A cuenta para los paquetes B que ha visto
B cuenta A: lo que B cuenta para los paquetes A que ha visto
B cuenta B: lo que B cuenta para los paquetes B que ha visto
A-> B: La latencia que A estima hacia B (relación de RTT de 4 segundos según los paquetes vistos)
B-> A: La latencia que B estima hacia A (relación de RTT de 4 segundos según los paquetes vistos)
Como podemos ver, ambos nodos convergen y permanecen alrededor de su latencia verdadera (en realidad no vemos eso para A porque se necesitan más segundos para converger pero sí converge el mismo comportamiento que B)
Los mejores filtros podrían converger más rápido, pero podemos ver claramente cómo ambos convergen en torno a los valores correctos para sus retrasos, por lo tanto, pueden saber exactamente cuál es su retraso (aunque estoy mostrando su estimación solo como ilustración).
Además, incluso si los anchos de banda entre los enlaces son diferentes, el método anterior podría mantenerse (aunque uno tendrá que pensarlo más para estar más seguro) al usar pares de paquetes para calcular las estimaciones de ancho de banda y luego simplemente aplicar a la ecuación de proporción anterior.
Conclusión
Proporcionamos un algoritmo para que A y B conozcan su posición en la red y conozcan su latencia al otro nodo para el diagrama anterior. Utilizamos un método de estimación de medición de red en lugar de enfoques basados en el reloj que, de hecho, no pueden conducir a una solución debido a un problema de sincronización del reloj recursivo.
Tenga en cuenta que ahora edité esta respuesta proporcionando todas las simulaciones porque nadie me creería. Lo resolví hasta donde puede ver en los primeros comentarios. ¡Esperemos que con estos resultados alguien pueda estar más convencido y aprobar ayudar a todos al menos a encontrar un error o corrección en este rompecabezas de medición de red!