Zum Hauptinhalt springen

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ürzungBedeutung
SCTPStream Control Transmission Protocol
TSNTransmission Sequence Number
TCBTransmission Control Block
ULPUpper Layer Protocol
MTUMaximum Transmission Unit
SACKSelective ACKnowledgement
a_rwndAdvertised Receiver Window
PMTUPath MTU
RTORetransmission Timeout
RTTRound-Trip Time
HMACHash-based Message Authentication Code
CRCCyclic 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.