Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SCTPの概要

ストリーム制御伝送プロトコル(SCTP)は、信頼性の高い順序どおりのデータ伝送を保証するトランスポート層プロトコルです。SCTP は、接続の 1 つまたは両方のエンドポイントが複数の IP アドレスで構成できるマルチホーミング サポートを提供します。これにより、冗長ネットワーク パス間の透過的なフェールオーバーが可能になります。

ストリーム制御伝送プロトコルについて

ストリーム制御伝送プロトコル(SCTP)は、インターネットプロトコルスイート内の堅牢なトランスポート層プロトコルであり、UDPおよびTCPと連携して動作します。さまざまなインターネットアプリケーションに信頼性の高い接続指向のトランスポートを提供するように設計されています。SCTPの主な機能は次のとおりです。

  1. マルチストリームプロトコル: SCTP は、エンドポイントごとに複数のメッセージ ストリームをサポートし、異なるメッセージの優先順位とストリーム内の厳密な順序を必要とするアプリケーションに対応します。

  2. ユーザーデータのフラグメント化: パスの最大送信単位 (MTU) を超えるメッセージを処理するために、SCTP はデータをチャンクにフラグメント化し、最後のチャンクに特定のフラグをマークします。受信側は、完全なメッセージを上位層プロトコルに渡す前に、これらのチャンクを再構築します。

  3. チャンクバンドリング:

    SCTP を使用すると、複数のメッセージのチャンクを 1 つの SCTP パケットにバンドルできるため、効率的なデータ転送が容易になります。受信者は、上位層プロトコルに配信する前に、これらのチャンクを逆アセンブルします。
  4. パケット検証:

    SCTP のヘッダーには、アソシエーション セッションを一意に識別するための検証タグが含まれています。このタグは、なりすまし攻撃から保護し、以前の関連付けからの古い SCTP パケットの処理を防ぐのに役立ちます。
  5. マルチホーミングのサポート:

    SCTPを使用すると、エンドポイントはアソシエーションのセットアップ中にローカルトランスポートアドレスのリストを指定し、各宛先アドレスのルートを確立することでデータ転送の高可用性を促進することができます。

さらに、SCTPは、冗長ネットワークパス間の透過的なフェイルオーバーを提供するため、信頼性の高いシーケンス内のデータ転送を必要とするアプリケーションに最適です。IPなどのコネクションレス型パケットネットワーク上で動作し、単一または複数のIPシナリオをサポートします。

さらに、SCTPは、M3UA、M2UA、またはSUAなどのプロトコルを介して3Gモバイルネットワーク用のシグナリングメッセージを伝送することに応用されています。高トラフィック時のマルチスレッドインフラストラクチャの問題を回避し、アソシエーション検索レートを向上させ、再送信ケースの有限状態機械(FSM)を改善するように最適化されています。

SCTPは、監視とセッション損失の検出を必要とするアプリケーションに特に適しています。そのハートビートメカニズムは、セッションの接続性を監視し、エンドツーエンドの遅延を最小限に抑え、ネットワーク障害が発生した場合の迅速なフェイルオーバー時間で、信頼性が高く安全なトランスポートを確保します。

図 1: SCTP 4 ウェイ ハンドシェイクと TCP 3 ウェイ ハンドシェイク SCTP 4-way Handshake and TCP 3-way Handshake

SCTPサービス

