Fast Retransmit
Fast Retransmit (1) Altri indizi di perdite oltre il timeout: possiamo interpretare il verificarsi di sequenze di 4 ACK per lo stesso pacchetto come un primo indizio di perdita; possono avere altre cause, come il riordino o la duplicazione dei pacchetti in qualche punto della rete. Contromisura Ritrasmettere immediatamente il pacchetto senza aspettare che il timer scada: –se ottiene degli ACK, si può usare RTT per ricalcolare la temporizzazione della connessione.
Fast Retransmit (2) Consideriamo ancora la finestra di 5 segmenti MSS: il mittente trasmette 1-5: il primo va perso; nel migliore dei casi, il timer di ritrasmissione non scadrà fin che >~2 * RTT; la ritrasmissione poi attraversa la rete e ACK ritorna indietro (un altro RTT); senza fast retransmit vanno perse due finestre di dati; con il fast retransmit, otterrà ACK duplicati attivati dalla ricezione di 2,3,4,5 poi ritrasmetterà 1 così perderà solo 1/2 RTT.
Dopo un fast retransmit: impostiamo Threshold = 1/2 ( Congwin ); NON impostiamo la finestra di congestione a 1; invece, Congwin = Threshold + 3 * MSS; se arrivano ACK duplicati, la finestra di congestione viene incrementata di un MSS; trasmettiamo più segmenti se consentito dalla nuova finestra di congestione. Fast Recovery (1)
FINE Fast Recovery (2) L’incremento di un MSS per ogni ACK duplicato “gonfia” artificialmente la finestra di congestione per tener conto dei pacchetti che ci si aspetta abbiano lasciato la rete (hanno attivato ACK duplicati alla ricezione). Quando arriva l’ACK per nuovi dati, si “sgonfia” la finestra di congestione riportandola alla threshold: Congwin = Threshold Sempre meglio che tornare a 1!