Passa al contenuto principale

1. Introduzione

Lo Stream Control Transmission Protocol (SCTP) è un protocollo di trasporto affidabile e orientato ai messaggi, progettato originariamente per trasportare messaggi di segnalazione della rete telefonica pubblica a commutazione di circuito (PSTN) su reti IP, ma applicabile ad applicazioni più ampie. Questo capitolo presenta la motivazione, l'architettura, i termini chiave, le abbreviazioni e le funzioni principali dell'SCTP.

1.1. Motivazione​

I protocolmi di trasporto tradizionali (TCP e UDP) presentano limiti in alcuni scenari:

  • TCP è orientato al flusso, con un ordine globale rigoroso, e non è adatto alla consegna indipendente di più flussi logici.
  • UDP non garantisce né affidabilità né ordine, e non fornisce controllo della congestione.
  • La segnalazione PSTN richiede una rete affidabile, multi-flusso, tollerante ai guasti e resistente agli attacchi.

L'SCTP soddisfa questi bisogni offrendo un trasporto affidabile orientato ai messaggi con multi-flusso, multi-homing e controllo della congestione.

1.2. Panoramica architetturale dell'SCTP​

L'SCTP si colloca nello stack di protocolli tra il livello di rete (IP) e il livello applicativo. Utilizza un'associazione (connessione logica) tra due endpoint, ciascuno dei quali può possedere più indirizzi IP (multi-homing). I dati sono suddivisi in chunk trasportati nei pacchetti SCTP.

1.3. Termini chiave​

  • Associazione (Association) : relazione logica tra due endpoint SCTP, può utilizzare più indirizzi.
  • Chunk : unità di dati o di controllo dell'SCTP, trasportata in un pacchetto SCTP.
  • Flusso (Stream) : canale logico bidirezionale all'interno di un'associazione, identificato da uno Stream Identifier.
  • TSN (Transmission Sequence Number) : numero di sequenza assegnato a ogni chunk DATA.
  • VTag / Verification Tag : valore a 32 bit che identifica un'associazione, incluso in ogni pacchetto.
  • Multi-homing : capacità di un'associazione di utilizzare più indirizzi IP per endpoint.

1.4. Abbreviazioni​

AbbreviazioneSignificato
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-associationTransmission Control Block per associazione

1.5. Panoramica funzionale dell'SCTP​

1.5.1. Avvio e chiusura dell'associazione​

Un'associazione è stabilita tramite un handshake a quattro vie (INIT, INIT ACK, COOKIE ECHO, COOKIE ACK), quindi chiusa tramite SHUTDOWN / SHUTDOWN ACK / SHUTDOWN COMPLETE, o abbandonata tramite ABORT.

1.5.2. Consegna ordinata all'interno dei flussi​

Ogni flusso possiede il proprio numero di sequenza. La consegna ordinata può essere attivata o disattivata per flusso, consentendo un ordine indipendente tra flussi.

1.5.3. Frammentazione dei dati utente​

I messaggi utente troppo grandi per l'MTU del percorso sono frammentati in più chunk DATA e riassemblati alla ricezione.

1.5.4. Acknowledgement e avoidance della congestione​

L'SCTP utilizza il SACK per confermare la ricezione e il controllo della congestione per limitare il rate in funzione della capacità di rete.

1.5.5. Raggruppamento dei chunk​

Più chunk possono essere raggruppati in un singolo pacchetto SCTP per ridurre l'overhead.

1.5.6. Convalida dei pacchetti​

Ogni pacchetto include un verification tag e un checksum CRC32c per scartare i pacchetti falsificati o errati.

1.5.7. Gestione dei percorsi​

Il multi-homing consente di disporre di più percorsi; l'SCTP ne monitora la raggiungibilità tramite heartbeat e commuta in caso di guasto.

1.6. Aritmetica dei numeri di sequenza​

I numeri di sequenza (TSN, numeri di flusso, RTO, ecc.) utilizzano un'aritmetica modulo 2^32 o 2^16 secondo il campo. I confronti rispettano le regole dell'aritmetica circolare in complemento a due.

1.7. Modifiche rispetto alla RFC 2960​

La RFC 4960 rende obsoleti la RFC 2960 e la RFC 3309. Chiarisce alcuni punti implementativi, rafforza la sicurezza (cookie, verification tag) e corregge ambiguità senza modificare i principi fondamentali del protocollo.


Sintesi​

L'SCTP è un protocollo di trasporto affidabile orientato ai messaggi che offre multi-flusso, multi-homing, frammentazione, controllo della congestione e resistenza agli attacchi. Colma le lacune di TCP e UDP per le applicazioni che richiedono una consegna affidabile e tollerante ai guasti.