Наше приложение подключается к устройству в радиосети. Сеть должна разбудить устройство, прежде чем оно сможет установить связь, что занимает около 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?
Повторная передача tcp синхросигнала связана со значением тайм-аута приема (rto
) (см. исходный код ). По умолчанию оно равно 1 секунде (определено здесь и здесь; мин. = 0,2 с, макс. = 120 с).
Вы можете изменить значение rto для указанного маршрута с помощью утилиты ip
.
ip route replace 0/0 via <wifi-gw> dev <wifi-iface> rto_min 5s
Но само приложение может изменить значение rto с помощью вызова setsockopt.