我为特定大学的环境科学系工作遥感设备,并且遇到延迟问题。我们在现场有传感器,定期将更新(如POST)发送回运行linux和简单Web服务器的盒子。这些设备通过菊花链无线中继器连接(我们正在尝试使用短波作为商用蜂窝网络的替代方案)。
我们的问题来自于某些链接的高延迟;接近20秒。我们的传感器无法完成三次握手以建立与服务器的连接。我们看到SYN进入服务器,然后SYNACK返回到远程,但是当ACK从远程服务器到达服务器时,服务器已经发送了RST。
有没有办法调整linux TCP堆栈,以便延长接收这些ACK的超时时间?
答案 0 :(得分:0)
超时与RTO有关。
参见RFC6298 2.1。在对发送方和接收方之间发送的网段进行往返时间(RTT)测量之前,发送方应该设置RTO < - 1秒。
参见RFC6298 5.5。主机必须设置RTO&lt; - RTO * 2
我的Ubuntu(14.04)的“/ proc / sys / net / ipv4 / tcp_synack_retries”设置为5.
换句话说,
protected void onProgressUpdate(Void... values) {
if (changeAsync)
verifyUser();
if(callMessage)
{
.......
callMessage = false;
}
}
超过总等待时间超过20秒。
尝试更改“/ proc / sys / net / ipv4 / tcp_synack_retries”。