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

第 4 章 インターネットプロトコル群のチューニング可能パラメータ

この章では、TCP、IP、UDP、SCTP などのインターネットプロトコル群の各種パラメータについて説明します。

チューニング可能パラメータ情報の記載箇所

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

参照先 

Solaris カーネルのチューニング可能パラメータ 

第 2 章Oracle Solaris カーネルチューニング可能パラメータ

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

第 3 章NFS チューニング可能パラメータ

ネットワークキャッシュとアクセラレータ (NCA) のチューニング可能パラメータ 

第 5 章ネットワークキャッシュとアクセラレータのチューニング可能パラメータ

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

IP 転送関連の最新情報については、「追加または変更された TCP/IP パラメータ」を参照してください。

ndd コマンドを使って、この章で説明するすべてのチューニングパラメータを設定できます。ただし、次に示すパラメータは例外です。

これらのパラメータは、/etc/system ファイル内にのみ設定できます。

たとえば、ndd コマンドを使って TCP/IP パラメータを設定するには、次の構文を使用します。


# ndd -set driver parameter

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

SMF フレームワークは、システムサービスを管理するための方法を提供しますが、ndd コマンドは引き続きシステム起動スクリプトに含まれています。起動スクリプトの作成方法については、『Solaris のシステム管理 (基本編)』「実行制御スクリプトの使用」を参照してください。

IP パラメータの妥当性検査

この節で紹介するすべてのパラメータを対象に、パラメータ範囲内であるかどうかのチェックが行われます。パラメータ範囲は、各パラメータの説明に記載されています。

RFC (Internet Request for Comments)

インターネットのプロトコルと標準の仕様は、RFC 文書に記述されています。RFC のコピーは、ftp://ftp.rfc-editor.org/in-notes から取得可能です。このサイトの rfc-index.txt ファイル中で RFC のトピックを探してください。

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

ip_icmp_err_interval ip_icmp_err_burst

備考欄

IP で IPv4 または IPv6 ICMP エラーメッセージを生成する頻度を制御します。IP は、ip_icmp_err_interval の間に最大で ip_icmp_err_burst の IPv4 または IPv6 ICMP エラーメッセージを生成します。

ip_icmp_err_interval パラメータは、サービス拒否攻撃から IP を保護するためのものです。パラメータの値を 0 に設定すると、レート制限が無効になります。エラーメッセージの生成処理は無効になりません。

デフォルト

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_respond_to_echo_broadcast ip6_respond_to_echo_multicast

備考欄

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

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

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

コミットレベル

変更の可能性あり

ip_send_redirectsip6_send_redirects

備考欄

IPv4 または IPv6 が、ICMPv4 または ICMPv6 リダイレクトメッセージを送信するかどうかを制御します。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

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

コミットレベル

変更の可能性あり

ip_forward_src_routed ip6_forward_src_routed

備考欄

IPv4 または IPv6 が、パケットをソース IPv4 ルーティングオプションを指定して転送するか、IPv6 ルーティングヘッダーを指定して転送するかを制御します。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

サービス妨害攻撃を防ぐためにこのパラメータは無効のままにします。

コミットレベル

変更の可能性あり

変更履歴

詳細は、ip_forward_src_routed ip6_forward_src_routed (Solaris 10 リリース)」を参照してください。

ip_addrs_per_if

備考欄

実インタフェースに対応する論理インタフェースの 最大数を指定します。

デフォルト

256

範囲

1 から 8192

動的か

はい

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

この値は変更しないでください。論理インタフェースの数を増やす必要がある場合は、例外的に値を増やすことができるかもしれません。ただし、この変更が IP のパフォーマンスに悪影響を及ぼす可能性があります。

コミットレベル

変更の可能性あり

ip_strict_dst_multihoming ip6_strict_dst_multihoming

備考欄

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

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

デフォルト

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

範囲

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

1 = オン (厳密なマルチホーミング)

動的か

