4. SCTPアソシエーション状態図 (SCTP Association State Diagram)
SCTPアソシエーションのライフタイム中、SCTPエンドポイントのアソシエーションは、様々なイベントに応じて、ある状態から別の状態へ進行します。アソシエーションの状態を進める可能性のあるイベントには以下が含まれます:
- SCTPユーザープリミティブ呼び出し、例:[ASSOCIATE]、[SHUTDOWN]、[ABORT]
- INIT、COOKIE ECHO、ABORT、SHUTDOWNなどの制御チャンクの受信
- いくつかのタイムアウトイベント
以下の図の状態図は、状態変化と、それを引き起こすイベントおよび結果として生じるアクションを示しています。エラー条件の一部は状態図に示されていないことに注意してください。すべての特殊ケースの完全な説明はテキスト内にあります。
注意: チャンク名はすべて大文字で表され、パラメータ名は最初の文字が大文字になります。例:COOKIE ECHOチャンクタイプ対State Cookieパラメータ。
状態遷移を引き起こす複数のイベント/メッセージがある場合、(A)、(B)などのラベルが付けられます。
以下は、SCTPアソシエーション状態図の詳細な説明です:
----- -------- (任意の状態から)
/ \ / \
/ rcv ABORT [ABORT] rcv INIT | |
| ---------- または ---------- --------------- |
| v v v
\ TCBを削除 snd ABORT Cookieを生成 \
+---------+ TCBを削除 snd INIT ACK ---| CLOSED |
+---------+ / \
[ASSOCIATE] / \
--------------- | |
TCBを作成 | |
snd INIT | |
initタイマー開始 rcv valid |
v | COOKIE ECHO |
+------------+ | (1) ----------------
| COOKIE-WAIT| | TCBを作成 (2)
+------------+ | snd COOKIE ACK
| |
| rcv INIT ACK |
| ----------------- |
| snd COOKIE ECHO |
| initタイマー停止 |
| cookieタイマー開始 |
v |
+--------------+ |
| COOKIE-ECHOED| (3) |
+--------------+ |
| |
| rcv COOKIE ACK |
| ----------------- |
| cookieタイマー停止 v
v v
+---------------+
| ESTABLISHED |
+---------------+
(ESTABLISHED状態からのみ)
| /--------+--------\
| [SHUTDOWN] / \
| -------------------| |
| 未処理の | |
| DATAチャンクを確認 | |
| v |
| +---------+ |
| |SHUTDOWN-| | rcv SHUTDOWN
| |PENDING | |------------------
| +---------+ | 未処理の
| | | DATAチャンクを確認
| 未処理なし | |
| --------------------- |
| snd SHUTDOWN | |
| shutdownタイマー開始 | |
| v v
| +---------+ +-----------+
| |SHUTDOWN-| (4) | SHUTDOWN- | (5,6)
| |SENT | | RECEIVED |
| +---------+ +-----------+
| | \
| (A) rcv SHUTDOWN ACK | \
| ---------------------- | \rcv:SHUTDOWN
| shutdownタイマー停止 | \ (B)rcv SHUTDOWN
| send SHUTDOWN COMPLETE | \----------------------
| TCBを削除 | | send SHUTDOWN ACK
| | | shutdownタイマー開始
| | | SHUTDOWN-へ移動
| | | ACK-SENT
| | |
| v v
| +-----------+ |
| | SHUTDOWN- | (7) |
| | ACK-SENT | |
| +-----------+ |
| | |
| (C)rcv SHUTDOWN COMPLETE |
| |----------------- | |
| | shutdownタイマー停止 |
| | TCBを削除 | |
| | |
| | (D)rcv SHUTDOWN ACK |
| |-------------- | |
| | shutdownタイマー停止 |
| | send SHUTDOWN COMPLETE |
| | TCBを削除 | |
| | |
| \ +---------+ /
| \-------------->| CLOSED |<-----------------/
| +---------+
注釈
注1) 受信したCOOKIE ECHO内のState Cookieが無効な場合(すなわち、整合性チェックに失敗した場合)、受信者はしなければならない (MUST) パケットを静かに破棄します。または、受信したState Cookieが期限切れの場合(セクション5.1.5参照)、受信者はしなければならない (MUST) ERRORチャンクを送り返します。どちらの場合も、受信者はCLOSED状態のままです。
注2) T1-initタイマーが満了した場合、エンドポイントはしなければならない (MUST) 状態を変更せずにINITを再送信し、T1-initタイマーを再起動します。これは'Max.Init.Retransmits'回までしなければならない (MUST) 繰り返されます。その後、エンドポイントはしなければならない (MUST) 初期化プロセスを中止し、SCTPユーザーにエラーを報告します。
注3) T1-cookieタイマーが満了した場合、エンドポイントはしなければならない (MUST) 状態を変更せずにCOOKIE ECHOを再送信し、T1-cookieタイマーを再起動します。これは'Max.Init.Retransmits'回までしなければならない (MUST) 繰り返されます。その後、エンドポイントはしなければならない (MUST) 初期化プロセスを中止し、SCTPユーザーにエラーを報告します。
注4) SHUTDOWN-SENT状態では、エンドポイントはしなければならない (MUST) 遅延なく受信したDATAチャンクを確認応答します。
注5) SHUTDOWN-RECEIVED状態では、エンドポイントはしてはならない (MUST NOT) そのSCTPユーザーからの新しい送信要求を受け入れません。
注6) SHUTDOWN-RECEIVED状態では、エンドポイントはしなければならない (MUST) データを送信または再送信し、キュー内のすべてのデータが送信されたときにこの状態を離れます。
注7) SHUTDOWN-ACK-SENT状態では、エンドポイントはしてはならない (MUST NOT) そのSCTPユーザーからの新しい送信要求を受け入れません。
CLOSED状態は、アソシエーションが作成されていないこと(すなわち、存在しない)を示すために使用されます。