Linux の TCP/IP チューニング・パラメータ


  1. TCP のチューニング・パラメータ
  2. 接続確立関係のチューニング・パラメータ

TCP のチューニング・パラメータ

TCP のチューニング・パラメータは、以下のコマンドで取得できます。

なお、以下は Linux のものです。

>cat /proc/sys/net/ipv4/tcp_retrans_collapse   1
>cat /proc/sys/net/ipv4/tcp_keepalive_probes   9
>cat /proc/sys/net/ipv4/tcp_keepalive_time     10800
>cat /proc/sys/net/ipv4/tcp_syn_retries        10
>cat /proc/sys/net/ipv4/tcp_sack               1
>cat /proc/sys/net/ipv4/tcp_timestamps         1
>cat /proc/sys/net/ipv4/tcp_stdurg             0
>cat /proc/sys/net/ipv4/tcp_syncookies         0
>cat /proc/sys/net/ipv4/tcp_window_scaling     1
>cat /proc/sys/net/ipv4/tcp_fin_timeout        180
>cat /proc/sys/net/ipv4/tcp_max_ka_probes      5
>cat /proc/sys/net/ipv4/tcp_max_syn_backlog    128
>cat /proc/sys/net/ipv4/tcp_retries1           7
>cat /proc/sys/net/ipv4/tcp_retries2           15

以下に機能別のチューニング・パラメータを列挙します。
時間間隔の単位はミリ秒で、サイズの単位はバイトです。




接続確立関係のチューニング・パラメータ

パラメータ 意       味 既定値推奨値
tcp_retrans_collapse いくつかの壊れたプリンタのためにバグ=バグ互換を保持するための ものです。 そのような TCP スタックのバグを回避するために、再送信 する場合はより大きなパケットを送るように試みます。ゼロに設定す ることでこの機能をオフにできます。 11
tcp_keepalive_probes キープアライブ(keep alive) 設定された TCP 接続において、ここに設 定した数だけ確認パケットを送っても応答がない場合には切断されたと判断します。 9 9
tcp_keepalive_time キープアライブ(keep alive)が有効な時に、どれくらいの頻度でキープアライブ・ メッセージを TCP が送信するかを示します。デフォルトは 2 時間です。 10800 7200
tcp_syn_retries TCP 接続を行うために最初の SYN パケットの再送信を試みる回数です。 255 以上に設定してはいけません。これは外向きの接続に対しての 時間切れを設定します。内向きの接続に対する再送信回数は tcp_retries1 で定義されます。 10
tcp_sack RFC2018 による選択的確認応答 (SACK) を有効にします。 11
tcp_timestamps RFC1323 に定義されたタイムスタンプを有効にします。 11
tcp_stdurg TCP 緊急ポインタ(urgent pointer)フィールドを厳密に RFC793 に従って解釈します。 デフォルトは BSD 互換の解釈で緊急ポインタは緊急データの直後を指しています。 RFC793 の解釈では緊急データの最後を指すことになっています。このオプションを 有効にすると実装の違いによる問題が出てくるかもしれません。デフォルトは無効です。 00
tcp_syncookies カーネルが CONFIG_SYNCOOKIES オプション付きでコンパイルされてい る場合にのみ使用できます。 ソケットの SYN 蓄積キューが溢れた場合 に syncookie を送信します。 これは一般的な「syn flood 攻撃」を防ぎ ます。デフォルトは無効です。

ソケット蓄積の概念は放棄されることに注意してください。これは syncookies が設定されたサーバが過負荷になった場合に相手側は信頼 できるエラーメッセージを受けとれないかもしれないことを意味します。

00
tcp_window_scaling RFC1323 に定義された通信ウィンドウのスケーリングを有効にします。 11
tcp_fin_timeout 最終 FIN を何秒間待つかを設定します。これだけ待っても FIN が来な ければソケットは無条件に閉じられます。 これは厳密に言えば TCP の 規格には違反しています。しかしサービス不能攻撃を防ぐために必要です。 180 180
tcp_max_ka_probes slow timer が切れるごとに、キープアライブ検査を何回送るかを示し ます。バーストを防ぐためにこれを大きな値に設定してはいけません。 5 5
tcp_max_syn_backlog ソケットごとの蓄積キューの長さです。Linux 2.2 から listen(2) で指定した backlog の値は既に接続したソケットの蓄積キューのみを指定します。 この値以上の接続要求を受けた場合 Linux はそのパケットを捨て始めます。 syncookies が有効になっている場合はそれでもパケットへの返信が行われ、 キューの最大値は効果的に無視されます。 128 128
tcp_retries1 TCP 接続要求に対する応答の再送を試みる回数を指定します。 7 7
tcp_retries2 TCP パケットの再送を試みる回数を指定します。 15 15

尚これらのパラメータを変更する際は、/etc/sysctl.conf にも記載しないと、 ブート後にデフォルトに再設定されます。




【 関連リンク 】

/proc ファイルシステムについて