Solaris カーネルのチューンアップ・リファレンスマニュアル

第 4 章 TCP/IP チューニング可能パラメータ

この章では、TCP/IP のチューニング可能パラメータについて説明します。カーネルのチューニング可能パラメータについては第 2 章「Solaris カーネルのチューニング可能パラメータ」を、NFS のチューニング可能パラメータについては第 3 章「NFS チューニング可能パラメータ」 をそれぞれ参照してください。

TCP/IP パラメータのチューニングの概要

この章で述べるすべてのチューニング可能パラメータは、次の 2 つのパラメータを除き ndd コマンドで設定できます。次の 2 つのパラメータは、/etc/system ファイルでのみ設定できます。

ndd コマンドで TCP/IP パラメータを設定する場合は、次の構文を使用します。


# ndd -set driver parameter

たとえば、次の ndd コマンドでは IP 転送を無効にします。


# ndd -set /dev/ip ip_forwarding 0

詳細は、ndd(1M) のマニュアルページを参照してください。

システムのリブート後も TCP/IP パラメータの設定を有効にするには、適切な ndd コマンドをシステム起動スクリプトに指定します。ndd コマンドを含むシステム起動スクリプトの作成には、次のガイドラインを使用してください。

起動スクリプトの作成方法についての詳細は、『Solaris のシステム管理 (第 1 巻)』の「実行制御スクリプト」を参照してください。

TCP/IP パラメータの検査

この節で記述する TCP/IP パラメータのうち、前述の /etc/system ファイルでのみ設定できる 2 つのパラメータの検査については、tcp_conn_hash_sizeipc_tcp_conn_hash_sizeの「検査」の項を参照してください。その他のパラメータについては、各パラメータについての説明中の「範囲」の項で述べる範囲に入っているかどうかが検査されます。

Internet Request for Comments (RFC)

インターネットのプロトコルと標準の仕様は、RFC 文書に記述されています。RFC のコピーは、sri-nic.arpa マシンから 匿名 ftp を使用して入手できます。このサイトの rfc-index.txt ファイル中で RFC のトピックを探してください。

IP チューニング可能パラメータ

この節では、IP チューニング可能パラメータの一部を説明します。

ip_icmp_err_intervalip_icmp_err_burst

説明

IP で IPv4 または IPv6 ICMP エラーメッセージを生成する頻度を制御します。IP は、ip_icmp_err_interval の間に最大で ip_icmp_err_burst の IPv4 または IPv6 ICMP エラーメッセージを生成します。このパラメータは、サービス拒否攻撃から IP を守るためのものです。ip_icmp_err_interval に 0 を設定すると、IP で IPv4 または IPv6 ICMP エラーメッセージは生成されません。

デフォルト

ip_icmp_err_interval は 100 ミリ秒、ip_icmp_err_burst は 10

範囲

ip_icmp_err_interval は 0 から 99,999 ミリ秒、ip_icmp_err_burst は 1 から 99,999

動的か

はい

どのような場合に変更するか

診断の目的でエラーメッセージの生成頻度を増やしたい場合は、このパラメータ値を変更します。

コミットレベル

変更の可能性あり

ip_forwardingip6_forwarding

説明

IP がインタフェース間で IPv4 または IPv6 転送を行うかどうかを制御します。xxx:ip_forwarding も参照してください。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

IP 転送が必要な場合は、これを有効にします。

コミットレベル

変更の可能性あり

xxx:ip_forwarding

説明

特定の xxx インタフェースに対し IPv4 転送を有効にします。このパラメータの正確な表記は interface-name:ip_forwarding です。たとえば、2 つのインタフェース hme0hme1 がある場合、それぞれのパラメータ名は hme0:ip_forwardinghme1:ip_forwarding です。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

IPv4 転送が必要な場合は、このパラメータを使用してインタフェースごとに転送を有効にします。

コミットレベル

変更の可能性あり

ip_respond_to_echo_broadcastip6_respond_to_echo_multicast

説明

IPv4 や IPv6 で、ブロードキャスト ICMPv4 エコー要求またはマルチキャスト ICMPv6 エコー要求に応答するかどうかを制御します。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

セキュリティ上の理由でこの動作を行いたくない場合は、無効にします。

コミットレベル

変更の可能性あり

ip_send_redirectsip6_send_redirects

説明

