Aller au contenu principal

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éviationSignification
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-associationBloc 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.