5. SCTP, QUESTO SCONOSCIUTO
23 novembre 1998 nasce SIGTRAN (SIGnalin TRANsport)
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
6. SCTP, QUESTO SCONOSCIUTO
23 novembre 1998 nasce SIGTRAN (SIGnalin TRANsport)
inizialmente MDTP, dopo 9 versioni diventa SCTP
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
7. SCTP, QUESTO SCONOSCIUTO
23 novembre 1998 nasce SIGTRAN (SIGnalin TRANsport)
inizialmente MDTP, dopo 9 versioni diventa SCTP
SCTP è un nuovo protocollo IP, allo stesso livello di UDP e TCP
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
8. SCTP, QUESTO SCONOSCIUTO
23 novembre 1998 nasce SIGTRAN (SIGnalin TRANsport)
inizialmente MDTP, dopo 9 versioni diventa SCTP
SCTP è un nuovo protocollo IP, allo stesso livello di UDP e TCP
come TCP offre un trasporto sicuro ed ordinato dei dati attraverso la rete
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
9. SCTP, QUESTO SCONOSCIUTO
23 novembre 1998 nasce SIGTRAN (SIGnalin TRANsport)
inizialmente MDTP, dopo 9 versioni diventa SCTP
SCTP è un nuovo protocollo IP, allo stesso livello di UDP e TCP
come TCP offre un trasporto sicuro ed ordinato dei dati attraverso la rete
diversamente da TCP garantisce alcune funzioni critiche per il trasporto di segnali
telefonici (come la reattività e la persistenza di più canali di back-up)
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
11. STRUTTURA DEI PACCHETTI
COMMON HEADER
compreso in ogni datagram
source port: per multiplexing
dall’upper-user
destination port: per demultiplexing
all’upper-user
verification tag: per confermare
l’autenticità del sender
checksum: calcolato con Adler-32 per
individuare datagram corrotti
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
13. STRUTTURA DEI PACCHETTI
CHUNK
“vagone” che compone il “treno”
datagram
chunk type: definisce come
interpretare il contenuto del chunk
chunk flags: in base al chunk type
passano dei parametri al receiver
chunk length: lunghezza complessiva
del chunk
fixed fields: dati trasportati
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
15. STRUTTURA DEI PACCHETTI
PARAMETER / CAUSE
type/code: definisce come
interpretare i dati trasportati
length: lunghezza
value: dati trasportati
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
16. STATI DI UNA ASSOCIAZIONE
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
17. STATI DI UNA ASSOCIAZIONE
ESTABLISHMENT (4-way handshake)
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
18. STATI DI UNA ASSOCIAZIONE
ESTABLISHMENT (4-way handshake)
A richiede l’associazzione allegando il
proprio VerificationTag (random)
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
19. STATI DI UNA ASSOCIAZIONE
ESTABLISHMENT (4-way handshake)
A richiede l’associazzione allegando il
proprio VerificationTag (random)
B risponde ripetendo il VerificationTag di
A, generando il proprio VerificationTag e
allegando un Cookie [hash(MAC), timestamp,
lifespan e altre info per la connessione]
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
20. STATI DI UNA ASSOCIAZIONE
ESTABLISHMENT (4-way handshake)
A richiede l’associazzione allegando il
proprio VerificationTag (random)
B risponde ripetendo il VerificationTag di
A, generando il proprio VerificationTag e
allegando un Cookie [hash(MAC), timestamp,
lifespan e altre info per la connessione]
A rimanda a B il Cookie [e può iniziare a
spedire dati]
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
21. STATI DI UNA ASSOCIAZIONE
ESTABLISHMENT (4-way handshake)
A richiede l’associazzione allegando il
proprio VerificationTag (random)
B risponde ripetendo il VerificationTag di
A, generando il proprio VerificationTag e
allegando un Cookie [hash(MAC), timestamp,
lifespan e altre info per la connessione]
A rimanda a B il Cookie [e può iniziare a
spedire dati]
B controlla che il Cookie sia proprio
quello che aveva generato poco prima; in
caso di successo risponde con un Cookie-
Ack [e può iniziare a spedire dati]
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
22. STATI DI UNA ASSOCIAZIONE
SHUTDOWN (3-way) A B
A invia il chunk SHUTDOWN e smette di
inviare dati
B risponde con lo SHUTDOWN-ACK e smette
di inviare dati
A risponde con lo SHUTDOWN-COMPLETION
e cancella i dati relativi all’associazione
B cancella i dati relativi all’associazione
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
25. INIT CHUNK
INIT chunk attualmente nessun flag lunghezza chunk
primo Verification Tag dell’associazione
buffer minimo garantito per l’associazione
numero di streams in entrata/uscita
valore di partenza della SequenceNumber
IPv4 disponibili nel sender
IPv6 disponibili nel sender
tipi di IP supportati (IPv4, IPv6, host)
possibile sviluppo futuro di SCTP
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
32. PATH HEARTBEAT
?? Come sapere se le connessioni di back-up sono ancora attive dopo l’Handshake??
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
33. PATH HEARTBEAT
?? Come sapere se le connessioni di back-up sono ancora attive dopo l’Handshake??
Soluzione: le testo continuamente!
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
34. PATH HEARTBEAT
?? Come sapere se le connessioni di back-up sono ancora attive dopo l’Handshake??
Soluzione: le testo continuamente!
HEARTBEAT chunk attualmente nessun flag lunghezza chunk
} stato attuale dell’associazione
timestamp
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
35. PATH HEARTBEAT
?? Come sapere se le connessioni di back-up sono ancora attive dopo l’Handshake??
Soluzione: le testo continuamente!
HEARTBEAT chunk attualmente nessun flag lunghezza chunk
} stato attuale dell’associazione
timestamp
Considerazioni
sfrutta timestamp per calcolare RTT e disponibilità del peer
definisce l’indirizzo non valido in base a HB.counter
tiene aggiornato l’upper-user sul numero di indirzzi di backup disponibili
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
37. MULTISTREAMING
Una associazione N streams!
invio parallelo di dati
invio ordinato dei messaggi
invio non ordinato dei messaggi
no Head-of-Line blocking
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
38. MULTISTREAMING
Una associazione N streams!
invio parallelo di dati
invio ordinato dei messaggi
invio non ordinato dei messaggi
no Head-of-Line blocking
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
39. MULTISTREAMING
Una associazione N streams!
invio parallelo di dati
invio ordinato dei messaggi
invio non ordinato dei messaggi
no Head-of-Line blocking
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
41. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND
(Congestion Control Window) CWND
(Slow Start Threshold) SSTHRESH
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
42. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
43. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
44. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
45. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
46. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag lunghezza chunk
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
47. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag lunghezza chunk
ultimo byte ricevuto in ordine
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
48. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag lunghezza chunk
ultimo byte ricevuto in ordine
buffer minimo garantito
per l’associazione
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
49. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag lunghezza chunk
ultimo byte ricevuto in ordine
buffer minimo garantito
per l’associazione
cardinalità
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
50. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag lunghezza chunk
ultimo byte ricevuto in ordine
buffer minimo garantito
per l’associazione
cardinalità
dati non ancora ricevuti
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
51. FLOW CONGESTION & FLOW CONTROL
(Receiver Advertised Window) RWND Slow Start
Congestion Avoidance
(Congestion Control Window) CWND
Fast-Retrasmit on Gap Reports
(Slow Start Threshold) SSTHRESH Fast-Recovery
SACK chunk attualmente nessun flag lunghezza chunk
ultimo byte ricevuto in ordine
buffer minimo garantito
per l’associazione
cardinalità
dati non ancora ricevuti
TSN ricevuti più volte
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
56. PERFORMANCE
Analisi
SCTP = 5% TCP bandwidth
Sebbene la banda di TCP cadesse per
periodi lunghi, resta comunque più
performante di STCP
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
57. PERFORMANCE
Analisi
SCTP = 5% TCP bandwidth
Sebbene la banda di TCP cadesse per
periodi lunghi, resta comunque più
performante di STCP
Possibili cause
SCTP è ancora un protocollo molto
giovane se confrontato con TCP
si è lavorato molto sullo stack TCP di
Linux
finora l’obiettivo principale per SCTP
era renderlo completo e sicuro
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
59. CONCLUSIONI
SCTP si sta imponendo come terzo grande protocollo di
trasporto assieme a TCP e UDP
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
60. CONCLUSIONI
SCTP si sta imponendo come terzo grande protocollo di
trasporto assieme a TCP e UDP
non è ancora pronto per sostituire TCP, ma al momento è il
miglior candidato per farlo
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
61. CONCLUSIONI
SCTP si sta imponendo come terzo grande protocollo di
trasporto assieme a TCP e UDP
non è ancora pronto per sostituire TCP, ma al momento è il
miglior candidato per farlo
la sua facile estensibilità lo rende velocemente adattabile a
molti nuovi scenari
S CT P
1 2 3 4 5 6 7 8 9 10 11 12
62. CONCLUSIONI
SCTP si sta imponendo come terzo grande protocollo di
trasporto assieme a TCP e UDP
non è ancora pronto per sostituire TCP, ma al momento è il
miglior candidato per farlo
la sua facile estensibilità lo rende velocemente adattabile a
molti nuovi scenari
SCTP è attualmente implementato nativamente su Linux,
Solaris, FreeBSD, MAC OS X, IBM AIX, Cisco IOS, HP-UX e su
sistemi NOKIA e SIEMENS. Disponibili diverse implementazioni
open-source e proprietarie per la maggior parte dei sistemi
operativi.
S CT P
1 2 3 4 5 6 7 8 9 10 11 12