IPv4 または IPv6 で ICMPv4 または ICMPv6 リダイレクトメッセージを送信するかどうかを制御します。ip_forwardingip6_forwardingも参照してください。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

セキュリティ上の理由でこの動作を行いたくない場合は、無効にします。

コミットレベル

変更の可能性あり

ip_forward_src_routedip6_forward_src_routed

説明

IPv4 または IPv6 で、パケットをソース IPv4 ルーティングオプションを指定してまたは IPv6 ルーティングヘッダーを指定して転送するかどうかを制御します。ip_forwardingip6_forwardingも参照してください。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

セキュリティ上の理由でこの動作を行いたくない場合は、無効にします。

コミットレベル

変更の可能性あり

ip_addrs_per_if

説明

実インタフェースに対応する論理インタフェースの最大数

デフォルト

256

範囲

1 から 8192

動的か

はい

どのような場合に変更するか

この値は変更しないでください。ただし、論理インタフェースの数を増やす必要がある場合は、この値を増加させます。変更によって IP のパフォーマンスに悪影響が生ずることがあることに留意してください。

コミットレベル

変更の可能性あり

ip_strict_dst_multihomingip6_strict_dst_multihoming

説明

非転送インタフェースに到着したパケットを、そのインタフェースに明示的に構成されていない IP アドレス向けとして受け入れるかどうかを制御します。ip_forwarding が有効になっているか、該当するインタフェースに対し xxx:ip_forwarding が有効になっていると、このパラメータは無視されます (そのパケットが実際に転送されるため)。

RFC 1122 3.3.2.4 を参照してください。

デフォルト

0 (緩やかなマルチホーミング)

範囲

0 = オフ (緩やかなマルチホーミング)、1 = オン (厳密なマルチホーミング)

動的か

はい

どのような場合に変更するか

厳密なネットワーキングドメイン (たとえばファイアウォールや VPN ノードなど) を通過するインタフェースがマシンにある場合は、この変数に 1 を設定します。

コミットレベル

変更の可能性あり

特別な注意を要する IP チューニング可能パラメータ

各パラメータで記述する特別な状況である場合以外は、次のパラメータを変更することは推奨されません。

ip_ire_pathmtu_interval

説明

IP がパス最大転送単位 (PMTU) 検出情報をフラッシュしてから PMTU を再び検出開始するまでの間隔をミリ秒単位で指定します。

PMTU の検出については、RFC 1191 を参照してください。

デフォルト

10 分

範囲

5 秒から 277 時間

動的か

はい

どのような場合に変更するか

この値は変更しないでください。

コミットレベル

変更の可能性あり

ip_icmp_return_data_bytesip6_icmp_return_data_bytes

説明

IPv4 や IPv6 は、ICMPv4 や ICMPv6 のエラーメッセージを送信するときに、エラーメッセージの原因になったパケットの IP ヘッダーを含めます。このパラメータでは、パケットのうち IPv4 や IPv6 のヘッダーを除いてあと何バイトを ICMPv4 や ICMPv6 のエラーメッセージに含めるかを制御します。

デフォルト

64 バイト

範囲

8 から 65,536 バイト

動的か

はい

どのような場合に変更するか

この値は変更しないでください。ただし、ICMP エラーメッセージに含む情報を増やすと、ネットワークの問題を診断する上で役立つことがあるため、この機能が必要な場合はこの値を増やします。

コミットレベル

変更の可能性あり

TCP チューニング可能パラメータ

tcp_deferred_ack_interval

説明

TCP 遅延肯定応答 (ACK) タイマーのタイムアウト値をミリ秒単位で指定します。

RFC 1122, 4.2.3.2 を参照してください。

デフォルト

100 ミリ秒

範囲

1 ミリ秒から 1 分

動的か

はい

どのような場合に変更するか

このパラメータには、500 ミリ秒を超える値を設定しないでください。

ネットワークリンクが遅く (57.6 Kbps 未満)、最大セグメントサイズ (MSS) が 512 バイトを超え、この間隔が複数の TCP セグメントを受信するには短すぎるような状況では、この値を増やします。

コミットレベル

変更の可能性あり

tcp_deferred_acks_max

説明

TCP セグメントを最大でいくつ (個々の接続ごとに最大セグメントサイズ MSS の単位で) 受信したら肯定応答 (ACK) を生成するかを指定します。このパラメータに 0 か 1 を設定すると、すべてのセグメントが 1 MSS の長さであるとみなされ、遅延 ACK はないことになります。

