sctpctrl コマンド

目的

SCTP の制御と構成を行います。

構文

sctpctrl { load|dump|set}

sctpctrl stats [reset] [ interval]

sctpctrl set {name=value|default [name]}

sctpctrl get [name]

説明

sctpctrl コマンドは、SCTP カーネル・エクステンションの制御と構成に使用します。 このコマンドは、SCTP カーネル・エクステンションのロードおよびアンロードに使用できます。 また、SCTP データのダンプ、および各種の SCTP チューナブルの設定または検索にも使用できます。 さらに、sctpctrl コマンドを使用して、SCTP 固有のネットワーク統計情報の読み取りおよびリセットを行うこともできます。

パラメーター

項目 説明
load SCTP カーネル・エクステンションがロードされていない場合は、ロードします。
dump 内部 SCTP 構造に関する情報をダンプします。
stats [reset] [interval] SCTP 統計情報を表示します。 オプションの reset コマンドを使用すると、統計情報がクリア (ゼロにリセット) されます。 interval パラメーター (秒) を追加すると、プログラムは終了せず、[interval] 秒ごとに統計情報を出力します。
set {name=value| default [name]} SCTP チューナブルを特定の値に設定します。 default を指定すると、すべてのチューナブルがデフォルト値に設定されます。 オプションの [name] を指定し、続いて default を指定すると、name で記述されたチューナブルがデフォルト値に設定されます。
get [name] オプションの name パラメーターで記述されたチューナブルの値を取得します。 name パラメーターを指定しない場合は、すべてのチューナブルのデフォルトが取得されます。

チューナブル・パラメーター

sctpctrl コマンドは、SCTP チューニング・パラメーターの構成にも使用されます。 行われた変更は永続せず、システムのリブートが行われるたびに変更を設定する必要があります。 チューナブル・パラメーターについて、次の表で説明します。

項目 説明
パラメーター 目的 有効範囲 デフォルト
sctp_low_rto ゼロでない場合、この値は RTO.min (再送信タイムアウト) の代わりに使用されます。この値は、ミリ秒単位で指定されます。 200 より小さい値は指定できません。指定可能なタイムアウト値は、200、250、300、350 などです。 この値は、新しい RTT (往復時間) の測定が行われるたびに検査され、またパケット・ロスが原因で RTO が調整されるときにも検査されます。 RFC 4960 (Request for Comment) 文書で指定されているとおり、このチューナブルのデフォルト値はゼロです。つまり、RTO.Min の最小値 (1 秒) が使用されます。
sctp_enable_shutdown_guard このチューナブルをゼロでない値に設定すると、T5 シャットダウン・ガード・タイマーが使用可能に設定されます。関連付けがシャットダウン保留状態になったときに計時が開始されるため、このタイマーは RFC 準拠ではありません。 この値は、関連付けのシャットダウン時にのみ検査されます。 このチューナブルのデフォルト値はゼロです。つまり、T5 シャットダウン・ガード・タイマーは使用されません。
sctp_max_init_attempts このチューナブル・パラメーターは、INIT パケットの再送信において許可される試行の最大数を指定します。  

このチューナブル・パラメーターのデフォルト値は、8 です。

sctp_max_init_timeo このチューナブル・パラメーターの値がゼロ以外であれば、RTO.max パラメーター (再送信タイムアウト) の代わりに、そのチューナブル値が INIT パケットに使用されます。 これは、ミリ秒単位で指定します。 200 ミリ秒より小さい値は指定できません。 有効なタイムアウト値は 200、250、300、350 などです。 このチューナブル・パラメーターは、INIT パケットが再送信されるときに使用される最大値を指定します。

このチューナブル・パラメーターのデフォルト値は、ゼロ秒です。 その場合、sctp_rttmax チューナブル・パラメーターが使用されます。

