调整在Linux for Webserver上接收ACK超时

时间:2017-06-07 15:25:01

标签: c linux sockets tcp latency

我为特定大学的环境科学系工作遥感设备,并且遇到延迟问题。我们在现场有传感器,定期将更新(如POST)发送回运行linux和简单Web服务器的盒子。这些设备通过菊花链无线中继器连接(我们正在尝试使用短波作为商用蜂窝网络的替代方案)。

我们的问题来自于某些链接的高延迟;接近20秒。我们的传感器无法完成三次握手以建立与服务器的连接。我们看到SYN进入服务器,然后SYNACK返回到远程,但是当ACK从远程服务器到达服务器时,服务器已经发送了RST。

有没有办法调整linux TCP堆栈,以便延长接收这些ACK的超时时间?

1 个答案:

答案 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”。