メインコンテンツまでスキップ

1. はじめに

Stream Control Transmission Protocol (SCTP) は、もともと公衆交換電話網 (PSTN) のシグナリングメッセージを IP ネットワーク上で伝送するために設計された、信頼性のあるメッセージ指向のトランスポートプロトコルである。本章では、SCTP の動機、アーキテクチャ、主要な用語、略語、および主な機能について述べる。

1.1. 動機​

従来のトランスポートプロトコル (TCP および UDP) は、一部のシナリオにおいて制限がある。

  • TCP はフロー指向であり、全体で厳格な順序を持つため、複数の論理ストリームの独立した配送には適さない。
  • UDP は信頼性も順序も保証せず、輻輳制御も提供しない。
  • PSTN シグナリングは、ネットワーク障害に耐え、攻撃に強い信頼性のある配送を必要とする。

SCTP は、マルチストリーム、マルチホーミング、輻輳制御を備えた信頼性のあるメッセージ指向転送を提供することで、これらの要求を満たす。

1.2. SCTP のアーキテクチャ概観​

SCTP は、ネットワーク層 (IP) とアプリケーション層の間のプロトコルスタックに位置する。2 つの端点間の論理的関係であるアソシエーションを使用し、各端点は複数の IP アドレス (マルチホーミング) を持つことができる。データは SCTP パケット内で運ばれるチャンクに分割される。

1.3. 主要な用語​

  • アソシエーション (Association) : 2 つの SCTP 端点間の論理的関係。複数アドレスを利用可能。
  • チャンク (Chunk) : SCTP のデータまたは制御の単位。SCTP パケット内で運ばれる。
  • ストリーム (Stream) : アソシエーション内の双方向論理チャネル。ストリーム識別子で識別される。
  • TSN (Transmission Sequence Number) : 各チャンク DATA に付与されるシーケンス番号。
  • VTag / Verification Tag : アソシエーションを識別する 32 ビット値。各パケットに含まれる。
  • マルチホーミング (Multihoming) : アソシエーションが各端点で複数の IP アドレスを利用する能力。

1.4. 略語​

略語意味
SCTPStream Control Transmission Protocol
TSNTransmission Sequence Number
TCBTransmission Control Block
ULPUpper Layer Protocol
MTUMaximum Transmission Unit
SACKSelective ACKnowledgement
a_rwndAdvertised Receiver Window
PMTUPath MTU
RTORetransmission Timeout
RTTRound-Trip Time
HMACHash-based Message Authentication Code
CRCCyclic Redundancy Check
TCB per-associationアソシエーションごとの伝送制御ブロック

1.5. SCTP の機能的概観​

1.5.1. アソシエーションの開始と終了​

アソシエーションは 4 ウェイ・ハンドシェイク (INIT, INIT ACK, COOKIE ECHO, COOKIE ACK) で確立し、SHUTDOWN / SHUTDOWN ACK / SHUTDOWN COMPLETE で終了、または ABORT で破棄される。

1.5.2. ストリーム内の順序付き配送​

各ストリームは独自のシーケンス番号を持つ。順序付き配送はストリームごとに有効/無効にでき、ストリーム間で独立した順序を可能にする。

1.5.3. ユーザーデータのフラグメンテーション​

パスの MTU を超えるユーザーメッセージは複数のチャンク DATA にフラグメント化され、受信側で再構築される。

1.5.4. 確認応答と輻輳回避​

SCTP は SACK で受信を確認し、輻輳制御でネットワーク容量に応じてレートを制限する。

1.5.5. チャンクのバンドル​

複数のチャンクを単一の SCTP パケットにバンドルしてオーバーヘッドを削減できる。

1.5.6. パケットの検証​

各パケットには検証タグと CRC32c チェックサムが含まれ、偽造や誤りのあるパケットを破棄する。

1.5.7. パス管理​

マルチホーミングにより複数のパスを利用可能。SCTP はハートビートで到達性を監視し、障害時に切り替える。

1.6. シーケンス番号演算​

シーケンス番号 (TSN、ストリーム番号、RTO 等) は、フィールドに応じて 2^32 または 2^16 を法とする演算を用いる。比較は循環する 2 の補数算術の規則に従う。

1.7. RFC 2960 との相違点​

RFC 4960 は RFC 2960 および RFC 3309 を廃止する。実装上の一部の点を明確化し、セキュリティ (クッキー、検証タグ) を強化し、プロトコルの基本原理を変更せずに曖昧さを修正する。


まとめ​

SCTP は、マルチストリーム、マルチホーミング、フラグメンテーション、輻輳制御、および攻撃耐性を備えた信頼性のあるメッセージ指向トランスポートプロトコルである。信頼性があり障害に強い配送を必要とするアプリケーションに対して、TCP と UDP の欠点を補う。