1. Einleitung
Das Stream Control Transmission Protocol (SCTP) ist ein zuverlässiges, nachrichtenorientiertes Transportprotokoll, das ursprünglich entwickelt wurde, um Signalisierungsnachrichten des öffentlichen leitungsvermittelten Telefonnetzes (PSTN) über IP-Netze zu übertragen. Dieses Kapitel stellt die Motivation, Architektur, Schlüsselbegriffe, Abkürzungen und Hauptfunktionen des SCTP vor.
1.1. Motivation
Traditionelle Transportprotokolle (TCP und UDP) weisen in einigen Szenarien Einschränkungen auf:
- TCP ist flussorientiert mit global strenger Reihenfolge und eignet sich daher nicht für die unabhängige Zustellung mehrerer logischer Ströme.
- UDP garantiert weder Zuverlässigkeit noch Reihenfolge und bietet keine Staukontrolle.
- Die PSTN-Signalisierung erfordert eine zuverlässige, Multi-Stream-, ausfalltolerante und angriffssichere Zustellung.
SCTP deckt diese Bedarfe durch einen zuverlässigen, nachrichtenorientierten Transport mit Multi-Stream, Multi-Homing und Staukontrolle ab.
1.2. Architekturüberblick des SCTP
SCTP befindet sich im Protokollstapel zwischen der Netzwerkschicht (IP) und der Anwendungsschicht. Es verwendet eine Assoziation (logische Verbindung) zwischen zwei Endpunkten, wobei jeder Endpunkt mehrere IP-Adressen (Multi-Homing) besitzen kann. Daten werden in Chunks unterteilt, die in SCTP-Paketen transportiert werden.
1.3. Schlüsselbegriffe
- Assoziation (Association) : logische Beziehung zwischen zwei SCTP-Endpunkten, kann mehrere Adressen nutzen.
- Chunk : Dateneinheit oder Steuerungseinheit des SCTP, transportiert in einem SCTP-Paket.
- Strom (Stream) : bidirektionaler logischer Kanal innerhalb einer Assoziation, identifiziert durch eine Stream-Kennung.
- TSN (Transmission Sequence Number) : Sequenznummer, die jedem DATA-Chunk zugewiesen wird.
- VTag / Verification Tag : 32-Bit-Wert, der eine Assoziation identifiziert, in jedem Paket enthalten.
- Multi-Homing : Fähigkeit einer Assoziation, pro Endpunkt mehrere IP-Adressen zu nutzen.
1.4. Abkürzungen
| Abkürzung | Bedeutung |
|---|---|
| SCTP | Stream Control Transmission Protocol |
| TSN | Transmission Sequence Number |
| TCB | Transmission Control Block |
| ULP | Upper Layer Protocol |
| MTU | Maximum Transmission Unit |
| SACK | Selective ACKnowledgement |
| a_rwnd | Advertised Receiver Window |
| PMTU | Path MTU |
| RTO | Retransmission Timeout |
| RTT | Round-Trip Time |
| HMAC | Hash-based Message Authentication Code |
| CRC | Cyclic Redundancy Check |
| TCB per-association | Übertragungskontrollblock pro Assoziation |
1.5. Funktionale Übersicht des SCTP
1.5.1. Start und Beendigung der Assoziation
Eine Assoziation wird über einen Vier-Wege-Handshake (INIT, INIT ACK, COOKIE ECHO, COOKIE ACK) aufgebaut und über SHUTDOWN / SHUTDOWN ACK / SHUTDOWN COMPLETE beendet oder über ABORT abgebrochen.
1.5.2. Geordnete Zustellung innerhalb von Strömen
Jeder Strom besitzt seine eigene Sequenznummer. Die geordnete Zustellung kann pro Strom aktiviert oder deaktiviert werden und ermöglicht eine unabhängige Reihenfolge zwischen Strömen.
1.5.3. Fragmentierung von Nutzerdaten
Nachrichten, die die Pfad-MTU überschreiten, werden in mehrere DATA-Chunks fragmentiert und beim Empfang reassembliert.
1.5.4. Bestätigung und Staukontrolle
SCTP verwendet SACK zur Empfangsbestätigung und Staukontrolle, um den Durchsatz gemäß der Netzwerkkapazität zu begrenzen.
1.5.5. Bündeln von Chunks
Mehrere Chunks können in einem einzelnen SCTP-Paket gebündelt werden, um den Overhead zu reduzieren.
1.5.6. Paketvalidierung
Jedes Paket enthält ein Verifikations-Tag und eine CRC32c-Prüfsumme, um gefälschte oder fehlerhafte Pakete zu verwerfen.
1.5.7. Pfadverwaltung
Durch Multi-Homing stehen mehrere Pfade zur Verfügung. SCTP überwacht deren Erreichbarkeit über Heartbeats und schaltet bei Ausfall um.
1.6. Sequenznummern-Arithmetik
Sequenznummern (TSN, Stream-Nummern, RTO usw.) verwenden je nach Feld Arithmetik modulo 2^32 oder 2^16. Vergleiche folgen den Regeln der zirkulären Zweierkomplement-Arithmetik.
1.7. Änderungen gegenüber RFC 2960
RFC 4960 obsoletisiert RFC 2960 und RFC 3309. Es klärt Implementierungsdetails, stärkt die Sicherheit (Cookie, Verifikations-Tag) und korrigiert Mehrdeutigkeiten, ohne die grundlegenden Prinzipien des Protokolls zu ändern.
Zusammenfassung
SCTP ist ein zuverlässiges, nachrichtenorientiertes Transportprotokoll mit Multi-Stream, Multi-Homing, Fragmentierung, Staukontrolle und Angriffswiderstand. Es schließt die Lücken von TCP und UDP für Anwendungen, die eine zuverlässige und ausfalltolerante Zustellung benötigen.