在 Linux 上延迟 TCP SYN 重传

在 Linux 上延迟 TCP SYN 重传

我们的应用程序连接到无线电网络上的设备。网络必须唤醒设备才能进行通信,这大约需要 3 秒钟。在这 3 秒钟内,我们的 CentOS(Linux 3.10.0-957.62.1.el7.x86_64 x86_64)机器发送了 2 次 TCP SYN 数据包重传。重传导致无线电网络出现问题,因此我希望至少等待 3 秒钟才能进行重传。

降低配置tcp_syn_retries并不会真正改变第一次重试,并且当配置低于 4 时会出现不必要的行为(这也是不建议)。它只是减少了重试次数,但仍然遵循相同的重试模式(只是次数更少)。

设置tcp_frto1setting tcp_low_latency1没有达到预期的效果。

针对 Windows 的类似问题已发布这里

如何在 Linux 上更改 TCP SYN 重传模式?

答案1

rtosyn 的 tcp 重传与接收超时( )值有关(见源代码)。默认情况下,它等于 1 秒(定义这里这里;最小值 = 0.2 秒,最大值 = 120 秒)。

您可以使用 util 更改指定路线的 rto 值ip

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

但是应用程序本身可以使用 setsockopt 调用来改变 rto 值。

相关内容