100 likes | 255 Views
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).
E N D
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)
Non è una versione TCP consigliata: non può competere con Tahoe o Reno! TCP Vegas: modifiche (2) • Modifiche solo al lato mittente, tra cui: • evita di ridurreCongwinpiù 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. (continua)
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 sincroniatrilaterale => “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 (1) • 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
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).
FINE 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à.