Linux で TCP SYN 再送信を遅延する

Linux で TCP SYN 再送信を遅延する

私たちのアプリケーションは、無線ネットワーク上のデバイスに接続します。通信する前に、ネットワークがデバイスを起動する必要があり、これには約 3 秒かかります。この 3 秒間に、CentOS (Linux 3.10.0-957.62.1.el7.x86_64 x86_64) マシンは TCP SYN パケットを 2 回再送信します。再送信は無線ネットワークで問題を引き起こすため、再送信を少なくとも 3 秒間待機したいと思います。

値を下げてもtcp_syn_retries最初の再試行回数は変わりませんが、4未満に設定すると望ましくない動作が発生します(これもお勧めしません)。再試行回数が減るだけで、再試行のパターンは同じままです (回数が少なくなるだけです)。

tcp_frtoを に設定し1setting tcp_low_latencyを に設定しても1、期待した効果は得られませんでした。

Windows用の同様の質問が投稿されていますここ

Linux で TCP SYN 再送信スキーマを変更するにはどうすればよいですか?

答え1

SYNのTCP再送信は受信タイムアウト(rto)値と関係があります(ソースコード)。デフォルトでは1秒(ここそしてここ; 最小 = 0.2 秒、最大 = 120 秒)。

utilを使用して、指定されたルートの rto 値を変更できますip

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

ただし、アプリケーション自体は setsockopt 呼び出しで rto 値を変更できます。

関連情報