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. 略語
| 略語 | 意味 |
|---|---|
| SCTP | Stream Control Transmission Protocol |
| TSN | Transmission Sequence Number |
| TCB | Transmission Control Block |
| ULP | Upper Layer Protocol |
| MTU | Maximum Transmission Unit |
| SACK | Selective ACKnowledgement |
| a_rwnd | Advertised Receiver Window |
| PMTU | Path MTU |
| RTO | Retransmission Timeout |
| RTT | Round-Trip Time |
| HMAC | Hash-based Message Authentication Code |
| CRC | Cyclic 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 の欠点を補う。