У меня довольно простое клиент-серверное приложение (TCP).1 экземпляр отправляет 40 пакетов (равномерно распределенных в течение 1 секунды) с данными размером около 1500 байт (часть данных является меткой времени).2 экземпляр получает эти пакеты и отправляет обратно другие пакеты с начальной отметкой времени.Сейчас в одном случае я измеряю разницу между текущей меткой времени и меткой времени из пакетов.Так что я получаю что-то вроде ручной RTT.Также дополнительно я принимаю значение TCP RTT для сокетов с getsockopt и ясно вижу:
Мой RTT показывает мне значения около 1 мс (что ожидается при такой низкой скорости пакетов)
TCP RTT показывает мне ~ 40 мс И я не понимаю, почему.Я точно знаю, что я получаю свои пакеты раньше, чем за 40 мс.
Кроме того, если я увеличу количество пакетов, например, с 40 до 600, я поймаю TCP RTT как ~ 150mcs, который ожидается для моей конфигурации.
Может кто-нибудь объяснить мне это 40 мс со стороны ядра при низком количестве пакетов?
Спасибо