直接的に接続されていないリモート宛先の場合は、このパラメータの値が何であれ、最大値は 2 に固定されます。実際の数は、接続ごとに動的に計算されます。この値はデフォルトの最大値です。

デフォルト

8

範囲

0 から 16

動的か

はい

どのような場合に変更するか

この値は変更しないでください。ただし、遅延 ACK の影響でネットワークトラフィックが著しく混雑するような状況では、この値を減らします。ただし、2 より小さくしないでください。

コミットレベル

変更の可能性あり

tcp_wscale_always

説明

1 が設定されていると、TCP は、オプションの値が 0 であっても、常にウィンドウスケールオプションを指定して SYN セグメントを送信します。TCP は、ウィンドウスケールオプションの指定された SYN セグメントを受信すると、このパラメータに 0 が設定されていても、ウィンドウスケールオプションを指定して SYN セグメントに応答し、またオプションの値は受信ウィンドウサイズに従って設定されることに留意してください。

ウィンドウスケールオプションについては、RFC 1323 を参照してください。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

高速ネットワーク構成でウィンドウスケールオプションを使用したい場合は、このパラメータを有効にします。

コミットレベル

変更の可能性あり

tcp_tstamp_always

説明

1 が設定されていると、TCP は常に、タイムスタンプオプションを指定して SYN セグメントを送信します。TCP は、タイムスタンプオプションの指定された SYN セグメントを受信すると、このパラメータに 0 が設定されていても、タイムスタンプオプションを指定して SYN セグメントに応答することに留意してください。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

要約すると、往復時間 (RTT) や TCP シーケンス番号ラップアラウンドを正確に測定したい場合に、これを有効にします。

このオプションを有効にする理由についての詳細は、RFC 1323 を参照してください。

コミットレベル

変更の可能性あり

tcp_xmit_hiwat

説明

デフォルトの送信ウィンドウサイズをバイト数で指定します。ルートごとに異なる値を設定する方法については、後で述べるルート別のメトリックの説明を参照してください。tcp_max_bufも参照してください。

デフォルト

16,384 バイト

範囲

4096 から 1,073,741,824

動的か

はい

どのような場合に変更するか

これはデフォルト値です。アプリケーションでは、setsockopt(3SOCKET) SO_SNDBUF を使用して、送信バッファを接続ごとに変更できます。

コミットレベル

変更の可能性あり

tcp_recv_hiwat

説明

デフォルトの受信ウィンドウサイズをバイト数で指定します。ルートごとに異なる値を設定する方法については、後で述べるルート別のメトリックの説明を参照してください。tcp_recv_hiwat_minmsstcp_max_bufも参照してください。

デフォルト

24,576

範囲

2048 から 1,073,741,824

動的か

はい

どのような場合に変更するか

これはデフォルト値です。アプリケーションでは、setsockopt(3SOCKET) SO_RCVBUF を使用して、受信バッファを接続ごとに変更できます。

コミットレベル

変更の可能性あり

tcp_max_buf

説明

バッファサイズの最大値をバイト数で指定します。これは、アプリケーションが setsockopt(3SOCKET) を使用して設定する送信バッファや受信バッファのサイズの最大値を制御します。

デフォルト

1,048,576

範囲

8192 から 1,073,741,824

動的か

はい

どのような場合に変更するか

高速ネットワーク環境で TCP 接続を行う場合は、ネットワークリンクの速度に合わせて値を増やします。

コミットレベル

変更の可能性あり

tcp_cwnd_max

説明

TCP 輻輳ウィンドウ (cwnd) のサイズの最大値をバイト数で指定します。

TCP 輻輳ウィンドウについては、RFC 1122 と RFC 2581 を参照してください。

デフォルト

1,048,576

範囲

128 から 1,073,741,824

動的か

はい

どのような場合に変更するか

これは、TCP cwnd をどこまで拡張できるかを示す最大値です。アプリケーションが setsockopt(3SOCKET) を使用してウィンドウサイズに tcp_cwnd_max より大きい値を設定しようとしても、使用される実際のウィンドウが tcp_cwnd_max を超えることはありません。したがって、一般には、tcp_max_buftcp_cwnd_max より大きくなければなりません。

コミットレベル

変更の可能性あり

tcp_slow_start_initial

説明

