在 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_latencyto1沒有達到預期的效果。

發布了針對 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 值。

相關內容