5.5. TCP SACK がパケットドロップ率を下げる仕組み
RHEL では、TCP Selective Acknowledgment (TCP SACK) 機能がデフォルトで有効になっています。この機能は、TCP プロトコルの拡張機能であり、TCP 接続の効率を向上させます。
TCP 送信では、受信者は受信するパケットごとに ACK パケットを送信者に送信します。たとえば、クライアントは TCP パケット 1 - 10 をサーバーに送信しますが、パケット番号 5 と 6 が失われます。TCP SACK がないと、サーバーはパケット 7 - 10 をドロップし、クライアントは損失点からすべてのパケットを再送信する必要があり、非効率的です。両方のホストで TCP SACK が有効になっている場合、クライアントは失われたパケット 5 と 6 のみを再送信する必要があります。
TCP SACK を無効にするとパフォーマンスが低下し、TCP 接続の受信側でのパケットドロップ率が高くなります。
デフォルトでは、RHEL では TCP SACK が有効になっています。確認するには、以下を実行します。
# sysctl net.ipv4.tcp_sack
1
サーバー上で TCP SACK が無効 (0) になっている場合は、設定した際と同じ方法で設定を元に戻します。