輻輳ウィンドウ (cwnd) の初期サイズの最大値を TCP 接続の MSS 単位で指定します。

輻輳ウィンドウの初期サイズがどのように計算されるかについては、RFC 2414 を参照してください。

デフォルト

4

範囲

1 から 4

動的か

はい

どのような場合に変更するか

この値は変更しないでください。

特殊な状況下で cwnd の初期サイズがネットワークの輻輳を招く場合は、この値を減らします。

コミットレベル

変更の可能性あり

tcp_slow_start_after_idle

説明

輻輳ウィンドウが 1 再送タイムアウト (RTO) の間遊休にされた (セグメントを全く受信しなかった) 後の、輻輳ウィンドウのサイズを TCP 接続の MSS 単位で指定します。

この計算については、RFC 2414 を参照してください。

デフォルト

4

範囲

1 から 16,384

動的か

はい

どのような場合に変更するか

詳細は、tcp_slow_start_initialを参照してください。

コミットレベル

変更の可能性あり

tcp_sack_permitted

説明

2 が設定されていると、TCP は常に、選択的肯定応答 (SACK) 許可オプションを指定して SYN セグメントを送信します。TCP は、SACK 許可オプションを指定した SYN セグメントを受信し、かつこのパラメータに 1 が設定されていると、SACK 許可オプションを指定して応答します。このパラメータに 0 が設定されていると、着信セグメントに SACK 許可オプションが指定されているかどうかにかかわらず、TCP は SACK 許可オプションを送信しません。

SACK オプションについては、RFC 2018 を参照してください。

デフォルト

2 (アクティブに有効にする)

範囲

0 (無効)、1 (パッシブに有効にする)、2 (アクティブに有効にする)

動的か

はい

どのような場合に変更するか

SACK 処理を行うと TCP 再送のパフォーマンスが向上するため、アクティブに有効にすべきです。SACK オプションをアクティブに有効にすると相手方が混乱するおそれがあるような場合は、1 を設定します。それによって SACK 処理は、着信接続で SACK 処理が許可されているときだけ行われます。

コミットレベル

変更の可能性あり

tcp_rev_src_routes

説明

0 が設定されていると、TCP は、セキュリティ上の理由により、着信接続に対し IP ソースルーティングオプションを逆方向に使用しません。1 が設定されている場合は、TCP は通常どおりソースルーティングを逆方向に使用します。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

診断のために IP ソースルーティングが必要な場合は、有効にします。

コミットレベル

変更の可能性あり

tcp_time_wait_interval

説明

TCP 接続を TIME-WAIT 状態に保つ時間をミリ秒で指定します。

詳細は、RFC 1122, 4.2.2.13 を参照してください。

デフォルト

4 分

範囲

1 秒から 10 分

動的か

はい

どのような場合に変更するか

負荷の高い Web サーバーでは、あまりに多くの TCP 接続が TIME-WAIT 状態になっているために、メモリーが過度に使用されていることがあります。このような場合には、パフォーマンスの向上のために、この値を減らすことができます。ただし、この値は 60 秒より小さくしないでください。

詳細は、RFC 1122, 4.2.2.13 を参照してください。

コミットレベル

変更の可能性あり

tcp_conn_req_max_q

説明

accept(3SOCKET) によって受け付けられるのを待っている保留状態の TCP 接続を 1 つの TCP リスナー当たり最大でいくつ持てるかのデフォルト数を指定します。tcp_conn_req_max_q0も参照してください。

デフォルト

128

範囲

1 から 4,294,967,296

動的か

はい

どのような場合に変更するか

いくつかの接続要求を受信することがある Web サーバーのようなアプリケーションでは、着信頻度に応じてこのデフォルト値を増やすことができます。

このパラメータに著しく大きい値を設定しないでください。保留状態の TCP 接続はメモリーを過度に使用することがあります。さらに、保留状態の TCP 接続の数が多すぎて接続要求を適時に処理できるほどアプリケーションが速くない場合は、新しい着信要求が拒否されることがあります。

tcp_conn_req_max_q を増やしても、アプリケーションでそれだけの数の保留状態の TCP 接続を持てるとは限りません。アプリケーションでは、listen(3SOCKET) を使用して、保留状態の TCP 接続の最大数をソケットごとに変更できます。このパラメータは、アプリケーションが listen() を使用して設定できる最大値を表しています。つまり、このパラメータに非常に大きな値を設定しても、あるソケットに対する実際の最大数は、listen() に指定された値によっては tcp_conn_req_max_q よりもはるかに少ないことがあります。

