Проверка задержки подтверждения на стороне клиента

Я пытаюсь измерить RTT TCP-соединения, но я столкнулся с некоторыми проблемами. Значение rtt измеряется путем нахождения tcp_info сокета сервера через getsockopt. К сожалению, на эту метрику сильно влияют, если клиент использует задержанные подтверждения, поскольку это добавляет задержку между пакетами, отправленными с сервера, к измеренному rtt.

Если я смогу убедиться, что клиент использует отложенные подтверждения (т. Е. Стандартная Windows TCPAckFrequency, равная 2), я могу программно определить "реальный" rtt. Однако это нереально, поскольку приложение представляет собой демонстрационную версию (с функциями tcp), работающую в веб-браузере (Javascript/WebSocket), и я не хочу просить пользователей связываться с их реестром, чтобы веб-страница работала,

Единственная реальная возможность получить хорошее измерение - это либо 1: установить частоту tcp ack на сокете клиента (в настоящее время это WebSocket, это не является обязательным требованием), либо 2: каким-то образом выяснить, использует ли клиент отложенные подтверждения или нет, и отрегулируйте измерение соответственно.

Первое решение возможно путем установки TCP_QUICKACK, но я не нашел такой возможности ни в одном из tcp-решений на основе javascript (нативных WebSocket или Socket.io). Точно так же я не нашел хорошего способа проверить настройки клиента. Есть идеи?

0 ответов

Другие вопросы по тегам