9. Beendigung der Assoziation (Termination of Association)
SCTP bietet zwei Mechanismen zur Beendigung von Assoziationen: graceful Shutdown und erzwungenes Abort.
9.1. Abbruch einer Assoziation (Abort of an Association)
Der ABORT-Chunk wird verwendet, um eine Assoziation sofort zu beenden. Dies ist eine abnormale Beendigung ohne Garantie für die Datenzustellung.
9.1.1. Senden von ABORT
Ein Endpunkt KANN (MAY) in folgenden Situationen einen ABORT-Chunk senden:
- Protokollverletzung erkannt
- Nicht behebbarer Fehler empfangen
- Anwendungsschicht fordert sofortige Beendigung an
- Ressourcenerschöpfung
ABORT-Chunk-Format:
ABORT-Chunk enthält:
- Chunk Type = 6
- T-Bit: Zeigt Verwendung des Verification Tag an
- Fehlerursachen (optional): Beschreibt Abbruchgrund
9.1.2. Empfangen von ABORT
Beim Empfang eines ABORT-Chunks MUSS (MUST) ein Endpunkt:
1. Das Senden neuer Daten an diese Assoziation stoppen
2. Alle nicht gesendeten und nicht bestätigten Daten verwerfen
3. Assoziationsabbruch an obere Schicht melden
4. TCB zerstören
5. Keine Antwort senden
Wichtig: ABORT ist unidirektional; der Empfänger DARF NICHT (MUST NOT) eine Antwort senden.
9.1.3. ABORT-Ursachen
Häufige ABORT-Ursachen sind:
| Ursachencode | Name | Beschreibung |
|---|---|---|
| 1 | Invalid Stream Identifier | Ungültiger Stream-Identifikator |
| 2 | Missing Mandatory Parameter | Fehlender obligatorischer Parameter |
| 3 | Stale Cookie Error | Veraltetes Cookie |
| 4 | Out of Resource | Ressourcenmangel |
| 5 | Unresolvable Address | Nicht auflösbare Adresse |
| 6 | Unrecognized Chunk Type | Nicht erkannter Chunk-Typ |
| 7 | Invalid Mandatory Parameter | Ungültiger obligatorischer Parameter |
| 8 | Unrecognized Parameters | Nicht erkannte Parameter |
| 9 | No User Data | Keine Benutzerdaten |
| 10 | Cookie Received While Shutting Down | Cookie während Shutdown empfangen |
| 11 | Restart with New Addresses | Neustart mit neuen Adressen |
| 12 | User Initiated Abort | Benutzerinitiierter Abbruch |
| 13 | Protocol Violation | Protokollverletzung |
9.1.4. T-Bit-Verwendung
Das T-Bit steuert die Auswahl des Verification Tag im ABORT-Chunk:
T=0:
- Normales Verification Tag verwenden
- Verwendet für ABORT in normaler Assoziation
T=1:
- Verification Tag aus empfangenem Paket verwenden
- Verwendet für Antwort auf "Out of the Blue"-Pakete
- Oder wenn korrektes Tag unsicher ist
9.2. Herunterfahren einer Assoziation (Shutdown of an Association)
SHUTDOWN ist ein normaler, geordneter Assoziationsbeendigungsprozess, der sicherstellt, dass alle Daten zuverlässig zugestellt werden.
9.2.1. Shutdown-Prozessübersicht
Normales Shutdown umfasst den Austausch von drei Chunks:
Endpunkt A Endpunkt Z
(Keine Daten mehr zu senden)
--------[SHUTDOWN]--------->
(Verbleibende Daten übertragen)
<------[SHUTDOWN ACK]-------
-----[SHUTDOWN COMPLETE]---->
Beide Seiten zerstören TCB
9.2.2. SHUTDOWN initiieren
Wenn ULP das Schließen der Assoziation anfordert:
Senderverhalten:
1. Akzeptieren neuer Benutzerdaten stoppen
2. Übertragung aller nicht gesendeten Daten abschließen
3. Warten, bis alle nicht bestätigten Daten bestätigt sind
4. SHUTDOWN-Chunk mit Cumulative TSN Ack senden
5. T2-shutdown-Timer starten
SHUTDOWN-Chunk-Format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 7 | Flags | Length = 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cumulative TSN Ack |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
9.2.3. SHUTDOWN empfangen
Beim Empfang eines SHUTDOWN-Chunks MUSS (MUST) ein Endpunkt:
1. Akzeptieren neuer Benutzerdaten stoppen
2. Überprüfen, dass alle Daten bis Cumulative TSN Ack gesendet wurden
3. Wenn nicht gesendete Daten existieren, Übertragung fortsetzen
4. Sobald alle Daten bestätigt sind, SHUTDOWN ACK senden
5. T2-shutdown-Timer starten
Zustandsübergang:
ESTABLISHED -> SHUTDOWN-RECEIVED
9.2.4. SHUTDOWN ACK senden
SHUTDOWN ACK-Chunk-Format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 8 | Flags | Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Sendezeitpunkt:
- Alle empfangenen Daten an ULP zugestellt
- Alle lokalen Daten vom Peer bestätigt
9.2.5. SHUTDOWN ACK empfangen
Beim Empfang von SHUTDOWN ACK MUSS (MUST) ein Endpunkt:
1. SHUTDOWN COMPLETE-Chunk senden
2. T2-shutdown-Timer stoppen
3. Assoziationsschließung an ULP melden
4. TCB zerstören
Zustandsübergang:
SHUTDOWN-SENT -> CLOSED
9.2.6. SHUTDOWN COMPLETE
SHUTDOWN COMPLETE-Chunk-Format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 14 |Reserved |T| Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
T-Bit-Verwendung:
- T=0: Normaler Fall, lokales Tag verwenden
- T=1: Verwenden bei Antwort auf unerwartetes SHUTDOWN ACK
SHUTDOWN COMPLETE empfangen:
1. T2-shutdown-Timer stoppen
2. Assoziationsschließung an ULP melden
3. TCB zerstören
Zustandsübergang:
SHUTDOWN-ACK-SENT -> CLOSED
9.2.7. T2-shutdown-Timer
Zweck: Sicherstellen, dass der SHUTDOWN-Prozess nicht unbegrenzt wartet.
Timeout-Behandlung:
Im SHUTDOWN-SENT-Zustand:
- SHUTDOWN-Chunk erneut senden
- RTO verdoppeln
- T2-shutdown-Timer neu starten
Im SHUTDOWN-ACK-SENT-Zustand:
- SHUTDOWN ACK-Chunk erneut senden
- RTO verdoppeln
- T2-shutdown-Timer neu starten
Wenn Neuübertragungen Association.Max.Retrans überschreiten:
- Fehler an ULP melden
- TCB zerstören
9.2.8. Datenverarbeitung während Shutdown
Im SHUTDOWN-PENDING-Zustand:
- Normale Übertragung und Empfang von Daten fortsetzen
- Warten, bis alle nicht bestätigten Daten bestätigt sind
Im SHUTDOWN-SENT-Zustand:
- Keine neuen Benutzerdaten akzeptieren
- Daten vom Peer können empfangen werden
- SACK senden, um empfangene Daten zu bestätigen
Im SHUTDOWN-RECEIVED-Zustand:
- Keine neuen Benutzerdaten akzeptieren
- Übertragung nicht gesendeter Daten fortsetzen
- Daten vom Peer empfangen und bestätigen
Im SHUTDOWN-ACK-SENT-Zustand:
- Keine neuen Benutzerdaten akzeptieren
- Keine neuen Daten übertragen
- SHUTDOWN ACK als Antwort auf doppeltes SHUTDOWN erneut senden
9.2.9. SHUTDOWN vs. ABORT-Vergleich
| Merkmal | SHUTDOWN | ABORT |
|---|---|---|
| Datengarantie | Alle gesendeten Daten bestätigt | Keine Datengarantie |
| Beendigungsgeschwindigkeit | Langsamer (mit Handshake) | Sofort |
| Ressourcenbereinigung | Graceful Cleanup | Sofortige Bereinigung |
| Anwendungsfall | Normales Schließen | Fehler oder Notfall |
| Antwort erforderlich | Benötigt Peer-Antwort | Unidirektional, keine Antwort |
Zusammenfassung
SCTP bietet flexible Assoziationsbeendigungsmechanismen:
- SHUTDOWN: Für normales Schließen, garantiert Datenintegrität
- ABORT: Für außergewöhnliche Situationen, sofortige Beendigung
Best Practices:
- SHUTDOWN für normales Schließen bevorzugen
- ABORT nur bei Fehlern oder Ressourcenproblemen verwenden
- T2-shutdown-Timer-Timeouts ordnungsgemäß behandeln
- Geeignete Neuübertragungsmechanismen implementieren