コミットレベル

変更の可能性あり

tcp_conn_req_max_q0

説明

不完全な (3 段階ハンドシェークがまだ終わっていない) 保留状態の TCP 接続を 1 つの TCP リスナー当たりいくつ持てるかのデフォルトの最大数を指定します。

TCP の 3 段階ハンドシェークについての詳細は、RFC 793 を参照してください。さらに、tcp_conn_req_max_qも参照してください。

デフォルト

1024

範囲

0 から 4,294,967,296

動的か

はい

どのような場合に変更するか

極めて多くの接続要求を受信することがある Web サーバーのようなアプリケーションでは、着信頻度に応じてこのデフォルト値を増やすことができます。

tcp_conn_req_max_q0 と、各ソケットについて保留状態にある接続の最大数との関係は、次のとおりです。

接続要求を受信すると、TCP はまず、受け付けられるのを待っている保留状態の TCP 接続 (3 段階ハンドシェークが終わっている) の数 (N) が、そのリスナーに対する最大数を超えていないかをチェックします。接続数が超えていると、その要求は拒否されます。超えていなければ、TCP は、不完全な保留状態の TCP 接続の数が、Ntcp_conn_req_max_q0 の合計を超えていないかをチェックします。超えていなければ、その要求は受け付けられます。超えていると、最も古い不完全な保留状態の TCP 要求がドロップされます。

コミットレベル

変更の可能性あり

tcp_conn_req_min

説明

受け付けられるのを待っている保留状態の TCP 接続の最大数 (1 つの リスナーについての) の、デフォルトの最小値。これは、1 つのアプリケーションが使用できる listen(3SOCKET) の最も低い最大値です。

デフォルト

1

範囲

1 から 1024

動的か

はい

どのような場合に変更するか

このパラメータにより、listen(3SOCKET) を使用するアプリケーションが保留状態の TCP 接続の最大数を過度に小さく設定するのを防ぐことができるます。この値を着信接続要求の頻度に応じて増やしてください。

コミットレベル

変更の可能性あり

/etc/system ファイルに設定する TCP パラメータ

これらのパラメータは、/etc/system ファイルでしか設定できません。ファイルを変更してからシステムをリブートする必要があります。

次のエントリは tcp_conn_hash_size の設定例です。


set tcp:tcp_conn_hash_size=1024

tcp_conn_hash_size

説明

すべての TCP 接続に対する、TCP モジュールのハッシュテーブルサイズを制御します。

データ型

符号付き整数

デフォルト

512

範囲

512 から 1,073,741,824

暗黙的制約

この値には 2 のべき乗を指定すべきです。

動的か

いいえ。このパラメータはブート時にのみ変更できます。

検査

パラメータの値が 2 のべき乗でないと、一番近い 2 のべき乗に丸められます。

どのような場合に変更するか

何万に上る TCP 接続が継続的にあるシステムでは、この値をそれに応じて増やします。TCP は、デフォルト値で 2 〜 3 千のアクティブ接続までは十分にサポートできます。ハッシュテーブルのサイズを増やすと、それだけ多くのメモリーが必要になりますので、適切な値を指定するようにしてメモリーが不必要に使用されるのを防いでください。

コミットレベル

変更の可能性あり

ipc_tcp_conn_hash_size

説明

すべてのアクティブ (ESTABLISHED 状態にある) TCP 接続に対する、IP モジュールのハッシュテーブルサイズを制御します。

データ型

符号なし整数

デフォルト

512

範囲

512 から 2,147,483,648

暗黙的制約

この値は 2 のべき乗を指定すべきです。

動的か

いいえ。このパラメータはブート時のみ変更することができます。

検査

パラメータの値が 2 のべき乗でないと、一番近い 2 のべき乗に丸められます。

どのような場合に変更するか

何万に上るアクティブ TCP 接続が継続的にあるシステムでは、この値をそれに応じて増やします。TCP は、デフォルト値で 2 〜 3 千までのアクティブ接続を十分にサポートできます。ハッシュテーブルのサイズを増やすと、それだけ多くのメモリーが必要になりますので、適切な値を指定するようにしてメモリーが不必要に使用されるのを防いでください。

コミットレベル

変更の可能性あり