sctp_shutdown_guard_timer sctp_enable_shutdown_guard パラメーターがゼロ以外の値である場合、このチューナブルはシャットダウン・タイムアウト値 (秒) を定義します。 この値は、関連付けのシャットダウン時にのみ検査されます。 デフォルト値は 300 秒です。この値は、RFC によって指定された T5 シャットダウン・ガード・タイマーの値です。
sctp_peerchangespath このチューナブルをゼロでない値に設定すると、現行基本パスとは別のパスからの着信データ・チャンクに基づいて基本パスが変更されます。 この値は、データ・チャンクが着信するたびに検査されます。 このチューナブルのデフォルト値は 1 で、既存の動作が保持されます。
sctp_delack_timer このチューナブルは、遅延 ack タイマーのタイマー値をティック単位で指定します (1 ティック = 50 ms (ミリ秒))。 ACCEPTCONN ソケットの場合、この値はセットアップ時に設定され、そのソケットを共有するすべての関連付けに使用されます。 ACCEPTCONN ソケット以外のソケットの場合は、関連付けの作成時にこの値が設定されます。 このため、このチューナブルを変更しても、既に存在している関連付けに影響はありません。 デフォルト値は 4 ティック (200 ms) です。
sctp_drop_gapacks 1 に設定すると、送信側のソケット送信バッファーからすべての GAPACKED パケットがドロップされるので、新規パケットのためにスペースが解放されます。
注: これは RFC 非互換のチューナブルで、他の実装環境との相互運用性に影響する可能性があり、場合によってはメッセージ損失が生じます。
このチューナブルは、GAPACKED パケットが処理されるたびに検査されます。 デフォルト値は 0 (使用不可に設定) です。
sctp_dontdelayack 1 に設定すると、1 つおきの DATA パケットに対して SACK パケットが送信されます。 それ以外の場合は、遅延 ack タイマーが開始されます。 このチューナブルを更新すると、即時に影響が現れます。 デフォルト値は 1 です。
sctp_nagle 1 に設定すると、最小でも 1 MTU (最大伝送単位) のデータが送信されるようになります。 このチューナブルを更新すると、即時に影響が現れます。 デフォルト値は 1 です (nagle が使用可能に設定される)。
sctp_maxburst ゼロ以外の場合、送信されるパケットの最大数はこの値に制限されます。 このチューナブルを更新すると、即時に影響が現れます。 デフォルト値は 8 パケットです。
sctp_rttmax このチューナブルは、RTO 計算の実行時に使用される最大値を指定します。 sctp_low_rto パラメーターと同様に、この値は新しい RTT の測定が行われる (また、その値を使用して RTO が計算される) たびに検査され、パケット・ロスによって RTO が調整されるときにも検査されます。 デフォルト値は 60 秒です。
sctp_rttmin このチューナブルは、RTO 計算の実行時に使用される最小値を指定します。 sctp_low_rto パラメーターがゼロでない場合、この値は無視されます。 それ以外の場合は、RTT の測定が新しく行われるたびに値が検査され、パケット・ロスによって RTO が停止したときにも検査されます。 デフォルト値は 1 秒です。これにより、RTO が最小でもこの値を下回らないようになります。
sctp_assoc_maxerr このチューナブルは、全体の関連付けエラー件数を設定します。 エラー件数がこの値を超えると、関連付けは終了します。 現在、この値は無視されています。assoc_maxerr パラメーターは、パス・エラー件数と faddrs の数に基づいて計算されます。 ACCEPTCONN ソケットの場合、この値はセットアップ時に設定され、そのソケットを共有するすべての関連付けに使用されます。 ACCEPTCONN ソケット以外のソケットの場合は、関連付けの作成時にこの値が設定されます。 このため、このチューナブルを変更しても、既に存在している関連付けに影響はありません。 デフォルト値は 10 です。
sctp_path_maxerr このチューナブルは、宛先ごとの最大エラー件数を設定します。 エラー件数がこの値を超えると、パスにはダウン状態であるというマークが付けられ、代替パスが選択されます。 ACCEPTCONN ソケットの場合、この値はセットアップ時に設定され、そのソケットを共有するすべての関連付けに使用されます。 ACCEPTCONN ソケット以外のソケットの場合は、関連付けの作成時にこの値が設定されます。 このため、このチューナブルを変更しても、既に存在している関連付けに影響はありません。 デフォルト値は 5 です。
sctp_use_checksum このチューナブルを設定すると、管理者は各種のチェックサム計算方式を使用できます。

指定できる値は以下のとおりです。

  • 0: CRC32 チェックサム
  • 1: チェックサム計算を行わない
  • 2: インターネット・チェックサム
2 つのピアが使用する値が異なる場合、パケットはドロップされます。
このパラメーターは、パケットの発信および着信のたびに検査されます。 デフォルト値はゼロであり、RFC によって指定された CRC32 チェックサムが計算されます。
sctp_sendspace このチューナブルは、データ送信用のソケット・バッファー・サイズを指定します。 最適なバッファー・サイズは、メディアの帯域幅とパケットの平均往復時間の積です。

optimum_window = bandwidth * average_round_trip_time

