1. Introduction
Le Stream Control Transmission Protocol (SCTP) est un protocole de transport fiable et orienté message, conçu à l'origine pour transporter les messages de signalisation du réseau téléphonique public commuté (PSTN) sur des réseaux IP, mais applicable à des applications plus larges. Ce chapitre présente les motivations, l'architecture, les termes clés, les abréviations et les principales fonctions du SCTP.
1.1. Motivation
Les protocoles de transport traditionnels (TCP et UDP) présentent des limites pour certains scénarios :
- TCP est orienté flux, avec un ordre global strict, ce qui ne convient pas à la livraison indépendante de plusieurs flux logiques.
- UDP ne garantit ni la fiabilité ni l'ordre, et ne fournit pas de contrôle de congestion.
- La signalisation PSTN exige une livraison fiable, multi-flux, tolérante aux pannes réseau et résistante aux attaques.
Le SCTP combler ces besoins en offrant un transport fiable orienté message avec multi-flux, multi-hébergement et contrôle de congestion.
1.2. Vue architecturale du SCTP
Le SCTP s'insère dans la pile de protocoles entre la couche réseau (IP) et la couche application. Il utilise une association (connexion logique) entre deux points d'extrémité, chacun pouvant posséder plusieurs adresses IP (multi-hébergement). Les données sont découpées en chunks transportés dans des paquets SCTP.
1.3. Termes clés
- Association : relation logique entre deux points d'extrémité SCTP, pouvant utiliser plusieurs adresses.
- Chunk : unité de données ou de contrôle du SCTP, transportée dans un paquet SCTP.
- Flux (Stream) : canal logique bidirectionnel au sein d'une association, identifié par un identificateur de flux.
- TSN (Transmission Sequence Number) : numéro de séquence attribué à chaque chunk DATA.
- VTag / Verification Tag : valeur de 32 bits identifiant une association, incluse dans chaque paquet.
- Multihoming : capacité d'une association à utiliser plusieurs adresses IP par point d'extrémité.
1.4. Abréviations
| Abréviation | Signification |
|---|---|
| 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 | Bloc de contrôle par association |
1.5. Vue fonctionnelle du SCTP
1.5.1. Démarrage et fermeture de l'association
Une association est établie via une poignée de main en quatre temps (INIT, INIT ACK, COOKIE ECHO, COOKIE ACK), puis fermée via SHUTDOWN / SHUTDOWN ACK / SHUTDOWN COMPLETE, ou abandonnée via ABORT.
1.5.2. Livraison ordonnée au sein des flux
Chaque flux possède son propre numéro de séquence. La livraison ordonnée peut être activée ou désactivée par flux, permettant un ordre indépendant entre flux.
1.5.3. Fragmentation des données utilisateur
Les messages utilisateur trop volumineux pour la MTU du chemin sont fragmentés en plusieurs chunks DATA et réassemblés à la réception.
1.5.4. Accusé de réception et évitement de congestion
Le SCTP utilise le SACK pour accusér la réception et le contrôle de congestion pour limiter le débit en fonction de la capacité du réseau.
1.5.5. Regroupement de chunks
Plusieurs chunks peuvent être regroupés dans un seul paquet SCTP afin de réduire la surcharge.
1.5.6. Validation des paquets
Chaque paquet inclut un tag de vérification et une somme de contrôle CRC32c pour rejeter les paquets falsifiés ou erronés.
1.5.7. Gestion des chemins
Le multi-hébergement permet de disposer de plusieurs chemins ; le SCTP surveille leur joignabilité via des heartbeats et bascule en cas de défaillance.
1.6. Arithmétique des numéros de série
Les numéros de séquence (TSN, numéros de flux, RTO, etc.) utilisent une arithmétique modulo 2^32 ou 2^16 selon le champ. Les comparaisons respectent les règles de l'arithmétique en complément à deux circulaire.
1.7. Modifications par rapport à la RFC 2960
La RFC 4960 rend obsolètes la RFC 2960 et la RFC 3309. Elle clarifie certains points de l'implémentation, renforce la sécurité (cookie, tag de vérification) et corrige des ambiguïtés sans modifier les principes fondamentaux du protocole.
Résumé
Le SCTP est un protocole de transport fiable orienté message offrant le multi-flux, le multi-hébergement, la fragmentation, le contrôle de congestion et la résistance aux attaques. Il comble les lacunes de TCP et UDP pour les applications nécessitant une livraison fiable et tolérante aux pannes.