特別な注意を要する TCP パラメータ

各パラメータで記述する特別な状況である場合以外は、次のパラメータを変更することは推奨されません。

tcp_ip_abort_interval

説明

TCP 接続に対するデフォルトのトータルの再送タイムアウト値をミリ秒で指定します。1 つの TCP 接続について、TCP が tcp_ip_abort_interval の間再転送を行ってもこの間に相手側のエンドポイントから肯定応答を全く受け取らないと、TCP はこの接続をクローズします。

TCP 再送タイムアウト (RTO) の計算については、RFC 1122, 4.2.3 を参照してください。tcp_rexmit_interval_maxも参照してください。

デフォルト

8 分

範囲

500 ミリ秒から 1193 時間

動的か

はい

どのような場合に変更するか

この値は変更しないでください。例外については、tcp_rexmit_interval_maxを参照してください。

コミットレベル

変更の可能性あり

tcp_rexmit_interval_initial

説明

1 つの TCP 接続に対するデフォルトの初期再送タイムアウト値 (RTO) をミリ秒で指定します。ルートごとに異なる値を設定する方法については、後で述べるルート別メトリックの説明を参照してください。

デフォルト

3 秒

範囲

1 ミリ秒から 20 秒

動的か

はい

どのような場合に変更するか

この値は変更しないでください。この値を少なくすると、不要な再転送が行われるおそれがあります。

コミットレベル

変更の可能性あり

tcp_rexmit_interval_max

説明

デフォルトの最大再送タイムアウト値 (RTO) をミリ秒で指定します。すべての TCP 接続に対して、計算された RTO がこの値を超えることはできません。tcp_ip_abort_intervalも参照してください。

デフォルト

60 秒

範囲

1 ミリ秒から 20 秒

動的か

はい

どのような場合に変更するか

通常のネットワーク環境では、この値を変更しないでください。

1 つの接続に対する往復時間 (RTT) が数 10 秒になるような特別な状況では、この値を増やすことができます。この値を変更する場合は、これに合わせて tcp_ip_abort_interval パラメータも変更すべきです。tcp_ip_abort_interval には、tcp_rexmit_interval_max の 4 倍以上の値を指定します。

コミットレベル

変更の可能性あり

tcp_rexmit_interval_min

説明

デフォルトの最小再送タイムアウト値 (RTO) をミリ秒で指定します。すべての TCP 接続に対して、計算された RTO がこの値を下回ることはできません。tcp_rexmit_interval_maxも参照してください。

デフォルト

400 ミリ秒

範囲

1 ミリ秒から 20 秒

動的か

はい

どのような場合に変更するか

通常のネットワーク環境では、この値を変更しないでください。

TCP の RTO 計算は、RTT の最も大きい変動に対処できなければなりません。1 つの接続に対する往復時間 (RTT) が数 10 秒になるような特別な状況では、この値を増やすことができます。この値を変更する場合は、これに合わせて tcp_rexmit_interval_max パラメータも変更すべきです。tcp_rexmit_interval_max には、tcp_rexmit_interval_min の 8 倍以上の値を指定します。

コミットレベル

変更の可能性あり

tcp_rexmit_interval_extra

説明

計算された再送タイムアウト値 (RTO) に加える定数をミリ秒で指定します。

デフォルト

0 ミリ秒

範囲

0 から 2 時間

動的か

はい

どのような場合に変更するか

この値は変更しないでください。

計算された RTO が接続に対して適切でないような状況では、不要な再転送を避けるためにこの値を変更することができます。

コミットレベル

変更の可能性あり

tcp_tstamp_if_wscale

説明

このパラメータに 1 が設定され、かつ、ある接続に対するウィンドウスケールオプションが有効になっていると、TCP は、その接続の timestamp オプションも有効にします。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

この値は変更しないでください。一般に、TCP を高速ネットワークで使用する場合は、シーケンス番号のラップアラウンドに対するプロテクションが必要なため、timestamp オプションの使用が必要になることがあります。

コミットレベル

変更の可能性あり

tcp_recv_hiwat_minmss

説明

デフォルトの最小受信ウィンドウサイズを制御します。最小値は、tcp_recv_hiwat_minmss に、接続の最大セグメントサイズ (MSS) を掛けたものです。

デフォルト

4

範囲

1 から 65,536

動的か

はい

どのような場合に変更するか