SCTP は、次のサービスを提供します。

  • アグリゲートサーバーアクセスプロトコル(ASAP)

  • ベアラーに依存しない呼制御(BICC)

  • ダイレクトデータ配置セグメントチャンク(DDPセグメント)

  • ダイレクトデータ配置ストリームセッション制御(DDPストリーム)

  • DTLS/SCTP データ チャンク内の直径(直径-DTLS)

  • SCTP データ チャンク内の直径(Diameter-SCTP)

  • DPNSS/DASS 2 IUA プロトコル(DUA)への拡張

  • エンドポイントハンドルスケープ冗長プロトコル(ENRP)

  • H.248 プロトコル(H248)

  • H.323 プロトコル(H323)

  • ISDN ユーザー適応レイヤー(IUA)

  • MTP2ユーザーピアツーピアアダプテーションレイヤー(M2PA)

  • MTP2 User Adaptation Layer(M2UA)

  • MTP3 User Adaptation Layer(M3UA)

  • その他の未設定 SCTP ペイロード プロトコル(その他)

  • Q.IPC

  • 予約

  • S1 アプリケーション プロトコル(S1AP)

  • シンプルなミドルボックス構成(SIMCO)

  • SCCP ユーザー適応レイヤー(SUA)

  • トランスポート アダプター層インターフェイス(TALI)

  • V5.2 ユーザー適応レイヤー(V5UA)

  • X2 アプリケーション プロトコル(X2AP)

SCTP の制限と制約

SCTP には、次の制限と制約があります。

  • IP アドレス

    • スタティック IP NAT のみがサポートされます。着信するインターフェイスパケット(片側から:クライアントまたはサーバー)は、同じゾーンに属している必要があります。

  • ポリシー

    • 動的ポリシーはサポートされていません。SCTP セッションのすべてのポリシーを設定する必要があります。

    • ポリシーが削除されると、関連するセッションと関連付けがクリアされます。

    • すべてのクライアント IP からすべてのサーバー IP への SCTP トラフィックを許可するポリシーと、サーバー IP からクライアント IP への SCTP トラフィックを許可するポリシーを設定します。1 つのポリシーに SCTP プロファイルがある場合、リバース ポリシーにも同じ SCTP プロファイルが必要です。

    • 1 つのアソシエーションに属するセッションごとに異なるポリシーを設定すると、1 つのアソシエーションに関連する複数のポリシーが存在し、SCTP パケット管理(ドロップ、レート制限など)は、処理する SCTP セッションのポリシーにアタッチされたプロファイルを使用します。

    • SCTP ALGトラフィックを許可するためにセキュリティポリシーで使用されているアプリケーションは、 オプションを使用して application-protocol ignore 設定することはできません。この条件は、SCTP ALG インスペクションが設定されていない場合でも適用されます。

  • SCTPの有効化/無効化は、SCTPプロファイルが設定されているかどうかによって制御されます。

    • ポリシーにプロファイルが付加されていない場合、SCTP パケットは検査なしで転送されます。

    • オプションのある nat-only プロファイルがポリシーにアタッチされている場合、ポリシーに一致するSCTPパケットに対してNAT変換のみが実行されます。プロファイルにオプションが設定されていない場合 nat-only 、ポリシーに一致する各SCTPパケットに対してNAT変換とSCTPインスペクションの両方が実行されます。

    • SCTP を無効にすると、すべてのアソシエーションが削除され、後続の SCTP パケットはポリシーに従ってパスまたはドロップされます。

    • SCTP をイネーブルにした場合、既存の SCTP セッションをすべてクリアしないと、古いセッションに一致するトラフィックが SCTP モジュールからのインスペクションなしで転送されます。

      SCTP を再度有効にする場合、アソシエーションが存在しないため、実行中のすべての SCTP 通信がドロップされます。新しい SCTP 通信は、アソシエーションを確立し、インスペクションを実行できます。

      メモ:

      SCTP が再度有効になったら、古い SCTP セッションをクリアします。これにより、新しい SCTP 通信に対する古い SCTP セッションによって引き起こされる影響を回避できます。

    • 既存のポリシーに SCTP プロファイルを追加する場合は、関連するセッションをクリアするか、古いポリシーを削除して新しいポリシーを作成する必要があります。

    • SCTP プロファイルのタイムアウト値を変更しても、既存のアソシエーションで設定されたハンドシェイクとタイムアウト値は変更されません。

  • SCTP レート制限

    • レート制限設定を変更しても、既存のアソシエーションの後続のトラフィックには影響しません。新しく設立された協会に適用されます。

    • サポートされるプロトコル 10 進数値は 0 から 63 です。この値には、48 個の IANA 割り当て済みプロトコルと 16 個の未割り当てプロトコルが含まれます。

    • 1 つのプロファイルで最大 80 個のアドレスがレート制限されます。

    • 1 つのプロファイルの 1 つのアドレスに対して最大 10 個のプロトコルのレート制限が適用されます。

    • サポートされるレート制限値は 1 から 12000 です。

  • SCTP ペイロード プロトコルのブロッキング

    • プロトコル ブロッキング構成の変更は、既存のアソシエーションの後続のトラフィックに直ちに影響を及ぼします。

    • サポートされるプロトコル 10 進数値は 0 から 63 です。この値には、48 個の IANA 割り当て済みプロトコルと 16 個の未割り当てプロトコルが含まれます。

  • また、SCTP エンドポイントは、IPv4 アドレス形式から IPv6 アドレス形式へ、またはその逆の 2 つの方向で NAT-PT をサポートします。SCTP モジュールは、IPv4 または IPv6 の混合マルチホーミング、および IPv4 または IPv6 の混合NAT-PT をサポートしていません。

  • 静的NATが機能するためには、着信するインターフェイスパケット(一方の側:クライアント側またはサーバー側)が同じゾーンに属している必要があります。

  • マルチホームの場合、INIT または INIT_ACK の IPv4 アドレス パラメーターのみがサポートされます。

  • SCTP では、静的 NAT のみがサポートされています。

  • 確立された SCTP アソシエーションのみがピア セッションに同期されます。

  • SCTP セッションはアソシエーションによって削除されません。既定値の 30 分でタイムアウトします。タイムアウト値は構成可能で、変更できます。

  • 4 ウェイ ハンドシェイク プロセスが 1 つのノードで処理されず、代わりに 2 つのノードで処理される場合 (たとえば、アクティブ/アクティブ モードの 2 つのノード上の 2 つのセッション)、または 4 ウェイ ハンドシェイクが完了する前にクラスターがフェールオーバー中の場合、関連付けは正常に確立されません。

  • 以前のJunos OSリリースへのISSU(統合型インサービスソフトウェアアップグレード)はサポートされていません。

  • M3UA/SCCP メッセージの解析はチェックされますが、M3UA/SCCP ステートフル インスペクションはチェックされません。

  • ITU-T Rec. Q.711-Q.714(07/96)標準のみがサポートされています。ANSI、ETSI、中国、およびその他の標準はサポートされていません。

  • RFC 4960のみがサポートされています。

  • VPN セッション アフィニティは、GPRS トンネリング プロトコル(GTP)とストリーム制御伝送プロトコル(SCTP)をサポートしていません。

