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