Controllo di congestione avanzato
Controllo della congestione TCP
• Prima del 1988, solo controllo del flusso!
• TCP Tahoe 1988
− TCP con Slow Start, Congestion Avoidance e Fast Retransmit.
• TCP Reno 1990
− Aggiunge fast recovery (e ACK ritardati).
• Nuove versioni
–
–
–
–
TCP Vegas (1993).
TCP SACK e TCP NewReno (1996).
TCP FACK.
…
TCP Vegas: modifiche
(1)
• Modifiche solo al lato mittente, tra cui:
– calcolo di RTT con maggior precisione;
– non aspetta che si verifichi un timeout se la differenza tra
il momento di trasmissione del segmento e il tempo di
ricezione di un ACK duplicato indica che il timeout avrebbe
già dovuto essersi verificato;
– se dopo una ritrasmissione riceve immediatamente un
ACK non duplicato, controlla se il timer di un qualsiasi
altro segmento avrebbe già dovuto scadere e in caso
affermativo lo ritrasmette;
(segue)
TCP Vegas: modifiche
(2)
(continua)
• Modifiche solo al lato mittente, tra cui:
– evita di ridurre Congwin più volte per la stessa finestra;
– tenta di usare uno spazio costante nei buffer dei router:
paragona ogni valore di round trip al valore minimo fino a
quel momento, per cercare di stimare il tempo trascorso
nelle code dei router.
Non è una versione TCP consigliata: non
può competere con Tahoe o Reno!
TCP SACK
• Aggiunge SACK (Selective ACK) a TCP.
Obiettivo: passare da Go-back-N alla ritrasmissione selettiva
(Selective Repeat).
• Uso di un’opzione TCP che dice che SACK è attivato al
momento della sincronia trilaterale => “Io sono un mittente
in grado di gestire SACK, il destinatario si senta libero di
inviare informazioni di ritrasmissione selettiva”.
• Usa lo spazio delle opzioni TCP durante lo stato ESTABLISHED
per inviare suggerimenti sui dati ricevuti prima di inviare le
conferme di ricezione.
• Non cambia il significato del normale campo
Acknowledgement nell’intestazione TCP.
• Al destinatario è permesso rifiutare i SACK.
Dettagli su SACK
Per inviare informazioni SACK si usa l’opzione 5 di TCP nel
seguente formato:
Kind=5
Lunghezza
Inizio primo blocco di
ritrasmissione
Fine primo blocco di
ritrasmissione
….
Inizio n-esimo blocco
di ritrasmissione
Fine n- esimo di
ritrasmissione
(1)
Dettagli su SACK
(2)
• In 40 byte di opzioni si possono specificare un
massimo di 4 blocchi.
• Se si usa SACK con altre opzioni, lo spazio è
ridotto.
• Esempio: se si usa SACK con l’opzione
Timestamp (10 byte), sono possibili al massimo 3
blocchi.
TCP New Reno
• Proposto e valutato insieme a SACK.
• Versione modificata di Reno.
• Gestisce meglio il caso in cui più pacchetti vengono persi in
una singola finestra di dati.
• Conclusioni:
− SACK non è indispensabile per risolvere i problemi di prestazioni
di Reno quando vanno persi più pacchetti;
− senza SACK, però, TCP è obbligato a ritrasmettere al massimo
un pacchetto perso per ciascun RTT oppure a ritrasmettere
anche pacchetti che sono già stati ricevuti con successo
(differenza fondamentale tra Go-Back N e Selective Repeat).
Altre tecniche
• TCP FACK (Forward Acknowledgments).
• TCP Rate-Halving.
• TCP ECN (Explicit Congestion Notification).
Situazione attuale
• Reno è il metodo più utilizzato.
• SACK/FACK/ECN in corso di graduale adozione:
– NetBSD ha SACK/FACK/ECN (come Linux);
– Linux ha SACK installato di default;
– SACK è attivato di default in Windows 98 ma non nelle
versioni successive di Windows.
• Cause:
– miglioramenti delle prestazioni non così eclatanti;
– meno stabilità.
FINE
Scarica

Controllo di congestione avanzato