3.7. TCP の遅延 ACK タイムアウトの削減
RedHat EnterpriseLinux では、データの受信を確認するために TCP によって 2 つのモードが使用されます。
- クイック ACK
- このモードは TCP 接続の開始時に使用され、輻輳ウインドウがすぐに拡張できるようにします。
- acknowledgment (ACK) のタイムアウト間隔 (ATO) が、最低限のタイムアウト値
tcp_ato_min
に設定されています。 - デフォルトの TCP ACK タイムアウト値を変更するには、必要な値をミリ秒単位で
/proc/sys/net/ipv4/tcp_ato_min
ファイルに書き込みます。~]#
echo 4 > /proc/sys/net/ipv4/tcp_ato_min
- ACK の遅延
- 接続が確立されると TCP は、複数の受信パケットの ACK を単一のパケットで送信できるこのモードを想定します。
- ATO はタイマーを再起動またはリセットするように
tcp_delack_min
に設定されます。 - デフォルトの TCP Delayed ACK 値を変更するには、必要な値をミリ秒単位で
/proc/sys/net/ipv4/tcp_delack_min
ファイルに書き込みます。~]#
echo 4 > /proc/sys/net/ipv4/tcp_delack_min
現在の輻輳により、2 つのモード間で TCP が切り替えられます。
小規模なネットワークパケットを送信するアプリケーションの中には、TCP が迅速かつ遅延した承認のタイムアウト (以前はデフォルトで 40 ミリ秒) により、レイテンシーが発生する可能性があります。つまり、まれな情報をネットワーク経由で送信するアプリケーションからのパケットの小さいパケットは、パケットが別の側で受信されたことを認識するために最長 40 ミリ秒の遅延が生じる可能性があります。この問題を最小限に抑えるために、デフォルトで
tcp_ato_min
と tcp_delack_min
のタイムアウトの両方が 4 ミリ秒になりました。
これらのデフォルト値は tunable で、上記のようにユーザーの環境のニーズに応じて調整できます。
注記
低すぎる、または高すぎるタイムアウト値を使用すると、アプリケーションが経験したネットワークのスループットとレイテンシーに悪影響を及ぼす可能性があります。異なる環境では、これらのタイムアウトに異なる設定が必要になる場合があります。