このパラメーターは、関連付けの新規作成時に使用されます。 setsockopt 関数を使用して、 このパラメーターをオーバーライドします。 デフォルト値は 65536 です。
sctp_recvspace このチューナブルは、データ受信用のソケット・バッファー・サイズを指定します。 このパラメーターは、関連付けの新規作成時に使用されます。 setsockopt 関数を使用して、 このパラメーターをオーバーライドします。 デフォルト値は 65536 です。
sctp_send_fewsacks このチューナブル・パラメーターを使用可能に設定すると、受信側での silly window 回避 が実装されます。これにより、受信側が 1 MTU のデータを収容できるようになるまで、ウィンドウ更新が送信されなくなります。 このパラメーターは、アプリケーションによってデータが読み取られ、ウィンドウ更新が送信されるたびに使用されます。 デフォルト値は 0 です。
sctp_cookie_life このチューナブルは、cookie が有効と見なされる期間 (秒) を指定します。 このパラメーターは、接続を確立する際に失効した cookie を判別するために使用されます。 デフォルト値は 60 秒です。
sctp_ecn このチューナブルは、明示輻輳 (ふくそう) 通知 (RFC 3168) を使用可能または使用不可に設定します。 このパラメーターは、接続を確立するときに使用されます。 デフォルト値は 1 です。
sctp_ephemeral_high このチューナブルは、SCTP (Stream Control Transmission Protocol) 一時ポートに割り振る最大のポート番号を指定します。 このパラメーターは、アプリケーションがポートのバインドを試行するときに使用されます。 デフォルト値は 65535 です。
sctp_ephemeral_low このチューナブルは、SCTP 一時ポートに割り振る最小のポート番号を指定します。 このパラメーターは、アプリケーションがポートのバインドを試行するときに使用されます。 デフォルト値は 32768 です。
sctp_instreams このチューナブルは、関連付けが使用するインバウンド・ストリームのデフォルトの数を指定します。 このパラメーターは、接続を確立するときに使用されます。 デフォルトは 2048 です。
sctp_outstreams このチューナブルは、関連付けが使用するアウトバウンド・ストリームのデフォルトの数を指定します。 このパラメーターは、接続を確立するときに使用されます。 デフォルト値は 10 です。
sctp_pmtu_discover 使用可能に設定すると、発信パケットの IP ヘッダーに Don't Fragment ビットが設定されます。 このパラメーターは、送信パケットが送出されるときに使用されます。 デフォルト値は 1 です。
sctp_recv_multibuf このチューナブルは、ソケット受信バッファーのアカウンティングを制御します。 デフォルト値は 0 で、これはソケットに属するすべての関連付けが同じ受信バッファー・スペースを共有することを示しています。 このパラメーターをゼロ以外に設定すると、それぞれの関連付けにこの値の受信バッファー・スペースが個別に提供されます。 setsockopt 関数はこの値をオーバーライドします。 このパラメーターは、関連付けが作成されるときに使用されます。 デフォルト値は 0 です (multibuf は使用されません)。
sctp_send_multibuf このチューナブルは、ソケット送信バッファーのアカウンティングを制御します。 デフォルト値は 0 で、これはソケットに属するすべての関連付けが同じ送信バッファー・スペースを共有することを示しています。 このパラメーターをゼロ以外に設定すると、それぞれの関連付けにこの値の送信バッファー・スペースが個別に提供されます。 setsockopt 関数はこの値をオーバーライドします。 このパラメーターは、関連付けが作成されるときに使用されます。 デフォルトは 0 です (multibuf は使用されません)。
sctp_failover_type このパラメーターを使用可能に設定すると、再送タイムアウトが生じるたびにその後で新規パスが選択されるようになります。使用不可に設定した場合は、path error count 値が max path error count 値を超えた後にのみ、フェイルオーバーが発生します。 このパラメーターは、RTO が開始されるたびに使用されます (パケット・ドロップが生じたとき)。 デフォルト値は 1 です。
sctp_check_associd ABORT パケットの送信時にアプリケーションから渡される、関連付け ID の検査に関連したパターンを制御します。0 に設定すると、関連付け ID は無視されます。関連付けは外部アドレスを使用して検索されます。1 に設定すると、厳密な関連付け ID のマッチングが行われます。渡された assoc_id 値を使用する関連付けが見つからない場合は、EINVAL エラーが返されます。2 に設定すると、関連付け ID のマッチングが行われますが、予約済みの assoc_id 値が使用されている場合は外部アドレスが使用されます。 このパラメーターは、ユーザー・アプリケーションが ABORT パケットを発行するときに使用されます。 デフォルト値は 0 です。

  1. SCTP カーネル・エクステンションをロードするには、次のように入力します。
    sctpctrl load
  2. SCTP 統計情報をリセットするには、次のように入力します。
    sctpctrl stats reset
    このコマンドは、すべての SCTP 統計情報をゼロにリセットします。
  3. SCTP チューナブルの値を取得するには、次のように入力します。
    sctpctrl get
    すべての SCTP チューナブルとその値がリストされます。 次に出力例を示します。
    sctp_assoc_maxerr = 10
    sctp_cookie_life = 60
    sctp_delack_timer = 4
    sctp_dontdelayack = 1
    sctp_ecn = 1
    sctp_ephemeral_high = 65535
    sctp_ephemeral_low = 32768
    sctp_instreams = 2048
    sctp_maxburst = 8
    sctp_outstreams = 10
    sctp_path_maxerr = 5
    sctp_pmtu_discover = 1
    sctp_rttmax = 60
    sctp_rttmin = 1
    sctp_recvspace = 65536
    sctp_sendspace = 65536
    sctp_send_fewsacks = 0
  4. sctp_path_maxerr を値 6 に設定するには、次のように入力します。
    sctpctrl set sctp_path_maxerr=6 

位置

/usr/sbin/sctpctrl

ファイル

項目 説明
/usr/sbin/sctpctrl sctpctrl コマンドが入っています。
/usr/lib/drivers/sctp SCTP カーネル・エクステンションが入っています。