Как настроить UDP сервер для измерения односторонней задержки (latency) и временного сдвига (offset) клиента?

Каким образом сервер может отслеживать одностороннюю задержку (latency) и временное отклонение (offset) клиента, учитывая возможную разницу в скорости хода часов на сервере и у клиента?
  • 28 апреля 2024 г. 6:30
Ответы на вопрос 2
Для измерения односторонней задержки и временного сдвига клиента на UDP сервере можно использовать протокол Network Time Protocol (NTP).

Вот пример настройки UDP сервера для измерения этих параметров:

1. Установить и настроить NTP сервер на вашем UDP сервере. Множество открытых и бесплатных NTP серверов доступны в Интернете для синхронизации времени.

2. Отправить NTP запросы клиентам и записать время отправки запроса и получения ответа.

3. Рассчитать одностороннюю задержку клиента, вычитая время отправки запроса из времени получения ответа.

4. Сравнить время, полученное от клиента, с временем сервера и рассчитать временное отклонение.

5. Учитывать разницу в скорости хода часов на сервере и у клиента при анализе результатов.

В итоге, настройка UDP сервера для измерения односторонней задержки и временного отклонения клиента может быть осуществлена с помощью NTP протокола и анализа времени отправки и получения сетевых запросов.
То что причина в часах понятна. Я вижу тут несколько решений: 
1. Синхронизация часов клиента. Возможно какой-нибудь NTP поможет (не работал с ним). Но синхронизировать надо только клиента, т.к. если сервер затронет, то и других клиентов тоже
2. Использовать глобальный синхронизатор (время по gps синхронизировать)
3. Делать бенчмарки + вычисления

Насчет 3 -
1. Предполагаем, что в обе стороны время одинаковое
2. Делаем несколько замеров (например, можно каждые 100 пакетов)
3. Рассчитываем время как avg / 2 , где avg - это среднее время отправки в обе стороны
Похожие вопросы