SCTP 機能の概要

SCTP の重要な機能を次に示します。

  • マルチホーミングのサポートでは、接続の 1 つまたは両方のエンドポイントが複数の IP アドレスで構成できます。これにより、冗長ネットワーク パス間の透過的なフェールオーバーが可能になります。

  • 独立したストリーム内のチャンクでデータを配信することで、不要なヘッドオブラインブロッキングを排除します。

  • プライマリデータ伝送パスを選択し、伝送パスの接続をテストするパス選択および監視機能。

  • 検証および確認メカニズムは、フラッディング攻撃から保護し、重複または欠落しているデータチャンクを通知します。

  • ジャンボ イーサネット フレームに適したエラー検出が改善されました。

SCTP のサポートの中心点アーキテクチャについて

ストリーム制御伝送プロトコル(SCTP)アソシエーションは、2 つの SCTP エンドポイント間の接続です。各 SCTP エンドポイントは、タグとの関連付けを識別します。SCTP アソシエーションのセットアップ中に、2 つの SCTP エンドポイントがパケットを受信するための独自のタグを交換します。2 つの SCTP エンドポイント間でパケットを交換する際、送信元アドレスと宛先アドレスの両方がアソシエーションのライフサイクルで変わる可能性があります。

SCTP フロー セッションでは、接続タグを使用して、SCTP ALG をサポートする SRX1500、SRX4100、SRX4200、SRX5400、SRX5600、および SRX5800 デバイスの SPU に SCTP トラフィックをより細かく分散します。接続タグは SCTP vtag からデコードされます。最初の 3 つのパケットごとに個別の SCTP セッション(つまり、INIT、INIT-ACK、COOKIE-ECHO に対してそれぞれ 1 つのセッション)が作成されます。つまり、逆方向トラフィックには独自のセッションがあるため、セッションは既存の順方向セッションと一致させることができず、自動的にパススルーすることはできません。したがって、順方向ポリシーと同様に、逆方向SCTPトラフィックを承認するには明示的なポリシーが必要です。このシナリオでは、SCTP フロー セッションでは、基本的な接続に対しても双方向のポリシーを確立する必要があります。

