Zum Hauptinhalt springen

1. Einführung (Introduction)

Dieser Abschnitt erklärt die Überlegungen hinter der Entwicklung des Stream Control Transmission Protocol (SCTP), die von ihm angebotenen Dienste und die grundlegenden Konzepte, die zum Verständnis der detaillierten Beschreibung des Protokolls erforderlich sind.

Dieses Dokument ersetzt [RFC2960] und [RFC3309].

1.1. Motivation

TCP [RFC0793] hat als primäres Mittel für zuverlässige Datenübertragung in IP-Netzwerken immense Dienste geleistet. Eine wachsende Zahl neuerer Anwendungen hat jedoch TCP als zu einschränkend empfunden und ihr eigenes zuverlässiges Datenübertragungsprotokoll über UDP [RFC0768] integriert. Zu den Einschränkungen, die Benutzer umgehen wollten, gehören die folgenden:

  • TCP bietet sowohl zuverlässige Datenübertragung als auch strikte Auslieferung der Daten in Übertragungsreihenfolge. Einige Anwendungen benötigen zuverlässige Übertragung ohne Sequenzpflege, während andere mit teilweiser Sortierung der Daten zufrieden wären. In beiden Fällen verursacht die von TCP angebotene Kopfblockierung (Head-of-Line Blocking) unnötige Verzögerungen.

  • Die stromorien

tierte Natur von TCP ist oft unbequem. Anwendungen müssen ihre eigene Datensatzmarkierung hinzufügen, um ihre Nachrichten abzugrenzen, und müssen die Push-Funktion explizit verwenden, um sicherzustellen, dass eine vollständige Nachricht in angemessener Zeit übertragen wird.

  • Der begrenzte Umfang von TCP-Sockets erschwert die Aufgabe, hochverfügbare Datenübertragungsfähigkeit unter Verwendung von Multihomed-Hosts bereitzustellen.

  • TCP ist relativ anfällig für Denial-of-Service-Angriffe wie SYN-Angriffe.

Der Transport von PSTN-Signalisierung über das IP-Netzwerk ist eine Anwendung, für die all diese Einschränkungen von TCP relevant sind. Obwohl diese Anwendung die Entwicklung von SCTP direkt motiviert hat, könnten andere Anwendungen feststellen, dass SCTP gut zu ihren Anforderungen passt.

1.2. Architektonische Sicht von SCTP

