3.3. SCTP-Chunk-Definitionen (SCTP Chunk Definitions) - Fortsetzung
3.3.3. Initialisierungsbestätigung (Initiation Acknowledgement, INIT ACK) (2)
Der INIT ACK-Chunk wird verwendet, um die Initiierung einer SCTP-Assoziation zu bestätigen.
Der Parameterteil von INIT ACK ist ähnlich wie der INIT-Chunk formatiert. Er verwendet zwei zusätzliche variable Parameter: den State Cookie und den Unrecognized Parameter.
Das Format des INIT ACK-Chunks wird unten gezeigt:
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 = 2 | Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Initiate Tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertised Receiver Window Credit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Outbound Streams | Number of Inbound Streams |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Initial TSN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Optional/Variable-Length Parameters /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Initiate Tag (Initiierungs-Tag): 32 Bits (vorzeichenlose Ganzzahl)
Der Empfänger des INIT ACK zeichnet den Wert des Initiate Tag-Parameters auf. Dieser Wert MUSS (MUST) in das Verification Tag-Feld jedes SCTP-Pakets eingefügt werden, das der INIT ACK-Empfänger innerhalb dieser Assoziation überträgt.
Der Initiate Tag DARF NICHT (MUST NOT) den Wert 0 annehmen. Siehe Abschnitt 5.3.1 für weitere Informationen zur Auswahl des Initiate Tag-Werts.
Wenn festgestellt wird, dass der Wert des Initiate Tag in einem empfangenen INIT ACK-Chunk 0 ist, MUSS (MUST) der Empfänger die Assoziation zerstören und seinen TCB verwerfen. Der Empfänger KANN (MAY) zu Debugging-Zwecken einen ABORT senden.
Advertised Receiver Window Credit (a_rwnd, Angekündigtes Empfängerfenster-Guthaben): 32 Bits (vorzeichenlose Ganzzahl)
Dieser Wert stellt den dedizierten Pufferspeicher in Anzahl von Bytes dar, den der Sender des INIT ACK in Verbindung mit diesem Fenster reserviert hat. Während der Lebensdauer der Assoziation SOLLTE (SHOULD NOT) dieser Pufferspeicher nicht verringert werden (d.h., dedizierte Puffer von dieser Assoziation weggenommen werden).
Number of Outbound Streams (OS, Anzahl ausgehender Streams): 16 Bits (vorzeichenlose Ganzzahl)
Definiert die Anzahl der ausgehenden Streams, die der Sender dieses INIT ACK-Chunks in dieser Assoziation erstellen möchte. Der Wert 0 DARF NICHT (MUST NOT) verwendet werden, und der Wert DARF NICHT (MUST NOT) größer sein als der im INIT-Chunk gesendete MIS-Wert.
Hinweis: Ein Empfänger eines INIT ACK mit dem auf 0 gesetzten OS-Wert SOLLTE (SHOULD) die Assoziation zerstören und seinen TCB verwerfen.
Number of Inbound Streams (MIS, Anzahl eingehender Streams): 16 Bits (vorzeichenlose Ganzzahl)
Definiert die maximale Anzahl von Streams, die der Sender dieses INIT ACK-Chunks dem Peer-Ende erlaubt, in dieser Assoziation zu erstellen. Der Wert 0 DARF NICHT (MUST NOT) verwendet werden.
Hinweis: Es gibt keine Verhandlung über die tatsächliche Anzahl von Streams, sondern die beiden Endpunkte werden min(angefordert, angeboten) verwenden. Siehe Abschnitt 5.1.1 für Details.
Hinweis: Ein Empfänger eines INIT ACK mit dem auf 0 gesetzten MIS-Wert SOLLTE (SHOULD) die Assoziation zerstören und seinen TCB verwerfen.
Initial TSN (I-TSN, Anfängliche TSN): 32 Bits (vorzeichenlose Ganzzahl)
Definiert die anfängliche TSN, die der INIT ACK-Sender verwenden wird. Der gültige Bereich reicht von 0 bis 4294967295. Dieses Feld KANN (MAY) auf den Wert des Initiate Tag-Felds gesetzt werden.
Feste Parameter Status
----------------------------------------------
Initiate Tag Obligatorisch
Advertised Receiver Window Credit Obligatorisch
Number of Outbound Streams Obligatorisch
Number of Inbound Streams Obligatorisch
Initial TSN Obligatorisch
Variable Parameter Status Typwert
-------------------------------------------------------------
State Cookie Obligatorisch 7
IPv4 Address (Hinweis 1) Optional 5
IPv6 Address (Hinweis 1) Optional 6
Unrecognized Parameter Optional 8
Reserved for ECN Capable (Hinweis 2) Optional 32768 (0x8000)
Host Name Address (Hinweis 3) Optional 11
Hinweis 1: Die INIT ACK-Chunks können eine beliebige Anzahl von IP-Adressparametern enthalten, die IPv4 und/oder IPv6 in beliebiger Kombination sein können.
Hinweis 2: Das ECN Capable-Feld ist für die zukünftige Verwendung der expliziten Staubenachrichtigung reserviert.
Hinweis 3: Die INIT ACK-Chunks DÜRFEN NICHT (MUST NOT) mehr als einen Host Name Address-Parameter enthalten. Darüber hinaus DARF (MUST NOT) der Sender des INIT ACK keine anderen Adresstypen mit der Host Name Address im INIT ACK kombinieren. Der Empfänger des INIT ACK MUSS (MUST) alle anderen Adresstypen ignorieren, wenn der Host Name Address-Parameter vorhanden ist.
3.3.3.1. Optionale oder variable Längenparameter
State Cookie (Zustands-Cookie)
Parametertypwert: 7
Parameterlänge: Variable Größe, abhängig von der Cookie-Größe.
Parameterwert:
Dieser Parameterwert MUSS (MUST) alle erforderlichen Zustands- und Parameterinformationen enthalten, die der Sender dieses INIT ACK benötigt, um die Assoziation zu erstellen, zusammen mit einem Message Authentication Code (MAC). Siehe Abschnitt 5.1.3 für Details zur State Cookie-Definition.
Unrecognized Parameter (Nicht erkannter Parameter):
Parametertypwert: 8
Parameterlänge: Variable Größe.
Parameterwert:
Dieser Parameter wird an den Urheber des INIT-Chunks zurückgegeben, wenn das INIT einen nicht erkannten Parameter enthält, der einen Wert hat, der anzeigt, dass er dem Sender gemeldet werden sollte. Dieses Parameterwertfeld enthält nicht erkannte Parameter, die vollständig aus dem INIT-Chunk kopiert wurden, mit Parameter Type-, Length- und Value-Feldern.
3.3.4. Selektive Bestätigung (Selective Acknowledgement, SACK) (3)
Dieser Chunk wird an den Peer-Endpunkt gesendet, um empfangene DATA-Chunks zu bestätigen und den Peer-Endpunkt über Lücken in den empfangenen Teilsequenzen von DATA-Chunks, wie durch ihre TSNs dargestellt, zu informieren.
Der SACK MUSS (MUST) die Felder Cumulative TSN Ack, Advertised Receiver Window Credit (a_rwnd), Number of Gap Ack Blocks und Number of Duplicate TSNs enthalten.
Per Definition ist der Wert des Cumulative TSN Ack-Parameters die letzte TSN, die vor einem Bruch in der Sequenz empfangener TSNs empfangen wurde; der nächste TSN-Wert nach diesem wurde am Endpunkt, der den SACK sendet, noch nicht empfangen. Dieser Parameter bestätigt daher den Empfang aller TSNs, die kleiner oder gleich seinem Wert sind.
Die Behandlung von a_rwnd durch den Empfänger des SACK wird in Abschnitt 6.2.1 ausführlich diskutiert.
Der SACK enthält auch null oder mehr Gap Ack Blocks. Jeder Gap Ack Block bestätigt eine Teilsequenz von TSNs, die nach einem Bruch in der Sequenz empfangener TSNs empfangen wurden. Per Definition sind alle durch Gap Ack Blocks bestätigten TSNs größer als der Wert des Cumulative TSN Ack.
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 = 3 |Chunk Flags | Chunk Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cumulative TSN Ack |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Advertised Receiver Window Credit (a_rwnd) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of Gap Ack Blocks = N | Number of Duplicate TSNs = X |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gap Ack Block #1 Start | Gap Ack Block #1 End |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
\ ... \
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gap Ack Block #N Start | Gap Ack Block #N End |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Duplicate TSN 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ /
\ ... \
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Duplicate TSN X |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf alle '0' gesetzt und beim Empfang ignoriert.
Cumulative TSN Ack (Kumulative TSN-Bestätigung): 32 Bits (vorzeichenlose Ganzzahl)
Dieser Parameter enthält die TSN des letzten DATA-Chunks, der in der Sequenz vor einer Lücke empfangen wurde. In dem Fall, dass kein DATA-Chunk empfangen wurde, wird dieser Wert auf die anfängliche TSN des Peers minus eins gesetzt.
Advertised Receiver Window Credit (a_rwnd, Angekündigtes Empfängerfenster-Guthaben): 32 Bits (vorzeichenlose Ganzzahl)
Dieses Feld zeigt den aktualisierten Empfangspufferspeicher in Bytes des Senders dieses SACK an; siehe Abschnitt 6.2.1 für Details.
Number of Gap Ack Blocks (Anzahl der Gap Ack-Blöcke): 16 Bits (vorzeichenlose Ganzzahl)
Gibt die Anzahl der in diesem SACK enthaltenen Gap Ack Blocks an.
Number of Duplicate TSNs (Anzahl doppelter TSNs): 16 Bits
Dieses Feld enthält die Anzahl der doppelten TSNs, die der Endpunkt empfangen hat. Jede doppelte TSN wird nach der Gap Ack Block-Liste aufgeführt.
Gap Ack Blocks (Lücken-Bestätigungs-Blöcke):
Diese Felder enthalten die Gap Ack Blocks. Sie werden für jeden Gap Ack Block bis zur Anzahl der im Feld Number of Gap Ack Blocks definierten Gap Ack Blocks wiederholt. Alle DATA-Chunks mit TSNs größer oder gleich (Cumulative TSN Ack + Gap Ack Block Start) und kleiner oder gleich (Cumulative TSN Ack + Gap Ack Block End) jedes Gap Ack Blocks werden als korrekt empfangen angenommen.
Gap Ack Block Start (Gap Ack Block-Anfang): 16 Bits (vorzeichenlose Ganzzahl)
Gibt die Start-Offset-TSN für diesen Gap Ack Block an. Um die tatsächliche TSN-Nummer zu berechnen, wird die Cumulative TSN Ack zu dieser Offset-Nummer addiert. Diese berechnete TSN identifiziert die erste TSN in diesem Gap Ack Block, die empfangen wurde.
Gap Ack Block End (Gap Ack Block-Ende): 16 Bits (vorzeichenlose Ganzzahl)
Gibt die End-Offset-TSN für diesen Gap Ack Block an. Um die tatsächliche TSN-Nummer zu berechnen, wird die Cumulative TSN Ack zu dieser Offset-Nummer addiert. Diese berechnete TSN identifiziert die TSN des letzten DATA-Chunks, der in diesem Gap Ack Block empfangen wurde.
Duplicate TSN (Doppelte TSN): 32 Bits (vorzeichenlose Ganzzahl)
Gibt an, wie oft eine TSN seit dem letzten gesendeten SACK doppelt empfangen wurde. Jedes Mal, wenn ein Empfänger eine doppelte TSN erhält (vor dem Senden des SACK), fügt er sie der Liste der Duplikate hinzu. Der Duplikat-Zähler wird nach dem Senden jedes SACK auf Null zurückgesetzt.
3.3.5. Heartbeat-Anforderung (Heartbeat Request, HEARTBEAT) (4)
Ein Endpunkt sollte diesen Chunk an seinen Peer-Endpunkt senden, um die Erreichbarkeit einer bestimmten Ziel-Transportadresse zu untersuchen, die in der aktuellen Assoziation definiert ist.
Das Parameterfeld enthält die Heartbeat-Information, die eine variable Länge opaque Datenstruktur ist, die nur vom Sender verstanden wird.
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 = 4 | Chunk Flags | Heartbeat Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Heartbeat Information TLV (Variable-Length) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
Heartbeat Length (Heartbeat-Länge): 16 Bits (vorzeichenlose Ganzzahl)
Auf die Größe des Chunks in Bytes gesetzt, einschließlich des Chunk-Headers und des Heartbeat Information-Felds.
Heartbeat Information (Heartbeat-Information): variable Länge
Definiert als Parameter variabler Länge unter Verwendung des in Abschnitt 3.2.1 beschriebenen Formats, d.h.:
Variable Parameter Status Typwert
-------------------------------------------------------------
Heartbeat Info Obligatorisch 1
Das Sender-Specific Heartbeat Info-Feld sollte normalerweise Informationen über die aktuelle Zeit des Senders enthalten, wenn dieser HEARTBEAT-Chunk gesendet wird, und die Ziel-Transportadresse, an die dieser HEARTBEAT gesendet wird (siehe Abschnitt 8.3). Diese Informationen werden einfach vom Empfänger in der HEARTBEAT ACK-Nachricht zurückgespiegelt (siehe Abschnitt 3.3.6). Beachten Sie auch, dass die HEARTBEAT-Nachricht sowohl zur Erreichbarkeitsprüfung als auch zur Pfadverifizierung verwendet wird (siehe Abschnitt 5.4). Wenn ein HEARTBEAT-Chunk für Pfadverifizierungszwecke verwendet wird, MUSS (MUST) er eine 64-Bit-Zufalls-Nonce enthalten.
3.3.6. Heartbeat-Bestätigung (Heartbeat Acknowledgement, HEARTBEAT ACK) (5)
Ein Endpunkt sollte diesen Chunk als Antwort auf einen HEARTBEAT-Chunk an seinen Peer-Endpunkt senden (siehe Abschnitt 8.3). Ein HEARTBEAT ACK wird immer an die Quell-IP-Adresse des IP-Datagramms gesendet, das den HEARTBEAT-Chunk enthält, auf den dieses Ack antwortet.
Das Parameterfeld enthält eine variable Länge opaque Datenstruktur.
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 = 5 | Chunk Flags | Heartbeat Ack Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ Heartbeat Information TLV (Variable-Length) /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
Heartbeat Ack Length (Heartbeat Ack-Länge): 16 Bits (vorzeichenlose Ganzzahl)
Auf die Größe des Chunks in Bytes gesetzt, einschließlich des Chunk-Headers und des Heartbeat Information-Felds.
Heartbeat Information (Heartbeat-Information): variable Länge
Dieses Feld MUSS (MUST) den Heartbeat Information-Parameter der Heartbeat-Anforderung enthalten, auf die diese Heartbeat-Bestätigung antwortet.
Variable Parameter Status Typwert
-------------------------------------------------------------
Heartbeat Info Obligatorisch 1
3.3.7. Assoziationsabbruch (Abort Association, ABORT) (6)
Der ABORT-Chunk wird an den Peer einer Assoziation gesendet, um die Assoziation zu schließen. Der ABORT-Chunk kann Ursachenparameter enthalten, um den Empfänger über den Grund des Abbruchs zu informieren. DATA-Chunks DÜRFEN NICHT (MUST NOT) mit ABORT gebündelt werden. Steuerungs-Chunks (außer INIT, INIT ACK und SHUTDOWN COMPLETE) KÖNNEN (MAY) mit einem ABORT gebündelt werden, aber sie MÜSSEN (MUST) vor dem ABORT im SCTP-Paket platziert werden, oder sie werden vom Empfänger ignoriert.
Wenn ein Endpunkt einen ABORT mit einem Formatfehler erhält oder kein TCB gefunden wird, MUSS (MUST) er ihn stillschweigend verwerfen. Darüber hinaus DARF (MUST NOT) ein Endpunkt, das einen ABORT erhält, unter keinen Umständen auf diesen ABORT antworten, indem es einen eigenen ABORT sendet.
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 = 6 |Reserved |T| Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ zero or more Error Causes /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Reserved (Reserviert): 7 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
T bit (T-Bit): 1 Bit
Das T-Bit wird auf 0 gesetzt, wenn der Sender das vom Peer erwartete Verification Tag ausgefüllt hat. Wenn das Verification Tag reflektiert wird, MUSS (MUST) das T-Bit auf 1 gesetzt werden. Reflektieren bedeutet, dass das gesendete Verification Tag dasselbe ist wie das empfangene.
Hinweis: Für diesen Chunk gelten spezielle Regeln zur Verifizierung; siehe Abschnitt 8.5.1 für Details.
Length (Länge): 16 Bits (vorzeichenlose Ganzzahl)
Auf die Größe des Chunks in Bytes gesetzt, einschließlich des Chunk-Headers und aller vorhandenen Error Cause-Felder.
Siehe Abschnitt 3.3.10 für Error Cause-Definitionen.
3.3.8. Assoziations-Herunterfahren (Shutdown Association, SHUTDOWN) (7)
Ein Endpunkt in einer Assoziation MUSS (MUST) diesen Chunk verwenden, um ein ordnungsgemäßes Schließen der Assoziation mit seinem Peer zu initiieren. Dieser Chunk hat das folgende 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 | Chunk Flags | Length = 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cumulative TSN Ack |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
Length (Länge): 16 Bits (vorzeichenlose Ganzzahl)
Gibt die Länge des Parameters an. Auf 8 gesetzt.
Cumulative TSN Ack (Kumulative TSN-Bestätigung): 32 Bits (vorzeichenlose Ganzzahl)
Dieser Parameter enthält die TSN des letzten Chunks, der in der Sequenz vor Lücken empfangen wurde.
Hinweis: Da die SHUTDOWN-Nachricht keine Gap Ack Blocks enthält, kann sie nicht verwendet werden, um außerhalb der Reihenfolge empfangene TSNs zu bestätigen. In einem SACK zeigt das Fehlen von Gap Ack Blocks, die zuvor enthalten waren, an, dass der Datenempfänger die zugehörigen DATA-Chunks abgelehnt hat. Da SHUTDOWN keine Gap Ack Blocks enthält, sollte der Empfänger des SHUTDOWN das Fehlen eines Gap Ack Blocks nicht als Ablehnung interpretieren. (Siehe Abschnitt 6.2 für Informationen zur Ablehnung.)
3.3.9. Herunterfahren-Bestätigung (Shutdown Acknowledgement, SHUTDOWN ACK) (8)
Dieser Chunk MUSS (MUST) verwendet werden, um den Empfang des SHUTDOWN-Chunks bei Abschluss des Herunterfahrprozesses zu bestätigen; siehe Abschnitt 9.2 für Details.
Der SHUTDOWN ACK-Chunk hat keine Parameter.
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 |Chunk Flags | Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
3.3.10. Betriebsfehler (Operation Error, ERROR) (9)
Ein Endpunkt sendet diesen Chunk an seinen Peer-Endpunkt, um ihn über bestimmte Fehlerbedingungen zu benachrichtigen. Er enthält eine oder mehrere Fehlerursachen. Ein Betriebsfehler wird an sich nicht als fatal betrachtet, kann aber mit einem ABORT-Chunk verwendet werden, um eine fatale Bedingung zu melden. Er hat die folgenden Parameter:
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 = 9 | Chunk Flags | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
\ \
/ one or more Error Causes /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
Length (Länge): 16 Bits (vorzeichenlose Ganzzahl)
Auf die Größe des Chunks in Bytes gesetzt, einschließlich des Chunk-Headers und aller vorhandenen Error Cause-Felder.
Fehlerursachen sind als Parameter variabler Länge unter Verwendung des in Abschnitt 3.2.1 beschriebenen Formats definiert, das heißt:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Cause Code | Cause Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Cause-Specific Information /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Cause Code (Ursachencode): 16 Bits (vorzeichenlose Ganzzahl)
Definiert den Typ der gemeldeten Fehlerbedingungen.
Ursachencode-Wert Ursachencode
--------- ----------------
1 Ungültige Stream-Kennung
2 Fehlender obligatorischer Parameter
3 Veralteter Cookie-Fehler
4 Ressourcenmangel
5 Nicht auflösbare Adresse
6 Nicht erkannter Chunk-Typ
7 Ungültiger obligatorischer Parameter
8 Nicht erkannte Parameter
9 Keine Benutzerdaten
10 Cookie während Herunterfahren empfangen
11 Neustart einer Assoziation mit neuen Adressen
12 Vom Benutzer initiierter Abbruch
13 Protokollverletzung
Cause Length (Ursachenlänge): 16 Bits (vorzeichenlose Ganzzahl)
Auf die Größe des Parameters in Bytes gesetzt, einschließlich der Felder Cause Code, Cause Length und Cause-Specific Information.
Cause-Specific Information (Ursachenspezifische Information): variable Länge
Dieses Feld enthält die Details der Fehlerbedingung.
3.3.11. State Cookie Echo (Zustands-Cookie-Echo, COOKIE ECHO) (10)
Dieser Chunk wird nur während der Initialisierung einer Assoziation verwendet. Er wird vom INIT ACK-Sender an den INIT-Sender gesendet (siehe Abschnitt 5.1). Dieser Chunk MUSS (MUST) jedem DATA- oder SACK-Chunk vorangehen, der innerhalb der Assoziation gesendet wird, KANN (MAY) aber mit einem oder mehreren DATA-Chunks oder SACK-Chunk im selben SCTP-Paket gebündelt werden.
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 = 10 |Chunk Flags | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/ Cookie /
\ \
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
Cookie: variable Größe
Dieses Feld muss das exakte Cookie enthalten, das im State Cookie-Parameter vom vorherigen INIT ACK empfangen wurde.
Eine Implementierung SOLLTE (SHOULD) das Cookie so klein wie möglich machen, um Interoperabilität zu gewährleisten.
Hinweis: Ein Cookie Echo enthält KEINEN State Cookie-Parameter; stattdessen werden die Daten innerhalb des Parameter Value des State Cookie zu den Daten innerhalb des Chunk Value des Cookie Echo. Dies ermöglicht es einer Implementierung, nur die ersten 2 Bytes des State Cookie-Parameters zu ändern, um ein COOKIE ECHO-Chunk zu werden.
3.3.12. Cookie-Bestätigung (Cookie Acknowledgement, COOKIE ACK) (11)
Dieser Chunk wird nur während der Initialisierung einer Assoziation verwendet. Er wird verwendet, um den Empfang eines COOKIE ECHO-Chunks zu bestätigen. Dieser Chunk MUSS (MUST) jedem DATA- oder SACK-Chunk vorangehen, der innerhalb der Assoziation gesendet wird, KANN (MAY) aber mit einem oder mehreren DATA-Chunks oder SACK-Chunks im selben SCTP-Paket gebündelt werden.
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 = 11 |Chunk Flags | Length = 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
3.3.13. Herunterfahren abgeschlossen (Shutdown Complete, SHUTDOWN COMPLETE) (14)
Dieser Chunk MUSS (MUST) verwendet werden, um den Empfang des SHUTDOWN ACK-Chunks bei Abschluss des Herunterfahrprozesses zu bestätigen; siehe Abschnitt 9.2 für Details.
Der SHUTDOWN COMPLETE-Chunk hat keine Parameter.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Chunk Flags (Chunk-Flags): 8 Bits
Reserved (Reserviert): 7 Bits
Bei der Übertragung auf 0 gesetzt und beim Empfang ignoriert.
T bit (T-Bit): 1 Bit
Das T-Bit wird auf 0 gesetzt, wenn der Sender das vom Peer erwartete Verification Tag ausgefüllt hat. Wenn das Verification Tag reflektiert wird, MUSS (MUST) das T-Bit auf 1 gesetzt werden. Reflektieren bedeutet, dass das gesendete Verification Tag dasselbe ist wie das empfangene.
Hinweis: Für diesen Chunk gelten spezielle Regeln zur Verifizierung, siehe Abschnitt 8.5.1 für Details.
Hinweis: Dieses Dokument enthält die Abschnitte 3.3.3 bis 3.3.13 und vervollständigt die vollständige Beschreibung der SCTP-Chunk-Definitionen. Kapitel 4 und nachfolgende Inhalte werden in nachfolgenden Dokumenten fortgesetzt.