Calcolo timeout
Richiami: pieno utilizzo
Per utilizzare completamente un collegamento:
• serve una finestra grande a sufficienza per
riempire il pipeline;
• finestra >= larghezza di banda * round trip
time.
Richiami: scambio interattivo e bulk transfer
• Lo scambio interattivo (Interactive Exchange)
cerca di accumulare più dati possibili senza
compromettere l’esperienza interattiva:
− ACK ritardato
− Algoritmo di Nagle
• Le tecniche di bulk transfer per il trasferimento di
grandi quantità di dati cercano di utilizzare appieno
il collegamento (lo scambio interattivo non ha la
possibilità di farlo):
− Advertised Window del destinatario
− Persist Timer
Richiamo: timeout e ritrasmissione
• Il destinatario deve confermare la ricezione di
tutti i segmenti.
• Il mittente imposta un timer inviando ogni
segmento: se l’ACK non è arrivato prima che il
timer scada, il mittente ritrasmetterà il segmento.
• Ritrasmissione adattativa: il valore del timer è
calcolato come una funzione del round trip time
medio e varianza.
TCP: scenari di ritrasmissione
Host A
Host B
X
loss
Tempo Scenario di dati persi
timeout
timeout
Host A
Tempo
Host B
X
loss
Scenario di ACK perso
(1)
TCP: scenari di ritrasmissione
Host A
Host B
Seq=100 timeout
Seq=100 timeout
Seq=92 timeout
Host A
Tempo
Tempo
Timeout prematuro,
ACK cumulativi.
Host B
X loss
ACK duplicato, ritrasmissione
veloce (in realtà prima di una
ritasmissione veloce servono
3 ACK duplicati).
(2)
Valore di timeout del TCP
Si deve basare su RTT ma essere maggiore di
esso per evitare un timeout prematuro, visto
che RTT può variare.
Limiti
• Troppo breve
Timeout prematuro = ritrasmissioni inutili.
• Troppo lungo
Reazione lenta alla perdita di segmenti.
Valutazione del Round Trip Time
SampleRTT
• Prende il tempo quando il segmento viene inviato;
quando riceve ACK, calcola:
RTT = currentTime – sentTime
− Non c’è corrispondenza 1:1 tra segmenti inviati e ACK.
− Ignora ritrasmissioni, segmenti ACK cumulativi (non fa parte della
specifica originale).
• Può variare bruscamente, bisogna valutare RTT in
modo “più continuo”.
− Si usano molte misure recenti, non solo il SampleRTT corrente .
Round Trip Time e Timeout
EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT
• Media variabile pesata esponenziale.
• L’influenza di un campione dato diminuisce velocemente ed
esponenzialmente.
• Valore tipico di x: 0.1 (90% peso a media accumulata; 10% a
nuova misura).
• x con valore superiore significa che si adatta più rapidamente a
nuove condizioni:
– accettabile se c’è una variazione reale di RTT;
– non accettabile se porta a reagire a cambiamenti transitori.
Impostazione del timeout
• Media variabile pesata esponenzialmente.
• Ampia variazione in EstimatedRTT -> margine di sicurezza
maggiore.
Timeout = EstimatedRTT * DelayVarianceFactor
Valore consigliato:
Recommended DelayVarianceFactor = 2
EstimatedRTT
Più “margine di sicurezza”
(1)
Impostazione del timeout
Punti di attenzione
• Si osservano dei problemi in presenza di ampie
oscillazioni di RTT.
Suggerimento
• Meglio se il timeout si basa sia sulla media sia
sulla varianza delle misurazioni di RTT.
(2)
Timeout Jacobson/Karels
Basato su media e varianza
• Test statistico di 2° livello.
• La deviazione media è una buona approssimazione
della deviazione standard, ma è più facile da
calcolare (non c’è radice quadrata ).
EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT
Error = |SampleRTT-EstimatedRTT|
Deviation = Deviation + h*(Error – Deviation)
Timeout = EstimatedRTT + 4*Deviation
(1)
Timeout Jacobson/Karels
Valori consigliati:
• x =0.125 (maggiore dell’originale)
Il timeout risponde più rapidamente ai cambiamenti in RTT.
• h = 0.25
FINE
(2)
Scarica

Calcolo timeout