J'ai trouvé un moyen de DÉCOUVRIR quel nœud est qui (c'est-à-dire qui a le délai de message le plus long) ET d'estimer le délai de déplacement aller simple. Bien que les autres réponses soient correctes, elles envisagent UNIQUEMENT une mesure d'horloge directe qui, bien sûr, ne peut pas fonctionner. Cependant, comme je le prouve ici, ce n'est qu'une partie de l'histoire, car voici mon algorithme de travail pour ce qui précède:
Supposons que dans la vraie vie:
Liens de bande passante finie b
Chaque nœud a une adresse unique (par exemple A et B)
Taille de paquet p beaucoup plus petite que la latence de la bande passante *
Les nœuds A et B sont capables de remplir le canal
Les noeuds ont un aléatoire () fonction
Chaque nœud remplit le canal avec ses propres paquets (marqués respectivement A ou B) OU transfère les paquets qu'il a reçus d'autres nœuds comme suit:
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
Explication intuitive
Étant donné que le produit de latence de la bande passante * de A est plus élevé (car la latence est plus élevée), A réussira à recevoir plus de paquets que B, donc chaque nœud peut savoir qui ils sont dans le diagramme .
En outre, avec un temps de convergence suffisant pour exécuter l'algorithme ci-dessus, le rapport des paquets de A à B dénotera le rapport réel du délai RTT de A à B et donc l'OTT souhaité .
TRACE DE RÉSULTAT DE SIMULATION
Voici une simulation qui prouve ce qui précède et montre comment A converge avec succès vers un retard de 3 secondes et B converge autour d'un retard de 1 seconde:
Explication des figures:
Chaque ligne représente 1 seconde de temps (la taille du paquet est choisie pour avoir 1 seconde de temps de transmission pour plus de clarté). Notez que chaque nœud peut démarrer l'algo à tout moment, pas dans une séquence ou un moment particulier. Les colonnes sont les suivantes:
NODE A reçoit: ce que le nœud A voit de son côté récepteur (c'est également P4 ci-dessous)
NODE A injecte: ce que le nœud A envoie (notez que c'est A, ou au hasard A ou B)
P1, P2, P3: Les trois paquets qui sont en transit (dans l'ordre) entre A et B (1 seconde de transmission signifie que 3 paquets sont en transit pour une latence de 3)
Le NŒUD B reçoit: ce que B voit de son côté récepteur (c'est P3)
NODE B injecte: ce que B envoie (notez que c'est B, ou au hasard A ou B par algo)
P4: le paquet en transit de B vers A (voir aussi P1, P2, P3)
A compte A: ce que A compte pour les paquets A qu'il a vus
A compte B: ce que A compte pour les paquets B qu'il a vus
B compte A: ce que B compte pour les paquets A qu'il a vus
B compte B: ce que B compte pour les paquets B qu'il a vus
A-> B: La latence qu'A estime à B (rapport de RTT de 4 secondes basé sur les paquets vus)
B-> A: La latence que B estime à A (rapport de RTT de 4 secondes basé sur les paquets vus)
Comme nous pouvons voir les deux nœuds converger et rester autour de leur vraie latence (en fait, nous ne voyons pas cela pour A car plus de secondes sont nécessaires pour converger mais il converge le même comportement que B)
De meilleurs filtres pourraient converger plus rapidement, mais nous pouvons clairement voir comment ils convergent tous les deux autour des valeurs correctes pour leurs retards, ils peuvent donc connaître exactement leur retard (même si je ne montre leur estimation qu'à titre d'illustration).
De plus, même si les bandes passantes entre les liens sont différentes, la méthode ci-dessus pourrait toujours tenir (bien qu'il faudra y penser davantage pour être plus certain) en utilisant des paires de paquets pour déterminer les estimations de la bande passante et ensuite simplement appliquer à l'équation de proportion ci-dessus.
Conclusion
Nous avons fourni un algorithme pour A et B pour connaître leur position dans le réseau et connaître leur latence à l'autre nœud pour le diagramme ci-dessus. Nous avons utilisé une méthode d'estimation de mesure de réseau plutôt que des approches basées sur l'horloge qui, en effet, ne peuvent pas conduire à une solution en raison d'un problème de synchronisation d'horloge récursive.
Remarque J'ai maintenant édité cette réponse en fournissant toutes les simulations car personne ne me croirait, je l'ai résolu autant que vous pouvez le voir dans les premiers commentaires. Espérons qu'avec ces résultats, quelqu'un pourra être plus convaincu et approuver pour aider tout le monde à trouver au moins une erreur ou une correction dans ce puzzle de mesure de réseau!