SCTP による仮想ルーティングおよび転送(VRF)のサポート

VRF(仮想ルーティングおよび転送)機能を使用すると、リモートIPアドレスを管理できます。SCTPクライアントは、新しいSCTPアソシエーションを開始する前に、ルートテーブルインデックス/ VRFインデックスのソケットオプションを設定する必要がありますが、VRF内に設定されたSCTPサーバーへのエグレスインターフェイスの場合、SCTPクライアントはアソシエーションの確立にデフォルト/グローバルルーティングインスタンスを使用するため、他の賢明なアソシエーションは確立されません。SCTP サーバ側では、VRF インデックス ソケット オプションがリスニング ソケットに設定されていない場合、すべての VRF で受信したアソシエーション要求は受け入れられますが、VRF インデックス ソケット オプションがリスニング ソケットに設定されている場合、その特定の VRF に来るアソシエーション確立要求のみが受け入れられます。

アプリケーションは、カスタム フラグを使用してソケット オプションを設定して、VRF ベースの SCTP アソシエーションを処理するために SCTP にルート テーブル インデックスを提供し、その特定のアソシエーションにアソシエーションを配置するか、SCTP カーネルがイングレス インターフェイスが設定されている VRF に基づいて、4 ウェイ ハンドシェイクのプロセスで確立中にアソシエーションに VRF を選択させることができます。

VRF インスタンスを介して SCTP アソシエーションが確立される場合、カーネルは、SCTP で使用される既存の 4 タプル(送信元 IP、送信元ポート、宛先 IP、宛先ポート)を使用して一意の関連付けを検索するときに、追加のパラメータである一意の VRF ID を考慮する必要があります。

  • VRF 経由のインバウンド SCTP パケット:

    SCTP パケットがイングレス インターフェイスに到着すると、5 タプル(送信元 IP、送信元ポート、宛先 IP、宛先ポート、および「パケットを受信した VRF ID」)を使用してルックアップが実行され、カーネル内に既存の SCTP アソシエーションが存在するかどうかを判断します。

  • VRF 経由のアウトバウンド SCTP パケット:

    カーネルから送信されるすべての SCTP パケットについて、対応する VRF ID が 5 タプル(送信元 IP、送信元ポート、宛先 IP、宛先ポート、および「パケットが送信される VRF ID」)を使用してアソシエーション データから取得されます。

SCTP 1 対多スタイルのソケット

SCTP は、 1 対 1 (TCP に相当)1 対多 (1 つのソケットで複数のアクティブな関連付けを許可) の 2 つのソケット・スタイルをサポートします。後者は、アソシエーション識別子(assoc-id)を使用してそれらを区別し、複数のピアエンドポイントとの同時通信を容易にします。

以下のシステム API は、SCTP 1:1 または 1:N スタイルのソケットを使用するアプリケーションによって使用されます。