はい

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

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

コミットレベル

変更の可能性あり

ip_multidata_outbound

備考欄

ネットワークスタックが、転送時、一度に複数のパケットをネットワークデバイスドライバ宛てに送信できるようにします。

このパラメータを有効にすると、ホスト CPU の利用率またはネットワークスループット (あるいはこの両方) が向上し、パケットあたりの処理コストが減少します。

現在このパラメータは、IP フラグメントを転送するための複数データ送信 (MDT) 機能を制御します。たとえば、リンク MTU より大きい UDP ペイロードを送信する場合があります。このチューニング可能パラメータが有効になっている場合、UDP などの特定の上位レベルプロトコルの IP フラグメントがバッチ内でネットワークデバイスドライバに送信されます。この機能を無効にすると、ネットワークスタック内の TCP および IP 断片化ロジックの両方がもとに戻り、一度に 1 つのパケットをドライバに送信するようになります。

MDT 機能を利用できるのは、この機能をサポートするデバイスドライバのみです。

tcp_mdt_max_pbufsも参照してください。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

このパラメータをデバッグやその他の目的で有効にする必要がない場合は、無効にします。

コミットレベル

変更の可能性あり

変更履歴

詳細は、ip_multidata_outbound (Solaris 10 リリース)」を参照してください。

ip_squeue_fanout

備考欄

squeue と TCP/IP 接続 を関連付けるモードを判定します。

値 0 の場合、新しい TCP/IP 接続と、この接続を作成した CPU が関連付けられます。値 1 の場合、異なる CPU に属する複数の squeue との接続が関連付けられます。接続を展開するために使用される squeue の数は、ip_soft_rings_cntに基づいています。

デフォルト

0

範囲

0 または 1

動的か

はい

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

特定の条件下で、すべての CPU に負荷を分散したい場合、このパラメータの値を 1 に設定します。たとえば、CPU 数が NIC 数を上回り、単一の NIC のネットワーク負荷を処理できない CPU ができた場合、このパラメータの値を 1 にします。

ゾーン構成

このパラメータを設定できるのは、大域ゾーン内だけです。

コミットレベル

変更の可能性あり

変更履歴

詳細は、ip_squeue_fanout (Solaris 10 11/06 リリース)」を参照してください。

ip_soft_rings_cnt

備考欄

受信 TCP/IP 接続を展開するために使用される squeue の数を決定します。


注 –

着信トラフィックは、いずれかのリングに置かれます。リングが過負荷になっている場合、パケットは破棄されます。パケットが破棄されるたびに、kstat dls カウンタ dls_soft_ring_pkt_drop が増分されます。


デフォルト

2

範囲

0 から nCPU。nCPU は、システム内の CPU の最大数です。

動的か

いいえ。このパラメータを変更する場合は、インタフェースを再び plumb します。

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

10 Gbps の NIC および多くの CPU が搭載されたシステムでは、このパラメータを 2 より大きい値に設定することを検討してください。

ゾーン構成

このパラメータを設定できるのは、大域ゾーン内だけです。

コミットレベル

旧式

変更履歴

詳細は、ip_soft_rings_cnt (Solaris 10 11/06 リリース)」を参照してください。

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

次のパラメータの変更は非推奨です。

ip_ire_pathmtu_interval

備考欄

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

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

デフォルト

10 分

範囲

5 秒から 277 時間

動的か

はい

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

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

コミットレベル

変更の可能性あり

ip_icmp_return_data_bytes ip6_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_local_dack_interval

備考欄

直接接続しているホストに対する TCP 遅延肯定応答 (ACK) タイマーのタイムアウト値を指定します。

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

デフォルト

50 ミリ秒

範囲

10 から 500 ミリ秒

動的か

はい

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

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

次の場合は、値を増やします。

  • ネットワークリンクが遅く (57.6 Kbps 未満)、最大セグメントサイズ (MSS) が 512 バイトを超える

  • この間隔が複数のTCP セグメントを受信するには短すぎる