この値は変更しないでください。この値を変更する必要がある場合は、4 より小さい値にしないでください。

コミットレベル

変更の可能性あり

tcp_compression_enabled

説明

1 が設定されていると、メモリーを節約するために、TIME-WAIT 状態にある TCP 接続のプロトコル制御ブロックが圧縮されます。0 が設定されていると、圧縮は行われません。tcp_time_wait_intervalも参照してください。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

どのような場合に変更するか

圧縮機能はオフにしないでください。

コミットレベル

変更の可能性あり

UDP チューニング可能パラメータ

この節では、UDP チューニング可能パラメータの一部を説明します。

udp_xmit_hiwat

説明

デフォルトの最大 UDP ソケットデータグラムサイズをバイト数で指定します。詳細は、udp_max_bufを参照してください。

デフォルト

8192 バイト

範囲

4096 から 65,536

動的か

はい

どのような場合に変更するか

このサイズは、アプリケーションで setsockopt(3SOCKET) SO_SNDBUF を使用してソケットごとに変更できることに留意してください。一般には、デフォルト値を変更する必要はありません。

コミットレベル

変更の可能性あり

udp_recv_hiwat

説明

デフォルトの最大 UDP ソケット受信バッファサイズをバイト数で指定します。詳細は、udp_max_bufを参照してください。

デフォルト

8192 バイト

範囲

4096 から 65,536

動的か

はい

どのような場合に変更するか

このサイズは、アプリケーションで setsockopt(3SOCKET) SO_RCVBUF を使用してソケットごとに変更できることに留意してください。一般には、デフォルト値を変更する必要はありません。

コミットレベル

変更の可能性あり

特別な注意を要する UDP パラメータ

各パラメータで記述する特別な状況である場合以外は、次のパラメータを変更することは推奨されません。

udp_max_buf

説明

UDP ソケットに対する送信バッファと受信バッファのサイズの最大値をバイト数で指定します。

デフォルト

262,144 バイト

範囲

65,536 から 1,073,741,824

動的か

はい

どのような場合に変更するか

この値は変更しないでください。このパラメータの値が大きすぎると、UDP ソケットアプリケーションがメモリーを過度に使用するおそれがあります。

コミットレベル

変更の可能性あり

ルート別のメトリック

Solaris 8 リリースでは、ルート別のメトリック (測定基準) を使用して、一定のプロパティを IPv4 や IPv6 のルーティングテーブルエントリに関連付けることができます。

たとえば、システムに、fast ethernet と gigabit ethernet という 2 つの異なるネットワークインタフェースがあるとします。tcp_recv_hiwat のシステムデフォルト値は 24,576 バイトです。このデフォルト値は fast ethernet インタフェースには十分ですが、gigabit ethernet インタフェースには不十分な可能性があります。

tcp_recv_hiwat のシステムデフォルト値を増やす代わりに、gigabit ethernet インタフェースのルーティングエントリに別のデフォルトの TCP 受信ウィンドウサイズを関連付けることができます。これにより、そのルートを通るすべての TCP 接続には、大きくした受信ウィンドウサイズが使用されます。

IPv4 の場合、ルーティングテーブルは次のように表示されます (netstat -rn)。


192.123.123.0        192.123.123.4         U        1      4  hme0
192.123.124.0        192.123.124.4         U        1      4  ge0
default              192.123.123.1         UG       1      8

次のコマンドを実行します。


# route change -net 192.123.124.0 -recvpipe x

このコマンドの結果、ge0 リンクの 192.123.124.0 ネットワークへのすべての接続には、デフォルトの受信ウィンドウサイズ 24567 の代わりに、受信バッファサイズ x が使用されます。

宛先が a.b.c.d ネットワークにあり、そのネットワーク固有のルーティングエントリがない場合は、そのネットワークに接頭辞ルートを追加し、メトリックを変更できます。

たとえば、次のようにします。


# route add -net a.b.c.d 192.123.123.1 -netmask w.x.y.z
# route change -net a.b.c.d -recvpipe y

接頭辞ルートのゲートウェイがデフォルトのルーターであることに留意してください。そのネットワークへのすべての接続は受信バッファサイズ y を使用します。複数のインタフェースがある場合は、-ifp 引数を使用して、使用するインタフェースを指定します。それによって、特定の宛先に対してどのインタフェースを使用するかを制御できます。メトリックを検査するには、route(1M) get コマンドを使用します。