Controllo timeout
Il modo più ovvio per individuare delle perdite è usare il timeout del timer di ritrasmissione. Timeout (1) Attenzione! Con valori elevati di Congwin e RTT alti si avranno grossi svantaggi.
Timeout (2) vanno perse quindi più di due finestre piene di dati (2 * RTT). questa tecnica ha anche lo svantaggio di eseguire inutili, anzi dannose, modifiche a Congwin (riportata a uno) e Threshold (dimezzata). Prendiamo una finestra di 5 segmenti MSS: il mittente trasmette i segmenti 1-5: il primo va perso. nel migliore dei casi, il timer di ritrasmissione scade a t>~2 * RTT. Poi il pacchetto ritrasmesso deve attraversare la rete e l’ACK corrispondente deve ritornare indietro (altro RTT). Conseguenze:
C. A. con decremento moltiplicativo /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart Congestion Avoidance
Andamento del decremento moltiplicativo
Temporizzazione della connessione Linea blu = valore della finestra di congestione in KB. Tratti verticali brevi = trasmissione dei segmenti. Tratti verticali lunghi = momento in cui un pacchetto che verrà ritrasmesso è stato trasmesso per la prima volta. Punto nella parte superiore del grafico = timeout slow start; a 2.0 si verifica un timeout, e si ricomincia da slow start; 5.6 – 6.8 congestion avoidance. FINE