Redes
Control de congestión en TCP
Mikel Izal Azcárate (mikel.izal@unavarra.es)
En clases anteriores
‣ ‣
TCP y UDP TCP
> > >
Transporte fiable Control de flujo Manejo de conexiones
El problema de la congestión en redes Hoy ‣ Control de congestión en TCP
‣
7 noviembre 2005
Transporte-7
2
/20
TCP: Control de congestión
‣
Usa control decongestión extremo a extremo
> >
> >
La ventana deslizante de transporte fiable tenia un limite máximo impuesto por el control de flujo igual a la ventana anunciada por el receptor Se utiliza otra ventana de congestión que limita los datos que se pueden enviar a la red dependiendo de la percepción que tiene TCP de la congestión La ventana anunciada depende del receptor La ventana de congestión sereduce ante la congestión limitando la tasa a la que enviamos
Ventana = min { ventana anunciada, ventana de congestión }
CongWin v= RT T
confirmados
7 noviembre 2005
enviados
Transporte-7
se pueden enviar
no se pueden enviar
3
/20
TCP: Control de congestión
‣
¿Cómo percibe TCP la congestión?
>
Perdida de paquetes = congestión
+ +
Evento de timeout 3 ACKsduplicados (Fast retransmit)
‣
Ajustando la ventana de congestión
> > > >
Congestion avoidance (evitación de congestion) Slow start Fast recovery Timeout Aun cuando TCP utiliza secuencias y ACKs por bytes individuales cuando tiene mucho que enviar utiliza un máximo tamaño de segmento, que llamaremos MSS En la siguiente clase veremos como se elige el MSS
Transporte-7 4 /20
‣
MSS:maximun segment size
> >
7 noviembre 2005
TCP: Congestion avoidance
‣
Tras detectar congestión TCP entra en una fase de evitación de congestión (congestion avoidance)
> > >
Si la ventana de congestión tiene un valor de N MSS En congestion avoidance se abre 1 MSS cada vez que enviamos con exito toda la ventana CongWin=4 MSS La ventana sube linealmente Buscando encontrar el punto deequilibrio sin aumentar demasiado la congestión CongWin=5 MSS
Enviado por RTT
tiempo
7 noviembre 2005 Transporte-7 5 /20
TCP: Congestion avoidance
‣
Si en esta situación se produce una pérdida
> >
De un sólo paquete, lo que provoca 3 ACKs duplicados. Se interpreta como congestión ligera La ventana se reduce inmediatamente a la mitad A la vez que se hace fast retrasmit del paqueteperdido Esto se conoce como fast recovery (originalmente se reducía a 1MSS) CongWin=8 MSS Buscando reducir notablemente la tasa de transmisión y colaborar en que la congestión no crezca Si se siguen recibiendo ACKs la ventana sigue creciendo linealmente
>
>
Enviado por RTT
CongWin=4 MSS
tiempo
7 noviembre 2005 Transporte-7 6 /20
TCP: Congestion avoidance
‣
Se puede ver quela tasa se va ajustando alrededor del punto de congestión
> > >
si hay muchos errores la tasa baja y se tarda más en recuperarla si hay pocos errores el crecimiento lineal es capaz de llegar mas a mas velocidad Este mecanismo se suele llamar AIMD Additive Increase Multiplicative Decrease Con CongWin = 1 MSS 1 pérdida 1 pérdida 1 pérdida
‣
Y cómo empieza la conexión??
>
Enviado porRTT
tiempo
7 noviembre 2005 Transporte-7 7 /20
TCP: Slow Start
‣
En el principio CongWin=1 MSS pero... > Crecer linealmente es demasiado precavido, no tenemos motivos para pensar que hay congestión > Se utiliza un enfoque más agresivo, crecimiento exponencial > Slow Start: cada vez que transmitimos una ventana con éxito la ventana se dobla
CongWin =1 MSS
CongWin =2 MSS
CongWin=4 MSS
CongWin =8 MSS
tiempo
7 noviembre 2005 Transporte-7 8 /20
TCP: Slow Start
‣
El slow start se mantiene hasta que se produce una pérdida (o bien se alcanza la ventan de control de flujo) haciendo entrar en congestion avoidance
>
Si la perdida se detecta por ACKs duplicados...
+
Fast retransmit + fast recovery
CongWin = CongWin/2
‣
Y si se produce un timeout?...
Regístrate para leer el documento completo.