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_mintcp_delack_min のタイムアウトの両方が 4 ミリ秒になりました。
これらのデフォルト値は tunable で、上記のようにユーザーの環境のニーズに応じて調整できます。

注記

低すぎる、または高すぎるタイムアウト値を使用すると、アプリケーションが経験したネットワークのスループットとレイテンシーに悪影響を及ぼす可能性があります。異なる環境では、これらのタイムアウトに異なる設定が必要になる場合があります。