Modelli di latenza
Non è semplice stabilire quanto tempo serve per ricevere un oggetto da un server remoto dopo aver inviato una richiesta. Anche se si conoscono la BW e il round trip time, il tempo di trasferimento effettivo dipende dal profilo di perdita e dalla advertised window del destinatario. Modelliamo slow start e congestion avoidance separatamente e poi alterniamo tra i due in base al profilo di perdita. Modellazione della latenza (1)
Modellazione della latenza (2) Se non vi sono perdite vanno considerati due casi. Slow Sender (finestra grande) Linvio è ancora in corso quando torna lACK: - tempo per inviare la finestra > tempo per inviare il primo ACK; - W * S/R> RTT + S/R Fast Sender (finestra piccola) Aspetta ACK per inviare altri dati: - tempo per inviare la finestra < tempo per inviare il primo ACK; - W * S/R< RTT + S/R R: bit rate. W: segmenti nella finestra di congestione fissa. S: MSS (in bit).
Modellazione latenza: finestra statica Fast Sender Latenza: 2RTT+O/R +(K-1)(S/R+RTT-WS/R ) Numero di finestre: K = O/WS Tempo di attesa dellACK - tempo per trasmettere la finestra. O: dimensione oggetto da trasmettere (in bit) Slow Sender Latenza: 2RTT+ O/R
Ora supponiamo che la finestra cresca secondo lo slow start (NON slow start + congestion avoidance). La latenza per un oggetto di dimensione O è: P è il numero di volte che TCP si blocca lato mittente per aspettare che arrivi un ACK e riapra la finestra: Modellazione latenza: slow start Q è il numero di volte che il mittente si arresterebbe se loggetto fosse di dimensioni infinite. Di solito vale 0. K è il numero di finestre necessarie per coprire loggetto. S/R è il tempo per trasmettere un segmento. RTT+S/R è il tempo per ricevere lACK di un segmento.
O/S = 15 segmenti. K = 4 finestre. Q = 2. P = min{K-1,Q} = 2. Mittente si blocca P = 2 volte. Esempio (1)
Esempio (2)
S/R = tempo per trasmettere un segmento. RTT+ S/R = tempo per ricevere lACK di un segmento. 2 k-1 (S/R) = tempo per trasmettere la k-esima finestra. [RTT+ S/R - 2 k-1 (S/R)] = tempo di blocco (stallTime) dopo la k-esima finestra. Latenza totale per un oggetto O: Calcolo della latenza totale (1)
FINE Calcolo della latenza totale (2)