Я знайшов спосіб дізнатися, який вузол є хто (тобто у кого більша затримка повідомлень) та оцінити однобічну затримку подорожі. Хоча інші відповіді правильні, вони ТІЛЬКИ враховують пряме вимірювання годин, що, звичайно, не може працювати. Однак, як я доказую тут, це лише частина історії, оскільки тут працює мій алгоритм для вищезазначеного:
Припустимо, як у реальному житті:
Посилання кінцевої пропускної здатності b
Кожен вузол має унікальну адресу (наприклад, A і B)
Розмір пакету p набагато менший, ніж продукт із затримкою пропускної здатності *
Вузли А і В здатні заповнити канал
Вузли мають випадкову () функцію
Кожен вузол заповнює канал власними пакетами (позначеними відповідно А або В) АБО пересилає отримані пакети від інших вузлів наступним чином:
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
Інтуїтивне пояснення
Оскільки продукт затримки * пропускної здатності * більший (оскільки затримка вище), A вдасться отримати більше пакетів, ніж B, тому кожен Вузол може знати, хто вони на діаграмі .
Крім того, при достатньому часі конвергенції, що працює вище алгоритму, відношення пакетів від A до B буде позначати фактичне відношення RTT затримки від A до B і, отже, бажане OTT .
РЕЗУЛЬТАТ МІЖУВАННЯ РЕЗУЛЬТАТИ
Ось моделювання, яке доводить вищесказане і показує, як успішно конвергується до затримки на 3 секунди і B конвергується близько 1 секунди затримки:
Пояснення фігур:
Кожен рядок представляє 1 секунду часу (розмір пакета вибирається таким, щоб мати зрозумілість 1 секунди для передачі). Зауважте, що кожен вузол може запустити algo в будь-який час, не в певній послідовності чи часі. Стовпці такі:
NODE A отримує: те, що вузол A бачить у своїй приймальній стороні (це також P4 нижче)
NODE A вводить: який вузол A надсилає (зверніть увагу, що це A, або випадково A або B)
P1, P2, P3: Три пакети, які перебувають у транзиті (в порядку) між A і B (1 секунда передачі означає, що 3 пакети перебувають у транзиті з затримкою 3)
NODE B отримує: що B бачить у своїй приймальній стороні (це P3)
NODE B вводить: те, що B надсилає (зверніть увагу, що це B, або випадково A або B на альго)
P4: Пакет, який проходить транзитом від B до A (див. Також P1, P2, P3)
Лічильник A: Що A вважає для пакетів A, які він бачив
A рахує B: Що A вважається для B пакетів, які він бачив
B рахує A: Що B вважає для пакетів A, які він бачив
B рахує B: Що вважає B для B-пакетів, які він бачив
A-> B: затримка, яку A оцінює до B (відношення RTT 4 секунди на основі бачених пакетів)
B-> A: затримка, яку B оцінює до A (відношення RTT 4 секунди на основі бачених пакетів)
Як ми можемо бачити, як обидва вузли сходяться і залишаються навколо їхньої справжньої затримки (насправді ми не бачимо, що для A потрібно більше секунд, щоб сходитись, але це конвергує таку ж поведінку, що і B)
Кращі фільтри можуть конвергуватися швидше, але ми можемо чітко бачити, як вони обидві конвергуються навколо правильних значень для їх затримок, тому вони можуть точно знати їх затримку (хоча я показую їх оцінку лише для ілюстрації).
Крім того, навіть якщо пропускна здатність між посиланнями відрізняється, вищезазначений метод все-таки може дотримуватися (хоча доведеться думати про це більше, щоб бути більш впевненим), використовуючи пари пакетів, щоб визначити оцінки пропускної здатності, а потім просто застосувати до рівняння пропорції вище.
Висновок
Ми запропонували алгоритм для A і B, щоб знати їх положення в мережі та знати їх затримку до іншого вузла для наведеної вище діаграми. Ми використовували метод оцінки мережевих вимірювань, а не підходи, засновані на тактовій частоті, які насправді не можуть призвести до рішення через проблему рекурсивної синхронізації годин.
Примітка. Зараз я відредагував цю відповідь, надаючи всі симуляції, тому що ніхто не повірив мені, що я вирішив її так далеко, як ви можете бачити в перших коментарях. Сподіваємось, у цих результатах хтось може бути більш переконаний і схвалити допомогти кожному хоча б знайти одну помилку чи правильність у цій мережевій головоломці!