TCP: Algoritmi di Slow Start, Congestion Avoidance, Fast Retransmit

Università degli Studi di Modena e Reggio Emilia
Dipartimento di Ingegneria dell’Informazione
TCP: Algoritmi di Slow Start, Congestion
Avoidance, Fast Retransmit,
And Fast Recovery
y
rfc 2001
M.L. Merani
TCP algoritmi
M LM
1
Premessa
‰ Le moderne implementazioni del TCP contengono quattro
algoritmi “intertwined”
¾
¾
¾
¾
Slow Start
g
Avoidance
Congestion
Fast Retransmit
Fast Recovery
TCP algoritmi
M LM
2
Sl
Slow
St
Startt
‰ Condotta con successo a termine la fase di connection
establishment, il TCP entra nella fase di slow start
¾ Algoritmo corrispondente è basato sull’introduzione di una nuova
finestra lato sender
sender, la congestion window,
window cwnd
¾ Si aggiunge alla advertized window
‰ Vediamo l’algoritmo e l’impiego di cwnd:
¾ cwnd è inizialmente posta pari ad un segmento, o - più
precisamente – al segment size espresso in byte pubblicizzato
dall’altro estremo della connessione attraverso l’opzione MSS
impiegata nel three ways handshake;
¾ per ogni ACK ricevuto, cwnd viene incrementata di 1 segmento;
¾ al sender è consentita la trasmissione di un numero di byte al
più pari a
min{advertised window, congestion window cwnd}
Flow control imposed lato receiver
TCP algoritmi
congestion control imposed lato sender
M LM
3
Ri
Ricordiamo
di
l’h
l’header
d
d
dell TCP …
TCP algoritmi
M LM
4
N l dettaglio
Nel
d tt li …
‰ Il sender TCP invia un primo segmento e si blocca, in attesa
dell’ACK corrispondente
‰ All’atto della ricezione del primo ACK, il sender porta la
finestra di congestione a 2 (segmenti) e può procedere
all’invio di due segmenti
g
‰ Quando perviene l’ACK per questi ultimi, la finestra di
congestione è posta pari a 4
‰ La dimensione della finest
finestra
aa
aumenta
menta in corrispondenza
o isponden a di
ogni nuovo ACK ricevuto
¾ Tale crescita non è affatto slow!
TCP algoritmi
M LM
5
E
Esempio
i
‰ Assunti
¾
¾
¾
¾
Trasferimento di dati di tipo bulk
Flusso unidirezionale di tipo successful
ACK viaggino alla medesima velocità dei segmenti dati
Solo per semplicità descrittiva si numerano i segmenti, piuttosto
che i byte
9 Il tempo di trasmissione di un segmento, opportunamente
incapsulato,
p
, è assunto pari
p
ad una unità temporale.
p
In altri termini,,
nella rappresentazione che segue i tempi in gioco vengono tutti
normalizzati al tempo di frame.
9 Il round trip time è pari ad 8 unità di tempo
TCP algoritmi
M LM
6
C ti
Continua
TCP algoritmi
M LM
7
C ti
Continua
TCP algoritmi
M LM
8
C ti
Continua
‰ Dall’istante 31 in poi , la pipe tra sender e receiver è piena
¾ Non può contenere altri dati, indipendentemente dalla
dimensione della cwnd e della advertised window
¾ Ad ogni segmento rimosso dalla rete corrisponde un nuovo
segmento inviato
¾ La connessione ha raggiunto la condizione ideale di steady-state
TCP algoritmi
M LM
9
O
Osservazioni
i i interessanti
i t
ti
‰ Nelle condizioni ideali esaminate nell’esempio
nell esempio precedente, la
spaziatura degli ACK è la medesima presentata dai segmenti
dati.
¾ La tempistica con cui gli ACK pervengono al sender identifica la
frequenza di arrivo dei dati al receiver!
¾ Il processo di aumento graduale di cwnd può essere dunque
i t
interpretato
t t come un network
t
k probing
bi
d l sender,
del
d
che
h non
immette troppi nuovi segmenti in rete
‰ In realtà …
¾ La frequenza di arrivo degli ACK al sender può essere alterata
9 Ritardi nel feedback channel, dovuti ad es. a queueing nei buffer dei
router
9 ACK perduti …
9 È tuttavia la ricezione degli ACK a scandire l’apertura della finestra di
congestione. Da qui:
Comportamento self-clocking del TCP
TCP algoritmi
M LM
10
C ti
Continua
…
‰ Lo SLOW START garantisce comunque una crescita
approssimativamente, e non esattamente, esponenziale
d ll fi
della
finestra
t di congestione.
ti
IInfatti:
f tti
¾ Il ricevitore può ritardare l’invio degli ACK, tipicamente
inviandone uno ogni due segmenti ricevuti
¾ Si tratta comunque di una velocità di apertura della finestra
considerevole!
‰ Le prime implementazioni TCP eseguivano lo slow start solo
se l’altro estremo si trovava su una rete diversa da quella del
trasmettitore
‰ Le implementazioni correnti eseguono sempre lo slow start
TCP algoritmi
M LM
11
I lt
Inoltre
…
‰ La dimensione della finestra di congestione non cresce
indefinitamente
¾ La dinamica di crescita rallenta una volta raggiunto un valore
prefissato, noto come slow start threshold, ssthres, poiché si
entra nella fase di CONGESTION AVOIDANCE*, in cui la
congestione risulta maggiormente probabile:
In tale fase il sender aumenta la dimensione della finestra di un
solo segment size ogni cwnd ACK ricevuti
9
Si tratta di
d una crescita lineare
l
9
* descritta tra poco!
TCP algoritmi
M LM
12
R
Rappresentazione
t i
grafica
fi
Solo per semplicità
NB in
i questo
t tipo
ti
di rappresentazione
t i
il tempo
t
necessario
i alla
ll ttrasmissione
i i
d
deii segmenti
ti è trascurabile,
t
bil
è solo l’RTT che scandisce la dinamica di crescita della finestra!
TCP algoritmi
M LM
13
I Pacchetti
P
h tti P
Persii
‰ Anche se la condizione di steady
y state descritta in precedenza
p
viene
raggiunta, è piuttosto improbabile che la connessione TCP la
sperimenti per la sua intera durata
pacchetti p
p
persi!!
¾ Due motivi diversi
1. Pacchetti mai giunti a destinazione, in quanto in una porzione della rete
attraversata si è verificata una congestione, che ha forzato i router coinvolti a
scartare i pacchetti in ingresso
2. Pacchetti scartati in ricezione o da un router intermedio, in quanto non validi.
Es: sporcati da errori di natura trasmissiva o da errori introdotti dall’HW di
rete
1 Il TCP assume che i pacchetti persi appartenenti alla seconda categoria
1.
rappresentino una percentuale piuttosto esigua sul totale, meno dell’1%
all’interno della singola connessione
¾ Interpreta la perdita di pacchetti come un indicatore di CONGESTIONE
TCP algoritmi
M LM
14
E
Esempio
i di potenziale
t
i l congestione
ti
‰ Big
gp
pipe
p in ingresso
g
ad una smaller p
pipe
p ((LAN-WAN))
‰ NB La spaziatura degli ACK corrisponde alla banda (velocità
trasmissiva) del link più lento!!
LAN1
WAN
LAN2
R1
9 Il router R1 da un certo punto in poi potrebbe non avere più memoria per i
pacchetti che gli arrivano da LAN1 e dunque eseguirne il discarding …
TCP algoritmi
M LM
15
C
Come
sii rilevano
il
i pacchetti
h tti persii
‰ Attraverso DUE meccanismi:
¾ Lo scadere di un timeout
¾ La ricezione – lato sender – di tre acknowledgment duplicati, i
cosidetti triple duplicate ACKs (TDACK)
TCP algoritmi
M LM
16
Utili
Utilizzo
dei
d i Timeouts
Ti
t
‰ In corrispondenza alla trasmissione di ogni segmento, il TCP
sender setta un retransmission timer, detto Retransmission
Time Out, RTO
¾ Se l’RTO
O raggiunge
agg u ge lo
o zero
e o prima
p
a della
de a ricezione
ce o e di
d un
u ACK
C
dall’altro estremo TCP, riferito al segmento in questione o ad
altri, il timeout scatta
¾ Si tratta di un indicazione di congestione – piuttosto severa - in
una qualche porzione della rete attraversata: non arriva nulla sul
feedback channel!
Il TCP entra in slow-start, riportando a 1 (segment
size) la dimensione della cwnd
‰ Oss. È immediato comprendere che il settaggio dell’RTO è estremamente
delicato ed implica l’impiego di un algoritmo efficiente per la stima del round
trip time RTT, che influenzerà in maniera significativa l’RTO
TCP algoritmi
M LM
17
Utili
Utilizzo
dei
d iT
Triple
i l Duplicate
D li t Acknowledgments
A k
l d
t
‰ Quando il TCP riceve un segmento fuori sequenza genera un
ACK immediato (duplicate ACK)
Esempio: arriva il segmento TCP che contiene i byte
8705:8961, ma l’ultimo byte per il quale era stato inviato l’ACK
supponiamo fosse quello con numero 6656.
In tal caso il TCP receiver torna ad inviare un ACK con il numero
di sequenza atteso, ovvero 6657.
¾ Tale duplicate ACK non dovrebbe venire ritardato
¾ Poichè il processo TCP che lo riceve non sa se
1. Tale duplicate ACK è stato causato da un segmento perso,
1
perso oppure
2. Da un’operazione di reordering dei segmenti al ricevitore
si mette in attesa per verificare se ne arrivano degli altri
TCP algoritmi
M LM
18
‰ Se ll’invio
invio del duplicate ACK è stato provocato da 2., saranno
verosimilmente inviati uno o al più due duplicate ACK prima
del processamento del segmento riordinato, che a sua volta
genererà un nuovo ACK
ACK, quello che il trasmettitore si aspetta
di ricevere
‰ Se il trasmettitore si vede invece recapitare tre o più
duplicate ACK
¾ Forte indicazione di perdita di un segmento
TCP algoritmi
M LM
19
C ti
Continua
…
‰ la ricezione di un duplicate ACK non dice semplicemente che,
forse,
¾ un segmento è andato perduto, ma anche che
¾ un segmento successivo ha lasciato la rete e si trova nel buffer
del ricevitore
Ci sono ancora comunque dei dati che
fluiscono tra i due estremi
‰ Si è dunque in presenza di congestione moderata
TCP algoritmi
M LM
20
M torniamo
Ma
t
i
agli
li algoritmi
l
it i
‰ Ed in particolare a quello di CONGESTION AVOIDANCE
TCP algoritmi
M LM
21
C
Congestion
ti
Avoidance
A id
‰ Quando si verifica una congestione, il TCP deve ridurre la
velocità di invio di segmenti in rete
¾ Slow Start e Congestion Avoidance sono algoritmi indipendenti,
con obiettivi diversi, ma entrambi mirano a ridurre/regimare tale
velocità
¾ In pratica, tali algoritmi sono implementati insieme
¾ Entrambi richiedono che per ciascuna connessione siano
mantenute le due variabili introdotte in precedenza
9 cwnd, la congestion window, e
9 ssthres, la slow start threshold
TCP algoritmi
M LM
22
L combinazione
La
bi
i
d
deii due
d
algoritmi
l
it i
‰ Le operazioni
p
p
previste sono le seguenti
g
¾ Per ciascuna connessione, fase di inizializzazione:
9 cwnd = 1 segmento
9 ssthres = 65535 byte
¾ Quando si verifica una congestione,
9 ssthres = min{1/2 * current window size cwnd, 2 segmenti}
9 Se la congestione è indicata da un timeout,
cwnd = 1 segmento
si entra nella fase di SLOW START! *
¾ Quando l’altro estremo fornisce un acknowledgment per nuovi dati,
occorre incrementare cwnd. COME?
* Vedremo in seguito, slide 27, il settaggio della cwnd se viene ricevuto un triple
duplicate ACK
TCP algoritmi
M LM
23
C ti
Continua
…
¾ Supponiamo che il TCP abbia subito un timeout
in tal caso cwnd viene incrementata di uno per ogni ACK ricevuto
– Si invia un segmento,
segmento poi due …
Tale fase prosegue fintanto che cwnd = ssthres.
– Da quel punto in avanti il TCP entra in CONGESTION
AVOIDANCE
In che cosa consiste?
9 Si impone che cwnd = cwnd + 1/(cwnd) per ogni ACK ricevuto
¾ Se invece è stato ricevuto un triple duplicate ACK, il TCP
esegue subito il CONGESTION AVOIDANCE, ma è qui che
scattano anche gli altri due algoritmi,
algoritmi FAST RETRANSMIT e FAST
RECOVERY
TCP algoritmi
M LM
24
F tR
Fast
Retransmit
t
it
‰ Se il trasmettitore si vede recapitare tre o più duplicate ACK
¾ Forte indicazione di perdita di un segmento
¾ Il TCP provvede immediatamente alla ritrasmissione del
segmento “missing”, senza attendere lo scadere del
retransmission timer corrispondente
TCP algoritmi
M LM
25
F tR
Fast
Recovery
‰ Ritrasmesso quel segmento che verosimilmente era andato
perduto (fase di FAST RETRANSMIT) ,
‰ Il trasmettitore esegue la fase di congestion avoidance, e non
quella
ll di slow
l
start.
t t Si tratta
t tt dell’algoritmo
d ll’ l
it
di FAST
RECOVERY.
¾ Perché non si esegue lo slow start?
9 Poiché la ricezione di un duplicate ACK dice che
– ci sono ancora comunque dei dati che fluiscono tra i due estremi
– il TCP non ha necessità di ridurre drasticamente la velocità di
invio dei segmenti eseguendo lo slow start
¾ Il FAST RECOVERY consente al contrario di ottenere throughput
elevati in condizioni di congestione moderata, soprattutto per
finestre ampie
TCP algoritmi
M LM
26
I
Implementazione
l
t i
F
Fastt R
Retransmit
t
it e Fast
F t Recovery
R
¾ Fast retransmit e fast recovery sono di solito implementati
insieme, nella seguente maniera
1. Arriva il terzo duplicate ACK
9 ssthres
ssthres=min{1/2
min{1/2 current cwnd, due segment size}
9 si ritrasmette il segmento missing e
9 si setta cwnd=ssthres+3 segment size. Questo apre la
finestra di congestione
g
di un numero di segmenti
g
p
pari a q
quelli
che hanno lasciato la rete e che l’altro estremo ha in memoria
2. Per ogni ulteriore duplicate ACK che perviene,
9 si incrementa la congestion window della dimensione del
segmento ACKed, così da aprire la finestra per questo
segmento addizionale che ha lasciato la rete e
9 si trasmette un pacchetto, se la finestra lo consente
TCP algoritmi
M LM
27
C ti
Continua
…
3. Quando finalmente arriva un ACK per dati nuovi, e dovrebbe essere
l’acknowledgment per il segmento ritrasmesso al punto 1.,
pervenuto dopo un round-trip time dalla ritrasmissione, il quale
f
fornisce
i
anche
h l’ACK per i tuttii i segmentii iintermedi
di inviati
i i i tra quello
ll
perduto e la ricezione del primo duplicate ACK
9 Si setta cwnd = ssthres
CONGESTION AVOIDANCE!
Il TCP è tornato
t
t ad
d inviare
i i
dati
d ti ad
d una velocità
l ità ttrasmissiva
i i
che
h
è pari alla metà del valore rilevato quando il pacchetto era
andato perduto
TCP algoritmi
M LM
28
E
Esempio
i
TCP algoritmi
M LM
29
Mi
Misura
d
dell R
Round
dT
Trip
i TimeTi
Al
Algoritmo
it
di Van
V
Jacobson
J
b
‰ Per un corretto settaggio del timeout del TCP la misura dell
dell’RTT
RTT
sperimentata sulla connessione è fondamentale
¾ L’RTT varia al variare del tempo. Infatti …
9 Le route p
possono cambiare
9 Le condizioni di traffico possono modificarsi
¾ Il TCP deve tenere traccia di tali variazioni e aggiornare di conseguenza il
suo timeout
Sia M il valore misurato dell’RTT e D la sua deviazione media, che risulta
una buona approssimazione della deviazione standard dell’RTT.
Ad ogni misura M di RTT si calcolano allora le seguenti equazioni:
Err = M − A
A ← A + gErr = A + g ( M − A) = (1 − g ) A + gM
D ← D + h( Err − D)
RTO = A + 4 D
dove
TCP algoritmi
g = 1 / 8 = 0.125 e h = 0.25
M LM
30
Al
Algoritmo
it
di Karn
K
‰ Si verifica un problema quando un pacchetto viene
ritrasmesso
¾ ES: pacchetto trasmesso, si verifica un timeout, l’RTO viene
p
e il p
pacchetto viene ritrasmesso con un RTO p
più
ricomputato
lungo e per questa prima ritrasmissione si riceve un ACK
¾ Q: L’ACK è per il primo o per il secondo pacchetto ricevuto?
9 Retransmission ambiguity problem …
9 Non possiamo eseguire l’update dello stimatore dell’RTT quando
arriva l’ACK per i dati che sono stati ritrasmessi, perché
– forse la prima trasmissione è stata solo ritardata (e non
perduta) o forse è ll’ACK
perduta),
ACK della prima trasmissione che è stato
ritardato
– Inoltre, poiché i dati sono stati ritrasmessi e si è applicato il
backoff esponenziale all’RTO, impieghiamo questo RTO backed
off
ff per la
l prossima
i
trasmissione
t
i i
¾ Conclusione: NON si calcola un nuovo RTO fintanto che non
viene ricevuto un acknowledgment per un segmento che non è
stato ritrasmesso
TCP algoritmi
M LM
31