4. SCTP-Assoziationszustandsdiagramm (SCTP Association State Diagram)
Während der Lebensdauer einer SCTP-Assoziation schreitet die Assoziation des SCTP-Endpunkts als Reaktion auf verschiedene Ereignisse von einem Zustand zum anderen fort. Die Ereignisse, die möglicherweise den Zustand einer Assoziation vorantreiben können, umfassen:
- SCTP-Benutzerprimitivaufrufe, z.B. [ASSOCIATE], [SHUTDOWN], [ABORT]
- Empfang von INIT, COOKIE ECHO, ABORT, SHUTDOWN usw. Kontroll-Chunks
- Einige Timeout-Ereignisse
Das Zustandsdiagramm in den folgenden Abbildungen veranschaulicht Zustandsänderungen zusammen mit den auslösenden Ereignissen und resultierenden Aktionen. Beachten Sie, dass einige der Fehlerbedingungen im Zustandsdiagramm nicht dargestellt sind. Vollständige Beschreibungen aller Sonderfälle finden sich im Text.
Hinweis: Chunk-Namen werden in Großbuchstaben angegeben, während Parameternamen den ersten Buchstaben großgeschrieben haben, z.B. COOKIE ECHO-Chunk-Typ vs. State Cookie-Parameter.
Wenn mehr als ein Ereignis/eine Nachricht auftreten kann, das/die einen Zustandsübergang verursacht, ist es mit (A), (B) usw. gekennzeichnet.
Das Folgende ist eine detaillierte Darstellung des SCTP-Assoziationszustandsdiagramms:
----- -------- (von jedem Zustand)
/ \ / \
/ rcv ABORT [ABORT] rcv INIT | |
| ---------- oder ---------- --------------- |
| v v v
\ TCB löschen snd ABORT Cookie generieren \
+---------+ TCB löschen snd INIT ACK ---| CLOSED |
+---------+ / \
[ASSOCIATE] / \
--------------- | |
TCB erstellen | |
snd INIT | |
init-Timer starten rcv valid |
v | COOKIE ECHO |
+------------+ | (1) ----------------
| COOKIE-WAIT| | TCB erstellen (2)
+------------+ | snd COOKIE ACK
| |
| rcv INIT ACK |
| ----------------- |
| snd COOKIE ECHO |
| init-Timer stoppen |
| cookie-Timer starten |
v |
+--------------+ |
| COOKIE-ECHOED| (3) |
+--------------+ |
| |
| rcv COOKIE ACK |
| ----------------- |
| cookie-Timer stoppen v
v v
+---------------+
| ESTABLISHED |
+---------------+
(nur vom ESTABLISHED-Zustand)
| /--------+--------\
| [SHUTDOWN] / \
| -------------------| |
| ausstehende | |
| DATA-Chunks prüfen | |
| v |
| +---------+ |
| |SHUTDOWN-| | rcv SHUTDOWN
| |PENDING | |------------------
| +---------+ | ausstehende
| | | DATA-Chunks prüfen
| Keine weiteren ausstehend |
| --------------------- |
| snd SHUTDOWN | |
| shutdown-Timer starten | |
| v v
| +---------+ +-----------+
| |SHUTDOWN-| (4) | SHUTDOWN- | (5,6)
| |SENT | | RECEIVED |
| +---------+ +-----------+
| | \
| (A) rcv SHUTDOWN ACK | \
| ---------------------- | \rcv:SHUTDOWN
| shutdown-Timer stoppen | \ (B)rcv SHUTDOWN
| SHUTDOWN COMPLETE senden| \----------------------
| TCB löschen | | SHUTDOWN ACK senden
| | | shutdown-Timer starten
| | | zu SHUTDOWN-
| | | ACK-SENT wechseln
| | |
| v v
| +-----------+ |
| | SHUTDOWN- | (7) |
| | ACK-SENT | |
| +-----------+ |
| | |
| (C)rcv SHUTDOWN COMPLETE |
| |----------------- | |
| | shutdown-Timer stoppen |
| | TCB löschen | |
| | |
| | (D)rcv SHUTDOWN ACK |
| |-------------- | |
| | shutdown-Timer stoppen |
| | SHUTDOWN COMPLETE senden |
| | TCB löschen | |
| | |
| \ +---------+ /
| \-------------->| CLOSED |<-----------------/
| +---------+
Anmerkungen
Anmerkung 1) Wenn das State Cookie im empfangenen COOKIE ECHO ungültig ist (d.h. die Integritätsprüfung nicht bestanden hat), MUSS (MUST) der Empfänger das Paket stillschweigend verwerfen. Oder, wenn das empfangene State Cookie abgelaufen ist (siehe Abschnitt 5.1.5), MUSS (MUST) der Empfänger einen ERROR-Chunk zurücksenden. In beiden Fällen bleibt der Empfänger im CLOSED-Zustand.
Anmerkung 2) Wenn der T1-init-Timer abläuft, MUSS (MUST) der Endpunkt INIT erneut übertragen und den T1-init-Timer neu starten, ohne den Zustand zu ändern. Dies MUSS (MUST) bis zu 'Max.Init.Retransmits' Mal wiederholt werden. Danach MUSS (MUST) der Endpunkt den Initialisierungsprozess abbrechen und den Fehler dem SCTP-Benutzer melden.
Anmerkung 3) Wenn der T1-cookie-Timer abläuft, MUSS (MUST) der Endpunkt COOKIE ECHO erneut übertragen und den T1-cookie-Timer neu starten, ohne den Zustand zu ändern. Dies MUSS (MUST) bis zu 'Max.Init.Retransmits' Mal wiederholt werden. Danach MUSS (MUST) der Endpunkt den Initialisierungsprozess abbrechen und den Fehler dem SCTP-Benutzer melden.
Anmerkung 4) Im SHUTDOWN-SENT-Zustand MUSS (MUST) der Endpunkt alle empfangenen DATA-Chunks ohne Verzögerung bestätigen.
Anmerkung 5) Im SHUTDOWN-RECEIVED-Zustand DARF (MUST NOT) der Endpunkt keine neuen Sendeanforderungen von seinem SCTP-Benutzer akzeptieren.
Anmerkung 6) Im SHUTDOWN-RECEIVED-Zustand MUSS (MUST) der Endpunkt Daten übertragen oder erneut übertragen und diesen Zustand verlassen, wenn alle Daten in der Warteschlange übertragen wurden.
Anmerkung 7) Im SHUTDOWN-ACK-SENT-Zustand DARF (MUST NOT) der Endpunkt keine neuen Sendeanforderungen von seinem SCTP-Benutzer akzeptieren.
Der CLOSED-Zustand wird verwendet, um anzuzeigen, dass eine Assoziation nicht erstellt wurde (d.h. nicht existiert).