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

Задержка повторной передачи 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и setting tcp_low_latencyна 1не дала желаемого эффекта.

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

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

решение1

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

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

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

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

Связанный контент