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