コミットレベル

変更の可能性あり

変更履歴

詳細は、tcp_local_dack_interval (Solaris 10 リリース)」を参照してください。

tcp_deferred_acks_max

備考欄

肯定応答 (ACK) が生成される前にリモート宛先 (直接接続していない) から受け取られる TCP セグメントの最大数を指定します。TCP セグメントは、個々の接続の最大セグメントサイズ (MMS) 単位で表されます。このパラメータに 0 か 1 を設定すると、すべてのセグメントが 1 MSS の長さであるとみなされ、遅延 ACK は使用されなくなります。実際の数は、接続ごとに動的に計算されます。この値はデフォルトの最大値です。

デフォルト

2

範囲

0 から 16

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_local_dacks_max

備考欄

肯定応答 (ACK) が生成される前に宛先 (直接接続している) から受け取られる TCP セグメントの最大数を指定します。TCP セグメントは、個々の接続の最大セグメントサイズ (MMS) 単位で表されます。このパラメータに 0 か 1 を設定すると、すべてのセグメントが 1 MSS の長さであるとみなされ、遅延 ACK は使用されなくなります。実際の数は、接続ごとに動的に計算されます。この値はデフォルトの最大値です。

デフォルト

8

範囲

0 から 16

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_wscale_always

備考欄

このパラメータが有効になっていると (デフォルトの設定)、ウィンドウスケールオプションの値が 0 の場合でも、TCP は常にウィンドウスケールオプションを指定して SYN セグメントを送信します。ウィンドウスケールオプションの指定された SYN セグメントを受信すると、パラメータが無効になっている場合でも、TCP は、ウィンドウスケールオプションを指定して SYN セグメントに応答します。オプションの値は受信ウィンドウサイズに従って設定されます。

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

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

ウィンドウスケールオプションをサポートしていない古い TCP スタックとの相互運用性の問題がある場合は、このパラメータを無効にしてください。

コミットレベル

変更の可能性あり

変更履歴

詳細は、 tcp_wscale_always (Solaris 9 リリース)」を参照してください。

tcp_tstamp_always

備考欄

1 が設定されていると、TCP は常にタイムスタンプオプションを指定して SYN セグメントを送信します。TCP は、タイムスタンプオプションの指定された (0 の場合もある) SYN セグメントを受信すると、タイムスタンプオプションを指定して SYN セグメントに応答します。

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

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

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

コミットレベル

変更の可能性あり

tcp_xmit_hiwat

備考欄

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

デフォルト

49,152

範囲

4096 から 1,073,741,824

動的か

はい

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

アプリケーションは setsockopt(3XNET) SO_SNDBUF を使って、送信バッファーを接続ごとに変更できます。

コミットレベル

変更の可能性あり

tcp_recv_hiwat

備考欄

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

デフォルト

49,152

範囲

2048 から 1,073,741,824

動的か

はい

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

アプリケーションは setsockopt(3XNET) SO_RCVBUF を使って、受信バッファーを接続ごとに変更できます。

コミットレベル

変更の可能性あり

tcp_max_buf

備考欄

最大バッファーサイズをバイト数で指定します。このパラメータは、setsockopt(3XNET) を使用するアプリケーションによって設定される送信バッファーサイズと受信バッファーサイズを制御します。

デフォルト

1,048,576

範囲

8192 から 1,073,741,824

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_cwnd_max

備考欄

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

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

デフォルト

1,048,576

範囲

128 から 1,073,741,824

動的か

はい

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

アプリケーションが setsockopt(3XNET) を使用してウィンドウサイズに 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 セグメントを送信します。SACK 許可オプションとして値 1 が指定されている SYN セグメントを受信した場合、TCP は SACK 許可オプションを指定して応答します。値 0 が設定されている場合は、着信セグメントに SACK 許可オプションが指定されているかどうかにかかわらず、TCP は SACK 許可オプションを送信しません。

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