1対1スタイルのソケットのシステムコール

  • サーバーの役割: socket(), bind(), listen(), accept(), write()/read(), close()

  • クライアントロール: socket()、connect()、write()/read()、close()

システムは1対多スタイルのソケットを要求します

  • サーバーの役割: socket(), bind(), listen(), recvmsg(), sendmsg(), close()

  • クライアントロール: socket(), sendmsg(), recvmsg(), close()

SCTP パケット構造の概要

SCTP パケットは、次のセクションで構成されています。

図 2 に、SCTP パケットの構造を示します。

図 2: SCTP パケットの構造 SCTP Packet Structure

共通ヘッダー セクション

すべての SCTP パケットには、共通のヘッダー セクションが必要です。このセクションは、パケットの最初の 12 バイトを占めます。 表 1 に、共通ヘッダー セクションのフィールドを示します。

表 1: 一般的なヘッダー フィールド

フィールド

説明

送信元ポート番号

送信元ポートを識別します。

宛先ポート番号

受信ポートを識別します。ホストは宛先ポート番号を使用して、パケットを適切な宛先またはアプリケーションにルーティングします。

検証タグ

古いパケットを以前の接続と区別します。これは、初期化中に作成される 32 ビットのランダム値です。

チェックサム

巡回冗長検査(CRC32)アルゴリズムを使用して、データ送信中に発生した可能性のあるエラーを検出します。

データチャンクセクション

データチャンクセクション:このセクションはパケットの残りの部分を占めます。 表 2 に、データ チャンク セクションのフィールドを示します。

表 2: データ チャンク フィールド

フィールド

説明

チャンクタイプ

チャンク値フィールドの内容を識別します。これは 1 バイト長です。

チャンク フラグ

チャンクの種類によって定義が異なる 8 つのフラグ ビットで構成されます。デフォルト値はゼロです。これは、データの上位層にアプリケーション識別子が指定されていないことを示します。

チャンク長

チャンクの合計長をバイト単位で指定します。このフィールドの長さは 2 バイトです。チャンクが 4 バイトの倍数を形成しない場合 (つまり、長さが 4 の倍数ではない場合)、チャンク長に含まれないゼロが暗黙的に埋め込まれます。

チャンク値

汎用データ フィールド。

リソース・マネージャー (RM) は、SCTP 通信中に 8 つのソース IP アドレスと 8 つの宛先 IP アドレスを許可します。

SCTPマルチホーミングについて

ストリーム制御伝送プロトコル (SCTP) エンドポイントは、すべての IPv4 アドレスまたはすべての IPv6 アドレスを持つ マルチホーム ホストにすることができます。 図3では、エンドポイントAは2つのIPv4アドレスを持つSRXシリーズファイアウォールに接続され、エンドポイントBは2つのIPv4アドレスを持つSRXシリーズファイアウォールに接続されています。したがって、エンドポイント A とエンドポイント B は、4 つの異なる IP アドレスのペアを使用して関連付けを設定でき、その結果、4 つの有効な通信パスが得られます。

図 3: 2 つの IPv4 エンドポイント SCTP Multihoming with Two IPv4 Endpointsを持つ SCTP マルチホーミング

図4では、エンドポイントAは2つのIPv6アドレスを持つSRXシリーズファイアウォールに接続され、エンドポイントBは2つのIPv6アドレスを持つSRXシリーズファイアウォールに接続されています。したがって、エンドポイント A とエンドポイント B は、4 つの異なる IP アドレスのペアを使用して関連付けを設定でき、その結果、4 つの有効な通信パスが得られます。

図 4: 2 つの IPv6 エンドポイント SCTP Multihoming with Two IPv6 Endpointsを持つ SCTP マルチホーミング

SCTPマルチチャンクインスペクションについて

