Zum Hauptinhalt springen

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:

UrsachencodeNameBeschreibung
1Invalid Stream IdentifierUngültiger Stream-Identifikator
2Missing Mandatory ParameterFehlender obligatorischer Parameter
3Stale Cookie ErrorVeraltetes Cookie
4Out of ResourceRessourcenmangel
5Unresolvable AddressNicht auflösbare Adresse
6Unrecognized Chunk TypeNicht erkannter Chunk-Typ
7Invalid Mandatory ParameterUngültiger obligatorischer Parameter
8Unrecognized ParametersNicht erkannte Parameter
9No User DataKeine Benutzerdaten
10Cookie Received While Shutting DownCookie während Shutdown empfangen
11Restart with New AddressesNeustart mit neuen Adressen
12User Initiated AbortBenutzerinitiierter Abbruch
13Protocol ViolationProtokollverletzung

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

MerkmalSHUTDOWNABORT
DatengarantieAlle gesendeten Daten bestätigtKeine Datengarantie
BeendigungsgeschwindigkeitLangsamer (mit Handshake)Sofort
RessourcenbereinigungGraceful CleanupSofortige Bereinigung
AnwendungsfallNormales SchließenFehler oder Notfall
Antwort erforderlichBenötigt Peer-AntwortUnidirektional, keine Antwort

Zusammenfassung

SCTP bietet flexible Assoziationsbeendigungsmechanismen:

  1. SHUTDOWN: Für normales Schließen, garantiert Datenintegrität
  2. 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