デフォルト

2 (自発的に有効にする)

範囲

0 (無効)、1 (受動的に有効にする)、2 (自発的に有効にする) のいずれか

動的か

はい

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

SACK 処理を行うと TCP 再送のパフォーマンスが向上するため、自発的に有効にします。自発的に有効にすると相手方が混乱するおそれがある場合は、1 を設定します。この場合、SACK 処理は、着信接続で SACK 処理が許可されているときにのみ行われます。

コミットレベル

変更の可能性あり

tcp_rev_src_routes

備考欄

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

デフォルト

0 (無効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_time_wait_interval

備考欄

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

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

デフォルト

600,000 (60 秒)

範囲

1 秒から 10 分

動的か

はい

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

この値は 60 秒より小さくしないでください。

このパラメータの変更方法については、RFC 1122 の 4.2.2.13 を参照してください。

コミットレベル

変更の可能性あり

tcp_ecn_permitted

備考欄

ECN (Explicit Congestion Notification、明示的輻輳通知) のサポートを制御します。

このパラメータが 0 に設定されていると、TCP は、ECN 機構をサポートしている接続先とのネゴシエーションを行いません。

接続開始時にこのパラメータが 1 に設定されていると、TCP は、ECN 機構をサポートしていることを接続先に通知しません。

ただし、接続先が SYN セグメントで ECN 機構をサポートしていることを示した場合、TCP は、新しい着信接続要求を受けた際に、ECN 機構をサポートしていることを接続先に通知します。

このパラメータを 2 に設定すると、TCP は接続を受け付けた時点で ECN 機構に関して接続先とネゴシエーションを行います。さらに、TCP は自発的な送信接続を行う際に、送信する SYN セグメント内で、ECN 機構をサポートしていることを示します。

ECN については、RFC 3168 を参照してください。

デフォルト

1 (受動的に有効にする)

範囲

0 (無効)、1 (受動的に有効にする)、2 (自発的に有効にする) のいずれか

動的か

はい

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

TCP は、ECN を利用して、輻輳制御の処理を効率化できます。ただし、この機構により、既存の TCP 実装やファイアウォール、NAT などのネットワークデバイスが混乱する場合もあります。混乱するデバイスは IETF 非準拠です。

これらのデバイスを考慮し、このパラメータのデフォルト値は 1 に設定されています。ただし、まれに、受動的に有効にした場合でも問題が生じる場合があります。必要がある場合以外は、パラメータを 0 に設定しないでください。

コミットレベル

変更の可能性あり

tcp_conn_req_max_q

備考欄

accept(3SOCKET) によって受け付けられるのを待っている TCP リスナーの、保留状態の 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 よりもはるかに少ないことがあります。

コミットレベル

変更の可能性あり

変更履歴

xxx:ip_forwarding (Solaris 9 リリース)」を参照してください。

tcp_conn_req_max_q0

備考欄

単一の TCP リスナーが持つことができる、不完全な (3 段階ハンドシェークがまだ終わっていない) 保留状態の 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 要求がドロップされます。

コミットレベル

変更の可能性あり

変更履歴

xxx:ip_forwarding (Solaris 9 リリース)」を参照してください。

tcp_conn_req_min

備考欄

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

デフォルト

1

範囲

1 から 1024

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_rst_sent_rate_enabled

備考欄

このパラメータに 1 が設定されている場合、RST セグメントの最大送信速度は、ndd パラメータ tcp_rst_sent_rate によって制御されます。このパラメータに 0 が設定されている場合、RST セグメントの送信時に速度を制御することはできません。

デフォルト

1 (有効)

範囲

0 (無効)、1 (有効)

動的か

はい

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

このチューニング可能パラメータは、RST セグメントの送信速度を制限することで、TCP に対するサービス拒否攻撃を防止します。この速度制御は、RFC 793 に厳密に準拠する必要がある場合にのみ、無効になります。

コミットレベル

変更の可能性あり

tcp_rst_sent_rate

備考欄

TCP が 1 秒間に送信できる最大 RST セグメント数を設定します。

デフォルト

40

範囲

0 から 4,294,967,296

動的か

はい

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

TCP 環境では、正当な理由により、デフォルト値より多くの RST が生成される場合があります。このような場合は、このパラメータのデフォルト値を引き上げます。

コミットレベル

変更の可能性あり

tcp_mdt_max_pbufs

備考欄

TCP によって生成される、1 つの M_MULTIDATA メッセージで伝達できるペイロードバッファーの数を指定します。ip_multidata_outboundも参照してください。

デフォルト

16

範囲

1 から 16

動的か

はい

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

このパラメータを減少させると、TCP によって生成される M_MULTIDATA メッセージごとのペイロードバッファーの量を制限し、デバイスドライバ開発のデバッグに役立つことがあります。

コミットレベル

変更の可能性あり

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

次のパラメータは、/etc/system ファイル内でのみ設定できます。ファイルを変更したあとで、システムをリブートしてください。

たとえば、次のエントリでは ipcl_conn_hash_size パラメータを設定します。


set ip:ipcl_conn_hash_sizes=value

ipcl_conn_hash_size

備考欄

IP によって使用される接続ハッシュテーブルのサイズを制御します。デフォルト値 0 の場合、システムは、使用可能なメモリー容量に基づいて、ブート時にこのパラメータの適切な値を自動的に決定します。

データ型

符号なし整数

デフォルト

0

範囲

0 から 82,500

動的か

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

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

常に非常に大量の TCP 接続が確立されているシステムでは、それに応じてこの値を増やすことができます。ハッシュテーブルサイズを大きくすると、より多くのメモリーが消費され、ユーザーアプリケーション用として提供できるメモリーの量が減ります。

コミットレベル

変更の可能性あり

ip_squeue_worker_wait

備考欄

TCP/IP パケットを squeue に格納して処理するワークスレッドが起動するまでの最大遅延時間を制御します。squeue は TCP/IP カーネルコードが TCP/IP パケット処理に使用する直列化キューです。

デフォルト

10 ミリ秒

範囲

0 から 50 ミリ秒

動的か

はい

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

遅延が発生しないほうが望ましく、かつ、ネットワークトラフィックが少ない場合。たとえば、対話型ネットワークトラフィックの大部分がマシンで処理されている場合など。

ネットワークファイルサーバー、Web サーバーなど、実際にネットワークトラフィックが発生しているすべてのサーバーでは、通常、デフォルト値が最適です。

ゾーン構成

このパラメータを設定できるのは、大域ゾーン内だけです。

コミットレベル

変更の可能性あり

変更履歴

詳細は、ip_squeue_worker_wait (Solaris 10 11/06 リリース)」を参照してください。

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

次のパラメータの変更は非推奨です。

tcp_ip_abort_interval

備考欄

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

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

デフォルト

8 分

範囲

500 ミリ秒から 1193 時間

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_rexmit_interval_initial

備考欄

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

デフォルト

3 秒

範囲

1 ミリ秒から 20 秒

動的か

はい

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

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

コミットレベル

変更の可能性あり

tcp_rexmit_interval_max

備考欄

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

デフォルト

60 秒

範囲

1 ミリ秒から 2 時間

動的か

はい

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

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

単一の接続の往復時間 (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 のもっとも大きい変動に対処できます。単一の接続の往復時間 (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 より小さい値にしないでください。

コミットレベル

変更の可能性あり

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

udp_xmit_hiwat

備考欄

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

デフォルト

57,344 バイト

範囲

1,024 から 1,073,741,824 バイト

動的か

はい

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

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

コミットレベル

変更の可能性あり

変更履歴

詳細は、udp_xmit_hiwat (Solaris 9 リリース)」を参照してください。

udp_recv_hiwat

備考欄

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

デフォルト

57,344 バイト

範囲

128 から 1,073,741,824 バイト

動的か

はい

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

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

コミットレベル

変更の可能性あり

変更履歴

詳細は、udp_recv_hiwat (Solaris 9 リリース)」を参照してください。

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

次のパラメータの変更は非推奨です。

udp_max_buf

備考欄

UDP ソケット用の送信バッファーと受信バッファーのサイズを制御します。

デフォルト

2,097,152 バイト


範囲

65,536 から 1,073,741,824 バイト

動的か

はい

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

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

コミットレベル

変更の可能性あり

変更履歴

詳細は、udp_max_buf (Solaris 9 リリース)」を参照してください。

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

ip_policy_mask

備考欄

IPQoS 処理を有効または無効 にします。有効または無効にするコールアウト位置は、次のとおりです。 転送送信、転送受信、ローカル送信、またはローカル受信。このパラメータは、次のようなビットマスクになっています。

使用しない 

使用しない 

使用しない 

使用しない 

転送送信 

転送受信 

ローカル送信 

ローカル受信 

どの位置でも 1 であれば、その特定のコールアウト位置で IPQoS 処理をマスク、すなわち無効にします。たとえば、 0x01 の値は、すべてのローカル受信パケットの IPQoS 処理を無効にします。

デフォルト

0 (すべてのコールアウト位置で IPQoS 処理が有効)

範囲

0 (0x00) から 15 (0x0F)。15 の場合、すべてのコールアウト位置の IPQoS 処理が無効

動的か

はい

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

いずれかのコールアウト位置で IPQoS 処理を有効または無効にしたい場合

コミットレベル

変更の可能性あり

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

sctp_max_init_retr

備考欄

SCTP 終端が INIT チャンクの再送信位置で行う最大試行回数を制御します。SCTP 終端は、SCTP 設定構造で、この値を上書きできます。

デフォルト

8


範囲

0 から 128

動的か

はい

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

INIT 再送回数は sctp_pa_max_retr に依存します。sctp_max_init_retrsctp_pa_max_retr 以下であれば理想的です。

コミットレベル

変更の可能性あり

sctp_pa_max_retr

備考欄

SCTP 接続のすべてのパスを経由する最大再送回数を制御します。この値を超過すると、SCTP 接続は終了します。

デフォルト

10


範囲

1 から 128

動的か

はい

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

すべてのパスを経由する最大再送回数は、パスの数と各パスの最大再送回数によって決定されます。 sctp_pa_max_retr は、使用可能なすべてのパスの sctp_pp_max_retr の合計に設定するべきです。たとえば、宛先までのパス数が 3 で、これらのパスの最大再送回数がそれぞれ 5 回である場合、sctp_pa_max_retr には 15 以下の値を設定するべきです (RFC 2960、Section 8.2 の Note を参照)。

コミットレベル

変更の可能性あり

sctp_pp_max_retr

備考欄

特定のパスを経由する最大再送回数を制御します。この数値を超過したパスがあると、パス (宛先) に到達できません。

デフォルト

5


範囲

1 から 128

動的か

はい

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

この値を 5 より小さい値に変更しないでください。

コミットレベル

変更の可能性あり

sctp_cwnd_max

備考欄

SCTP 接続の輻輳ウィンドウの最大値を制御します。

デフォルト

1,048,576

範囲

128 から 1,073,741,824

動的か

はい

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

アプリケーションが setsockopt(3XNET) を使用してウィンドウサイズに sctp_cwnd_max より大きい値を設定しようとしても、使用される実際のウィンドウが sctp_cwnd_max を超えることはありません。したがって、sctp_max_bufsctp_cwnd_max より大きくするべきです。

コミットレベル

変更の可能性あり

sctp_ipv4_ttl

備考欄

SCTP 接続上で、発信 IP バージョン 4 パケットの IP バージョン 4 ヘッダーの TTL 値を制御します。

デフォルト

64


範囲

1 から 255

動的か

はい

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

通常、この値を変更する必要はありません。宛先パスが 64 ホップを超過しそうな場合は、このパラメータの値を大きくします。

コミットレベル

変更の可能性あり

sctp_heartbeat_interval

備考欄

HEARTBEAT チャンクからハードビートに対応したアイドル状態の宛先までの間隔を計算します。

SCTP 終端は、相手側のアイドル状態の宛先転送アドレスまでの到達性を監視するため、定期的に HEARTBEAT チャンクを送信します。

デフォルト

30 秒


範囲

0 から 86,400 秒

動的か

はい

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

RFC 2960 の 8.3 を参照してください。

コミットレベル

変更の可能性あり

sctp_new_secret_interval

備考欄

新しいシークレットを生成するタイミングを判定します。生成されたシークレットから、Cookie の MAC を計算できます。

デフォルト

2 分


範囲

0 から 1,440 分

動的か

はい

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

RFC 2960 の 5.1.3 を参照してください。

コミットレベル

変更の可能性あり

sctp_initial_mtu

備考欄

IP ヘッダー長を含めた SCTP パケットの初期最大送信サイズを判定します。

デフォルト

1500 バイト


範囲

68 から 65,535

動的か

はい

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

基底リンクが 1500 バイト以上のフレームサイズをサポートする場合は、このパラメータの値を大きくします。

コミットレベル

変更の可能性あり

sctp_deferred_ack_interval

備考欄

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

デフォルト

100 ミリ秒


範囲

1 から 60,000 ミリ秒

動的か

はい

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

RFC 2960 の 6.2 を参照してください。

コミットレベル

変更の可能性あり

sctp_ignore_path_mtu

備考欄

パス MTU 検出の有効/無効を切り替えます。

デフォルト

0 (無効)


範囲

0 (無効)、1 (有効)

動的か

はい

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

パスにおける MTU の変更を無視する場合、このパラメータを有効にします。パス MTU が減った場合、このパラメータを有効にすると、IP 分割が行われます。

コミットレベル

変更の可能性あり

sctp_initial_ssthresh

備考欄

相手側の宛先アドレスの初期スロースタートしきい値を設定します。

デフォルト

102,400


範囲

1024 から 4,294,967,295

動的か

はい

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

RFC 2960 の 7.2.1 を参照してください。

コミットレベル

変更の可能性あり

sctp_xmit_hiwat

備考欄

デフォルトの送信ウィンドウサイズをバイト数で指定します。sctp_max_buf も参照してください。

デフォルト

102,400


範囲

8,192 から 1,073,741,824

動的か

はい

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

アプリケーションは、getsockopt(3SOCKET) SO_SNDBUF を使って、個々の接続の送信バッファーを変更できます。

コミットレベル

変更の可能性あり

sctp_xmit_lowat

備考欄

送信ウィンドウサイズの下限値を制御します。

デフォルト

8,192


範囲

8,192 から 1,073,741,824

動的か

はい

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

通常、この値を変更する必要はありません。このパラメータは、ソケットの送信バッファーを書き込み可能にするために必要な最小限のサイズを設定します。必要に応じて、sctp_xmit_hiwat と一致するようにこのパラメータを変更できます。

コミットレベル

変更の可能性あり

sctp_recv_hiwat

備考欄

デフォルトの受信ウィンドウサイズをバイト数で指定します。sctp_max_buf も参照してください。

デフォルト

102,400


範囲

8,192 から 1,073,741,824

動的か

はい

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

アプリケーションは、getsockopt(3SOCKET) SO_RCVBUF を使って、個々の接続の受信バッファーを変更できます。

コミットレベル

変更の可能性あり

sctp_max_buf

備考欄

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

デフォルト

1,048,576


範囲

8,192 から 1,073,741,824

動的か

はい

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

高速ネットワーク環境で接続を確立する場合は、ネットワークリンク速度に合わせて、このパラメータの値を大きくします。

コミットレベル

変更の可能性あり

sctp_ipv6_hoplimit

備考欄

SCTP 接続上で、発信 IP バージョン 6 パケットの IP バージョン 6 ヘッダのホップ制限値を設定します。

デフォルト

60


範囲

0 から 255

動的か

はい

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

通常、この値を変更する必要はありません。宛先パスが 60 ホップを超過しそうな場合は、このパラメータの値を大きくします。

コミットレベル

変更の可能性あり

sctp_rto_min

備考欄

相手側のすべての宛先アドレスの再送タイムアウト (RTO) の下限値をミリ秒で設定します。

デフォルト

1,000


範囲

500 から 60,000

動的か

はい

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

RFC 2960 の 6.3.1 を参照してください。

コミットレベル

変更の可能性あり

sctp_rto_max

備考欄

相手側のすべての宛先アドレスの再送タイムアウト (RTO) の上限値をミリ秒で設定します。

デフォルト

60,000


範囲

1,000 から 60,000,000

動的か

はい

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

RFC 2960 の 6.3.1 を参照してください。

コミットレベル

変更の可能性あり

sctp_rto_initial

備考欄

相手側のすべての宛先アドレスの初期再送タイムアウト (RTO) 値をミリ秒で制御します。

デフォルト

3,000


範囲

1,000 から 60,000,000

動的か

はい

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

RFC 2960 の 6.3.1 を参照してください。

コミットレベル

変更の可能性あり

sctp_cookie_life

備考欄

Cookie の寿命をミリ秒で設定します。

デフォルト

60,000


範囲

10 から 60,000,000

動的か

はい

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

通常、この値を変更する必要はありません。このパラメータは、sctp_rto_max に合わせて変更できます。

コミットレベル

変更の可能性あり

sctp_max_in_streams

備考欄

SCTP 接続 1 個あたりに許可された最大着信ストリーム数を制御します。

デフォルト

32


範囲

1 から 65,535

動的か

はい

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

RFC 2960 の 5.1.1 を参照してください。

コミットレベル

変更の可能性あり

sctp_initial_out_streams

備考欄

SCTP 接続 1 個あたりに許可された最大発信ストリーム数を制御します。

デフォルト

32


範囲

1 から 65,535

動的か

はい

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

RFC 2960 の 5.1.1 を参照してください。

コミットレベル

変更の可能性あり

sctp_shutack_wait_bound

備考欄

SHUTDOWN チャンクの送信後、SHUTDOWN ACK を待機する最大待ち時間をミリ秒で制御します。

デフォルト

60,000


範囲

0 から 300,000

動的か

はい

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

通常、この値を変更する必要はありません。このパラメータは、sctp_rto_max に合わせて変更できます。

コミットレベル

変更の可能性あり

sctp_maxburst

備考欄

1 つのバーストで送信されるセグメント数の制限値を設定します。

デフォルト

4


範囲

2 から 8

動的か

はい

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

このパラメータを変更する必要はありません。この値はテスト目的で変更する場合があります。

コミットレベル

変更の可能性あり

sctp_addip_enabled

備考欄

SCTP 動的アドレス構成の有効/無効を切り替えます。

デフォルト

0 (無効)


範囲

0 (無効)、1 (有効)

動的か

はい

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

動的アドレス構成が必要な場合は有効にします。セキュリティー上、このパラメータはテスト目的以外では有効にしないでください。

コミットレベル

変更の可能性あり

sctp_prsctp_enabled

備考欄

SCTP に対する部分的な信頼の拡張 (RFC 3758) の有効/無効を切り替えます。

デフォルト

1 (有効)


範囲

0 (無効)、1 (有効)

動的か

はい

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

ご使用の SCTP 環境で部分的な信頼がサポートされていない場合、無効にします。

コミットレベル

変更の可能性あり

ルート別のメトリック

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 コマンドを使用します。