SCTP wird als Schicht zwischen der SCTP-Benutzeranwendung (kurz „SCTP-Benutzer") und einem verbindungslosen Paketnetzwerkdienst wie IP betrachtet. Der Rest dieses Dokuments geht davon aus, dass SCTP über IP läuft. Der von SCTP angebotene Basisdienst ist die zuverlässige Übertragung von Benutzernachrichten zwischen Peer-SCTP-Benutzern. Er führt diesen Dienst im Kontext einer Assoziation zwischen zwei SCTP-Endpunkten aus. Abschnitt 10 dieses Dokuments skizziert die API, die an der Grenze zwischen der SCTP- und der SCTP-Benutzerschicht existieren sollte.

SCTP ist von Natur aus verbindungsorientiert, aber die SCTP-Assoziation ist ein breiteres Konzept als die TCP-Verbindung. SCTP bietet jedem SCTP-Endpunkt (Abschnitt 1.3) die Mittel, dem anderen Endpunkt (während des Assoziationsstarts) eine Liste von Transportadressen (d. h. mehrere IP-Adressen in Kombination mit einem SCTP-Port) bereitzustellen, über die dieser Endpunkt erreicht werden kann und von denen aus er SCTP-Pakete senden wird. Die Assoziation erstreckt sich über Übertragungen über alle möglichen Quell-/Zielkombinationen, die aus den Listen jedes Endpunkts generiert werden können.

     _____________                                      _____________
| SCTP User | | SCTP User |
| Application | | Application |
|-------------| |-------------|
| SCTP | | SCTP |
| Transport | | Transport |
| Service | | Service |
|-------------| |-------------|
| |One or more ---- One or more| |
| IP Network |IP address \/ IP address| IP Network |
| Service |appearances /\ appearances| Service |
|_____________| ---- |_____________|

SCTP Node A |<-------- Network transport ------->| SCTP Node B

Abbildung 1: Eine SCTP-Assoziation

1.3. Schlüsselbegriffe

Ein Teil der zur Beschreibung von SCTP verwendeten Sprache wurde in den vorherigen Abschnitten eingeführt. Dieser Abschnitt bietet eine konsolidierte Liste der Schlüsselbegriffe und ihrer Definitionen.

  • Aktive Ziel-Transportadresse (Active destination transport address): Eine Transportadresse auf einem Peer-Endpunkt, die ein sendender Endpunkt als verfügbar zum Empfangen von Benutzernachrichten betrachtet.

  • Bündelung (Bundling): Eine optionale Multiplexing-Operation, bei der mehr als eine Benutzernachricht im selben SCTP-Paket übertragen werden kann. Jede Benutzernachricht belegt ihren eigenen DATA-Chunk.

  • Chunk: Eine Informationseinheit innerhalb eines SCTP-Pakets, bestehend aus einem Chunk-Header und chunk-spezifischem Inhalt.

  • Stauungsfenster (Congestion window, cwnd): Eine SCTP-Variable, die die Daten in Anzahl von Bytes begrenzt, die ein Sender an eine bestimmte Ziel-Transportadresse senden kann, bevor er eine Bestätigung erhält.

  • Kumulativer TSN-Bestätigungspunkt (Cumulative TSN Ack Point): Die TSN des letzten DATA-Chunks, der über das kumulative TSN-Bestätigungsfeld eines SACK bestätigt wurde.

  • Leerlauf-Zieladresse (Idle destination address): Eine Adresse, an die innerhalb einer gewissen Zeit, normalerweise dem HEARTBEAT-Intervall oder länger, keine Benutzernachrichten gesendet wurden.

  • Inaktive Ziel-Transportadresse (Inactive destination transport address): Eine Adresse, die aufgrund von Fehlern als inaktiv betrachtet wird und nicht zur Übertragung von Benutzernachrichten verfügbar ist.

  • Nachricht = Benutzernachricht (Message = user message): Daten, die von SCTP durch das Upper Layer Protocol (ULP) übermittelt werden.

  • Nachrichtenauthentifizierungscode (Message Authentication Code, MAC): Ein Integritätsprüfmechanismus, der auf kryptografischen Hash-Funktionen mit einem geheimen Schlüssel basiert. Normalerweise werden Nachrichtenauthentifizierungscodes zwischen zwei Parteien verwendet, die einen geheimen Schlüssel teilen, um zwischen diesen Parteien übertragene Informationen zu validieren. In SCTP wird er von einem Endpunkt verwendet, um die State-Cookie-Informationen zu validieren, die vom Peer im COOKIE ECHO-Chunk zurückgegeben werden. Der Begriff „MAC" hat in verschiedenen Kontexten unterschiedliche Bedeutungen. SCTP verwendet diesen Begriff mit derselben Bedeutung wie in [RFC2104].

  • Network Byte Order (Network Byte Order): Höchstwertiges Byte zuerst, auch bekannt als Big Endian.

  • Geordnete Nachricht (Ordered Message): Eine Benutzernachricht, die in Bezug auf alle vorherigen Benutzernachrichten, die innerhalb des Stroms gesendet wurden, auf dem die Nachricht gesendet wurde, in Reihenfolge zugestellt wird.

  • Ausstehende TSN (Outstanding TSN, an einem SCTP-Endpunkt): Eine TSN (und der zugehörige DATA-Chunk), die vom Endpunkt gesendet wurde, für die er jedoch noch keine Bestätigung erhalten hat.

  • Pfad (Path): Die Route, die von den SCTP-Paketen genommen wird, die von einem SCTP-Endpunkt an eine bestimmte Ziel-Transportadresse seines Peer-SCTP-Endpunkts gesendet werden. Das Senden an verschiedene Ziel-Transportadressen garantiert nicht unbedingt getrennte Pfade.

  • Primärpfad (Primary Path): Der Primärpfad ist die Ziel- und Quelladresse, die standardmäßig in ein ausgehendes Paket zum Peer-Endpunkt eingefügt wird. Die Definition enthält die Quelladresse, da eine Implementierung möglicherweise sowohl die Ziel- als auch die Quelladresse angeben möchte, um den von Antwort-Chunks genommenen Rückweg besser zu steuern und auf welcher Schnittstelle das Paket übertragen wird, wenn der Datensender mehrfach beheimatet ist.

  • Empfängerfenster (Receiver Window, rwnd): Eine SCTP-Variable, die ein Datensender verwendet, um das zuletzt berechnete Empfängerfenster seines Peers in Anzahl von Bytes zu speichern. Dies gibt dem Sender einen Hinweis auf den verfügbaren Platz im eingehenden Puffer des Empfängers.

  • SCTP-Assoziation (SCTP association): Eine Protokollbeziehung zwischen SCTP-Endpunkten, die aus den beiden SCTP-Endpunkten und Protokollzustandsinformationen besteht, einschließlich Verification Tags und dem aktuell aktiven Satz von Transmission Sequence Numbers (TSNs) usw. Eine Assoziation kann eindeutig durch die von den Endpunkten in der Assoziation verwendeten Transportadressen identifiziert werden. Zwei SCTP-Endpunkte dürfen nicht (MUST NOT) zu einem bestimmten Zeitpunkt mehr als eine SCTP-Assoziation zwischen sich haben.

  • SCTP-Endpunkt (SCTP endpoint): Der logische Sender/Empfänger von SCTP-Paketen. Auf einem mehrfach beheimateten Host wird ein SCTP-Endpunkt seinen Peers als Kombination aus einem Satz von geeigneten Ziel-Transportadressen, an die SCTP-Pakete gesendet werden können, und einem Satz von geeigneten Quell-Transportadressen, von denen SCTP-Pakete empfangen werden können, dargestellt. Alle von einem SCTP-Endpunkt verwendeten Transportadressen müssen dieselbe Portnummer verwenden, können jedoch mehrere IP-Adressen verwenden. Eine von einem SCTP-Endpunkt verwendete Transportadresse darf nicht von einem anderen SCTP-Endpunkt verwendet werden. Mit anderen Worten, eine Transportadresse ist eindeutig für einen SCTP-Endpunkt.

  • SCTP-Paket (oder Paket) (SCTP packet or packet): Die Datenübertragungseinheit über die Schnittstelle zwischen SCTP und dem verbindungslosen Paketnetzwerk (z. B. IP). Ein SCTP-Paket enthält den gemeinsamen SCTP-Header, mögliche SCTP-Kontroll-Chunks und Benutzerdaten, die in SCTP DATA-Chunks gekapselt sind.

  • SCTP-Benutzeranwendung (SCTP-Benutzer) (SCTP user application, SCTP user): Die logische Anwendungsentität der höheren Schicht, die die Dienste von SCTP nutzt, auch als Upper-Layer Protocol (ULP) bezeichnet.

  • Slow-Start-Schwelle (Slow-Start Threshold, ssthresh): Eine SCTP-Variable. Dies ist die Schwelle, die der Endpunkt verwenden wird, um zu bestimmen, ob Slow Start oder Stauungsvermeidung auf einer bestimmten Ziel-Transportadresse durchgeführt werden soll. Ssthresh ist in Anzahl von Bytes angegeben.

  • Strom (Stream): Ein unidirektionaler logischer Kanal, der von einem zu einem anderen zugeordneten SCTP-Endpunkt eingerichtet wird, innerhalb dessen alle Benutzernachrichten in Reihenfolge zugestellt werden, außer denen, die dem ungeordneten Zustelldienst übermittelt werden.

Hinweis: Die Beziehung zwischen Stromnummern in entgegengesetzten Richtungen ist streng eine Frage, wie die Anwendungen sie verwenden. Es liegt in der Verantwortung des SCTP-Benutzers, diese Korrelationen zu erstellen und zu verwalten, wenn sie gewünscht werden.

  • Strom-Sequenznummer (Stream Sequence Number): Eine 16-Bit-Sequenznummer, die intern von SCTP verwendet wird, um die sequentielle Zustellung der Benutzernachrichten innerhalb eines bestimmten Stroms sicherzustellen. Jeder Benutzernachricht wird eine Strom-Sequenznummer angehängt.

  • Tie-Tags: Zwei 32-Bit-Zufallszahlen, die zusammen eine 64-Bit-Nonce bilden. Diese Tags werden in einem State Cookie und TCB verwendet, damit eine neu neu gestartete Assoziation mit der ursprünglichen Assoziation innerhalb des Endpunkts verknüpft werden kann, der nicht neu gestartet wurde, ohne die wahren Verification Tags einer bestehenden Assoziation zu offenbaren.

  • Übertragungskontrollblock (Transmission Control Block, TCB): Eine interne Datenstruktur, die von einem SCTP-Endpunkt für jede seiner bestehenden SCTP-Assoziationen zu anderen SCTP-Endpunkten erstellt wird. Der TCB enthält alle Status- und Betriebsinformationen, die der Endpunkt benötigt, um die entsprechende Assoziation zu warten und zu verwalten.

  • Übertragungssequenznummer (Transmission Sequence Number, TSN): Eine 32-Bit-Sequenznummer, die intern von SCTP verwendet wird. Jeder Chunk, der Benutzerdaten enthält, erhält eine TSN, um dem empfangenden SCTP-Endpunkt zu ermöglichen, dessen Empfang zu bestätigen und doppelte Zustellungen zu erkennen.

  • Transportadresse (Transport address): Eine Transportadresse wird traditionell durch eine Netzwerkschichtadresse, ein Transportschichtprotokoll und eine Transportschicht-Portnummer definiert. Im Fall von SCTP, das über IP läuft, wird eine Transportadresse durch die Kombination einer IP-Adresse und einer SCTP-Portnummer definiert (wobei SCTP das Transportprotokoll ist).

  • Unbestätigte TSN (Unacknowledged TSN, an einem SCTP-Endpunkt): Eine TSN (und der zugehörige DATA-Chunk), die vom Endpunkt empfangen wurde, für die jedoch noch keine Bestätigung gesendet wurde. Oder im umgekehrten Fall für ein Paket, das gesendet wurde, aber keine Bestätigung empfangen wurde.

  • Ungeordnete Nachricht (Unordered Message): Ungeordnete Nachrichten sind „ungeordnet" in Bezug auf jede andere Nachricht; dies schließt sowohl andere ungeordnete Nachrichten als auch andere geordnete Nachrichten ein. Eine ungeordnete Nachricht kann vor oder nach geordneten Nachrichten zugestellt werden, die im selben Strom gesendet wurden.

  • Benutzernachricht (User message): Die Datenübertragungseinheit über die Schnittstelle zwischen SCTP und seinem Benutzer.

  • Verification Tag (Verification Tag): Eine 32-Bit-vorzeichenlose Ganzzahl, die zufällig generiert wird. Der Verification Tag bietet einen Schlüssel, der es einem Empfänger ermöglicht, zu überprüfen, dass das SCTP-Paket zur aktuellen Assoziation gehört und kein altes oder veraltetes Paket aus einer früheren Assoziation ist.

1.4. Abkürzungen

  • MAC - Nachrichtenauthentifizierungscode (Message Authentication Code) [RFC2104]
  • RTO - Wiederübertragungszeitüberschreitung (Retransmission Timeout)
  • RTT - Rundlaufzeit (Round-Trip Time)
  • RTTVAR - Rundlaufzeitvariation (Round-Trip Time Variation)
  • SCTP - Stream Control Transmission Protocol
  • SRTT - Geglättete RTT (Smoothed RTT)
  • TCB - Übertragungskontrollblock (Transmission Control Block)
  • TLV - Typ-Länge-Wert-Codierungsformat (Type-Length-Value coding format)
  • TSN - Übertragungssequenznummer (Transmission Sequence Number)
  • ULP - Upper-Layer-Protokoll (Upper-Layer Protocol)

1.5. Funktionale Sicht von SCTP

Der SCTP-Transportdienst kann in eine Reihe von Funktionen zerlegt werden. Diese sind in Abbildung 2 dargestellt und im Rest dieses Abschnitts erläutert.

                        SCTP User Application

-----------------------------------------------------
_____________ ____________________
| | | Sequenced Delivery |
| Association | | within Streams |
| | |____________________|
| Startup |
| | ____________________________
| and | | User Data Fragmentation |
| | |____________________________|
| Takedown |
| | ____________________________
| | | Acknowledgement |
| | | and |
| | | Congestion Avoidance |
| | |____________________________|
| |
| | ____________________________
| | | Chunk Bundling |
| | |____________________________|
| |
| | ________________________________
| | | Packet Validation |
| | |________________________________|
| |
| | ________________________________
| | | Path Management |
|_____________| |________________________________|

Abbildung 2: Funktionale Sicht des SCTP-Transportdienstes

1.5.1. Assoziationsstart und -beendigung

Eine Assoziation wird durch eine Anforderung vom SCTP-Benutzer initiiert (siehe die Beschreibung der ASSOCIATE (oder SEND) Primitive in Abschnitt 10).

Ein Cookie-Mechanismus, ähnlich dem von Karn und Simpson in [RFC2522] beschriebenen, wird während der Initialisierung eingesetzt, um Schutz vor Synchronisationsangriffen zu bieten. Der Cookie-Mechanismus verwendet einen Vier-Wege-Handshake, dessen letzte zwei Teile Benutzerdaten für ein schnelles Setup übertragen dürfen. Die Startsequenz wird in Abschnitt 5 dieses Dokuments beschrieben.

SCTP sorgt für ein ordnungsgemäßes Schließen (d. h. Shutdown) einer aktiven Assoziation auf Anforderung vom SCTP-Benutzer. Siehe die Beschreibung der SHUTDOWN-Primitive in Abschnitt 10. SCTP erlaubt auch ein nicht ordnungsgemäßes Schließen (d. h. Abbruch), entweder auf Anforderung des Benutzers (ABORT-Primitive) oder als Ergebnis einer innerhalb der SCTP-Schicht erkannten Fehlerbedingung. Abschnitt 9 beschreibt sowohl die ordnungsgemäßen als auch die nicht ordnungsgemäßen Schließverfahren.

SCTP unterstützt keinen halboffenen Zustand (wie TCP), in dem eine Seite weiterhin Daten senden kann, während das andere Ende geschlossen ist. Wenn ein Endpunkt ein Herunterfahren durchführt, stoppt die Assoziation auf jedem Peer die Annahme neuer Daten von seinem Benutzer und liefert nur Daten in der Warteschlange zum Zeitpunkt des ordnungsgemäßen Schließens (siehe Abschnitt 9).

1.5.2. Sequenzierte Zustellung innerhalb von Strömen

Der Begriff „Strom" wird in SCTP verwendet, um sich auf eine Sequenz von Benutzernachrichten zu beziehen, die dem Upper-Layer-Protokoll in Bezug auf andere Nachrichten innerhalb desselben Stroms in Reihenfolge zugestellt werden sollen. Dies steht im Gegensatz zu seiner Verwendung in TCP, wo er sich auf eine Sequenz von Bytes bezieht (in diesem Dokument wird angenommen, dass ein Byte 8 Bits beträgt).

Der SCTP-Benutzer kann beim Assoziationsstart die Anzahl der von der Assoziation zu unterstützenden Ströme angeben. Diese Zahl wird mit dem entfernten Ende ausgehandelt (siehe Abschnitt 5.1.1). Benutzernachrichten werden mit Stromnummern verknüpft (SEND-, RECEIVE-Primitiven, Abschnitt 10). Intern weist SCTP jeder Nachricht, die ihm vom SCTP-Benutzer übergeben wird, eine Strom-Sequenznummer zu. Auf der Empfangsseite stellt SCTP sicher, dass Nachrichten innerhalb eines bestimmten Stroms in Reihenfolge an den SCTP-Benutzer zugestellt werden. Während jedoch ein Strom blockiert sein kann, während er auf die nächste Benutzernachricht in Reihenfolge wartet, kann die Zustellung von anderen Strömen fortgesetzt werden.

SCTP bietet einen Mechanismus zum Umgehen des sequenzierten Zustelldienstes. Benutzernachrichten, die mit diesem Mechanismus gesendet werden, werden dem SCTP-Benutzer zugestellt, sobald sie empfangen werden.

1.5.3. Benutzerdatenfragmentierung

Bei Bedarf fragmentiert SCTP Benutzernachrichten, um sicherzustellen, dass das an die untere Schicht übergebene SCTP-Paket der Pfad-MTU entspricht. Beim Empfang werden Fragmente wieder zu vollständigen Nachrichten zusammengesetzt, bevor sie an den SCTP-Benutzer übergeben werden.

1.5.4. Bestätigung und Stauungsvermeidung

SCTP weist jedem Benutzerdatenfragment oder nicht fragmentierten Nachricht eine Transmission Sequence Number (TSN) zu. Die TSN ist unabhängig von jeder auf der Stromebene zugewiesenen Strom-Sequenznummer. Das Empfangsende bestätigt alle empfangenen TSNs, selbst wenn Lücken in der Sequenz vorhanden sind. Auf diese Weise wird die zuverlässige Zustellung funktional von der sequenzierten Stromzustellung getrennt gehalten.

Die Bestätigungs- und Stauungsvermeidungsfunktion ist für die Paketwiederübertragung verantwortlich, wenn eine rechtzeitige Bestätigung nicht empfangen wurde. Die Paketwiederübertragung wird durch Stauungsvermeidungsverfahren bedingt, die denen ähneln, die für TCP verwendet werden. Siehe Abschnitt 6 und Abschnitt 7 für eine detaillierte Beschreibung der mit dieser Funktion verbundenen Protokollverfahren.

1.5.5. Chunk-Bündelung

Wie in Abschnitt 3 beschrieben, besteht das an die untere Schicht gelieferte SCTP-Paket aus einem gemeinsamen Header, gefolgt von einem oder mehreren Chunks. Jeder Chunk kann entweder Benutzerdaten oder SCTP-Kontrollinformationen enthalten. Der SCTP-Benutzer hat die Möglichkeit, die Bündelung von mehr als einer Benutzernachricht in ein einziges SCTP-Paket anzufordern. Die Chunk-Bündelungsfunktion von SCTP ist für die Zusammenstellung des vollständigen SCTP-Pakets und seine Zerlegung auf der Empfangsseite verantwortlich.

Während Stauungszeiten kann eine SCTP-Implementierung (MAY) immer noch eine Bündelung durchführen, selbst wenn der Benutzer angefordert hat, dass SCTP nicht bündelt. Die Deaktivierung der Bündelung durch den Benutzer betrifft nur SCTP-Implementierungen, die vor der Übertragung eine kleine Zeitspanne verzögern können (um zu versuchen, die Bündelung zu fördern). Wenn die Benutzerschicht die Bündelung deaktiviert, ist diese kleine Verzögerung verboten, aber nicht die Bündelung, die während einer Stauung oder Wiederübertragung durchgeführt wird.

1.5.6. Paketvalidierung

Ein obligatorisches Verification Tag-Feld und ein 32-Bit-Prüfsummenfeld (siehe Anhang B für eine Beschreibung der CRC32c-Prüfsumme) sind im gemeinsamen SCTP-Header enthalten. Der Verification Tag-Wert wird von jedem Ende der Assoziation während des Assoziationsstarts gewählt. Pakete, die ohne den erwarteten Verification Tag-Wert empfangen werden, werden verworfen, als Schutz vor blinden Maskierungsangriffen und gegen veraltete SCTP-Pakete aus einer früheren Assoziation. Die CRC32c-Prüfsumme sollte vom Sender jedes SCTP-Pakets gesetzt werden, um zusätzlichen Schutz vor Datenkorruption im Netzwerk zu bieten. Der Empfänger eines SCTP-Pakets mit einer ungültigen CRC32c-Prüfsumme verwirft das Paket stillschweigend.

1.5.7. Pfadverwaltung

Der sendende SCTP-Benutzer ist in der Lage, den Satz von Transportadressen, die als Ziele für SCTP-Pakete verwendet werden, durch die in Abschnitt 10 beschriebenen Primitiven zu manipulieren. Die SCTP-Pfadverwaltungsfunktion wählt die Ziel-Transportadresse für jedes ausgehende SCTP-Paket basierend auf den Anweisungen des SCTP-Benutzers und dem aktuell wahrgenommenen Erreichbarkeitsstatus des geeigneten Zielsatzes aus. Die Pfadverwaltungsfunktion überwacht die Erreichbarkeit durch Herzschläge, wenn anderer Paketverkehr unzureichend ist, um diese Informationen bereitzustellen, und informiert den SCTP-Benutzer, wenn sich die Erreichbarkeit einer entfernten Transportadresse ändert. Die Pfadverwaltungsfunktion ist auch dafür verantwortlich, den geeigneten Satz lokaler Transportadressen während des Assoziationsstarts an das entfernte Ende zu melden und die vom entfernten Ende zurückgegebenen Transportadressen an den SCTP-Benutzer zu melden.

Beim Assoziationsstart wird für jeden SCTP-Endpunkt ein Primärpfad definiert, der für das normale Senden von SCTP-Paketen verwendet wird.

Auf der Empfangsseite ist die Pfadverwaltung dafür verantwortlich, die Existenz einer gültigen SCTP-Assoziation zu überprüfen, zu der das eingehende SCTP-Paket gehört, bevor es zur weiteren Verarbeitung übergeben wird.

Hinweis: Pfadverwaltung und Paketvalidierung werden gleichzeitig durchgeführt, daher können sie, obwohl oben separat beschrieben, in Wirklichkeit nicht als separate Elemente durchgeführt werden.

1.6. Seriennummernarithmetik

Es ist wichtig zu bedenken, dass der tatsächliche Transmission Sequence Number-Raum endlich ist, obwohl er sehr groß ist. Dieser Raum reicht von 0 bis 232 - 1. Da der Raum endlich ist, muss alle Arithmetik, die sich mit Transmission Sequence Numbers befasst, modulo 232 durchgeführt werden. Diese vorzeichenlose Arithmetik bewahrt die Beziehung von Sequenznummern, wenn sie von 232 - 1 wieder zu 0 zyklieren. Es gibt einige Feinheiten bei der Computer-Modulo-Arithmetik, daher sollte bei der Programmierung des Vergleichs solcher Werte große Sorgfalt angewendet werden. Beim Verweis auf TSNs bedeutet das Symbol "=<" "kleiner als oder gleich" (modulo 232).

Vergleiche und Arithmetik auf TSNs in diesem Dokument sollten (SHOULD) die in [RFC1982] definierte Seriennummernarithmetik verwenden, wobei SERIAL_BITS = 32.

Ein Endpunkt sollte nicht (SHOULD NOT) einen DATA-Chunk mit einer TSN übertragen, die mehr als 2**31 - 1 über der Anfangs-TSN seines aktuellen Sendefensters liegt. Dies wird Probleme beim Vergleich von TSNs verursachen.

Transmission Sequence Numbers wickeln sich um, wenn sie 232 - 1 erreichen. Das heißt, die nächste TSN, die ein DATA-Chunk verwenden muss (MUST), nachdem TSN = 232 - 1 übertragen wurde, ist TSN = 0.

Jede Arithmetik, die auf Strom-Sequenznummern durchgeführt wird, sollte (SHOULD) die in [RFC1982] definierte Seriennummernarithmetik verwenden, wobei SERIAL_BITS = 16. Alle anderen Arithmetiken und Vergleiche in diesem Dokument verwenden normale Arithmetik.

1.7. Änderungen gegenüber RFC 2960

SCTP wurde ursprünglich in [RFC2960] definiert, das dieses Dokument ersetzt. Leser, die an den Details der verschiedenen Änderungen interessiert sind, die dieses Dokument einbezieht, werden gebeten, [RFC4460] zu konsultieren.