Параметры keep-alive TCP не соблюдаются

У меня есть сервер, работающий на моем Linux-боксе, также на котором выполнялись следующие команды:

$ cat /proc/sys/net/ipv4/tcp_keepalive_time 7200 $ cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75 $ cat /proc/sys/net/ipv4/tcp_keepalive_probes 9 

Мой сервер прослушивает порт 58080, и я создаю на нем соединение, настроив TCP-код в моем коде. Затем я установил Wireshark, отслеживая это соединение; снимок экрана выводится ниже:

Пакеты

Вы можете видеть, что первый пакет keep-alive отправляется через 7200 секунд или 2 часа, как ожидалось (значение «tcp_keepalive_time»). Однако я ожидаю, что каждый пробник будет отправлен через 75 секунд (значение «tcp_keepalive_intvl»); я вижу, что каждый зонд отправляется через 2 часа.

Может кто-нибудь, пожалуйста, скажите, почему мой вариант конфигурации для 'tcp_keepalive_intvl' не соблюдается?

ОБНОВИТЬ

Кажется, что указание интервала продолжительности жизни, который больше, чем время сохранения жизни, приводит к тому, что время интервала привязано к …

One Solution collect form web for “Параметры keep-alive TCP не соблюдаются”

После обсуждения с супер-умным коллегой, мы думаем, что мы выяснили, что не так, но еще предстоит доказать это. Что, вероятно, происходит, так это то, что интервал продолжительности жизни учитывается только тогда, когда ACK не поддерживается. Таким образом, через 2 часа, если никакой ACK не был получен в этот первый пакет keep-alive, второй пакет будет отправлен через 75 секунд и повторно с интервалом 75 секунд, пока не будет получен ACK.

Оказывается, причина, по которой этот интервал учитывается только тогда, когда он больше времени сохранения, связан с тем, как работает механизм поддержания работоспособности Linux, как описано в моем другом вопросе .

  • Как исследовать случайный сброс на порт TCP-клиента, подключенный через интерфейс loopback к серверу
  • Как я могу отредактировать / proc / net / tcp?
  • Отправить пакет TCP на тот же источник
  • Есть ли у Linux эквивалент платформы фильтрации Windows?
  • Отключение автосогласования PHY во время загрузки Linux на Xilinx
  • Почему мой сервер не может обслуживать более 400 одновременных соединений
  • Подключите beaglebone black, запуская Debian Image 2015-11-12 на ПК через Ethernet.
  • ICMP: ошибка порта недоступна, даже если порт открыт
  • Как установить статический IP-адрес для отключенного интерфейса?
  • Неупорядоченный ответ ACK
  • Используется ли межсетевой экран внутри сети между уровнем доступа к сети и уровнем Интернета?
  • Linux и Unix - лучшая ОС в мире.