Задержка повторной передачи TCP SYN в Linux

Наше приложение подключается к устройству в радиосети. Сеть должна разбудить устройство, прежде чем оно сможет установить связь, что занимает около 3 секунд. за эти 3 секунды наши машины CentOS (Linux 3.10.0-957.62.1.el7.x86_64 x86_64) отправляют 2 повторных передачи пакета TCP SYN. ​​Повторная передача вызывает проблемы в радиосети, поэтому я хотел бы подождать с повторными передачами как минимум 3 секунды.

Понижение tcp_syn_retries на самом деле не изменяет первые попытки и дает нежелательное поведение при настройке ниже 4 (что также не рекомендуется ). Оно просто уменьшает количество повторных попыток, но все же следует тому же шаблону повторных попыток (только меньшее их количество).

Установка tcp_frto на 1 и установка tcp_low_latency на 1 сделали не имеют желаемого эффекта.

Аналогичный вопрос для Windows размещен здесь

Как мне изменить e Схема повторной передачи TCP SYN в Linux?

2
задан 18 December 2020 в 09:43
1 ответ

Повторная передача tcp синхросигнала связана со значением тайм-аута приема (rto) (см. исходный код ). По умолчанию оно равно 1 секунде (определено здесь и здесь; мин. = 0,2 с, макс. = 120 с).

Вы можете изменить значение rto для указанного маршрута с помощью утилиты ip.

ip route replace 0/0 via <wifi-gw> dev <wifi-iface> rto_min 5s

Но само приложение может изменить значение rto с помощью вызова setsockopt.

2
ответ дан 17 December 2020 в 13:43

Теги

Похожие вопросы