ストリーム制御伝送プロトコル(SCTP)ファイアウォールは、メッセージ内のすべてのチャンクをチェックし、ポリシーに基づいてパケットを許可またはドロップします。 set security gprs sctp multichunk-inspection enable コマンドを使用して、SCTP マルチチャンク検査を有効にし、メッセージ内のすべてのチャンクをチェックします。 delete security gprs sctp multichunk-inspection enable または set security gprs sctp multichunk-inspection disable コマンドを使用して SCTP マルチチャンク インスペクションを無効にし、最初のチャンクのみをチェックします。

SCTP マルチチャンク インスペクションを有効にすると、SCTP ファイアウォールはメッセージ内のすべてのチャンクをチェックし、パケットを許可またはドロップします。SCTP ファイアウォールは、次の場合にパケットを破棄します。

  • SCTP チャンクのレイアウトは、RFC 4960 に準拠していません。

  • 制御チャンクは、SCTP 有限状態機械 (FSM) の検査またはサニティー チェックに合格できません。

  • SCTP FSM またはサニティーチェックのため、データチャンクは SCTP プロファイルを渡すことができません。

  • プロトコルのブロッキングまたはレート制限のため、データ チャンクは SCTP プロファイルを通過できません。SCTPファイアウォールは、このチャンクをヌルプロトコルデータユニット(PDU)にリセットし、次のチャンクのチェックを続行します。データチャンクは、次のルールに基づいてヌルPDUに設定されます。

    • コマンドを使用して NULL PDU 値0xFFFFset security gprs sctp nullpdu protocol ID-0xFFFFを設定すると、ペイロードプロトコル識別子の値は に置き換えられ0xFFFF、ユーザーデータフィールドは変更されません。

    • コマンドを使用して NULL PDU 値0x0000set security gprs sctp nullpdu protocol ID-0x0000を設定すると、ペイロードプロトコル識別子の値が 0x0000 に置き換えられ、ユーザーデータフィールドの最初の 4 バイトがゼロに置き換えられます。

    パケット内のすべてのチャンクがnull PDUの場合、SCTPファイアウォールはパケットをドロップします。

シャーシ クラスタでの SCTP 動作の理解

シャーシクラスタ設定モードでは、SCTP設定と確立されたSCTP関連付けがピアデバイスと同期されます。SCTPモジュールは、アクティブ-アクティブモードとアクティブ-パッシブモードの両方をサポートしています。

確立された SCTP アソシエーションは、アクティブ デバイスでアソシエーションが作成または削除されるたびに、作成または削除メッセージをピアに送信します。セカンダリ デバイスは、確立された SCTP アソシエーションからメッセージを受信すると、それぞれアソシエーションを追加または削除します。次に、SCTPモジュールは、このメッセージを受信して処理するために、対応するコールバック関数を登録する。2 つのアソシエーション間に連続的なタイマー同期はありません。

SCTP モジュールは、セカンダリ デバイスがクラスタに参加したとき、または再起動したときに、コールド スタート同期機能を登録します。SCTP コールド スタート関数は、すべての SCTP アソシエーションをピア デバイスと同時に同期するために呼び出されます。

切り替え後、確立されたSCTPアソシエーションは引き続き機能しますが、確立の進行中のアソシエーションは失われ、確立手順を再度開始する必要があります。また、破棄の進行中のアソシエーションが ack メッセージを見逃し、確立されていない SCTP アソシエーションがファイアウォールに残る可能性もあります。これらの関連付けは、関連付けにアクティビティがないためにタイマーが期限切れになると (既定では 5 時間) クリーンアップされます。

  • 必要な SCTP セッションのすべてのポリシーを設定する必要があります。 例えば、エンドポイントAとBがあり、エンドポイントAがx個のIP(IP_a1、IP_a2、IP_a3...IP_ax)。エンドポイント B には、y 個の IP(IP_b1、IP_b2、IP_b3...IP_by.)セキュリティ デバイスのポリシーでは、両方向の x*y パスをすべて許可する必要があります。

  • SCTP アソシエーションが削除されても、関連する SCTP セッションは引き続き存在し、自動的にタイムアウトします。