我在某所大学的环境科学系使用遥感设备,遇到了延迟问题。我们在现场有传感器,定期将更新(作为帖子)发送回运行linux的盒子和一个简单的web服务器。这些设备通过菊花链的无线中继器连接(我们正在试验短波作为商业蜂窝网络的替代方案)。
我们的问题来自于一些链接的高延迟;接近20秒。我们的传感器无法完成三次握手以建立到服务器的连接。我们看到SYN到达服务器,然后SYNACK返回到远程,但是当ACK从远程到达服务器时,服务器已经发送了RST。
有没有办法调优linux TCP堆栈,以便延长接收这些ACK的超时时间?
发布于 2017-06-09 21:01:39
超时与RTO相关。
请参见RFC6298 2.1。在对发送方和接收方之间发送的数据段进行往返时间(RTT)测量之前,发送方应将RTO设置为<- 1秒。
请参阅RFC6298 5.5。主机必须设置RTO <- RTO *2
我的Ubuntu(14.04)的"/proc/sys/net/ipv4/tcp_synack_retries“设置为5。
换句话说,
Server state.
1. SYN/ACK First Send ===> 1 second wait ...
2. SYN/ACK Retransmission ===> 2 second wait ...
3. SYN/ACK Retransmission ===> 4 second wait ...
4. SYN/ACK Retransmission ===> 8 second wait ...
5. SYN/ACK Retransmission ===> 16 second wait ...
6. SYN/ACK Retransmission ===> 32 second wait ...以上总等待时间超过20秒。
尝试更改"/proc/sys/net/ipv4/tcp_synack_retries“。
https://stackoverflow.com/questions/44416839
复制相似问题