Control de congestión Control de congestión Slow-start

Anuncio
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
Control de congestión
– El control de flujo permite al receptor controlar el ritmo de
envío del transmisor en función de sus recursos (buffer
de recepción). Cumple su cometido si ambos están en la
misma red.
– Si NO, los datagramas deben atravesar múltiples redes y
uno o más routers con sus recursos (buffers) más o
menos limitados. ¡¡Los routers también pueden ver
agotado el espacio en sus buffers!!. ¡Los routers SOLO
tienen un módulo IP y un módulo de protocolo de
encaminamiento, NO tienen un módulo TCP (TCP es un
protocolo extremo a extremo, y los dos extremos son las
aplicaciones que residen en los hosts)!.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
Control de congestión
– Podría haber zonas congestionadas, con un router con
los buffers muy llenos. A la larga, el control de flujo
acomodaría el ritmo de envío a lo que permitiese la zona
más congestionada, pero en el transitorio podrían
perderse datagramas (time-outs, retransmisiones, etc)
– Hay que controlar el flujo de envío del transmisor a
Internet para reducir el ritmo cuando ésta está próxima a
la congestión: Control de congestión.
– Para llevarlo a cabo, primero hay que averiguar a qué
ritmo podemos enviar datos a Internet: algorítmo slowstart. Cuando el ritmo comienza a ser alto para la
situación de la red, hay que hacer actuar a un algorítmo
de control de congestión: congestion avoidance.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
Slow-start
– El módulo TCP transmisor mantiene una nueva ventana:
la de congestión (cwnd). Control impuesto por el
transmisor (el de flujo era impuesto por el receptor).
– Regla de transmisión: el receptor envía un número de
segmentos igual al MINIMO de lo indicado por la ventana
anunciada por el receptor y lo indicado por la ventana de
congestión. Gestión de cwnd:
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
• Inicio de la conexión: UN segmento de tamaño máximo
igual al anunciado por el receptor. La primera transmisión
será pues de 1 segmento:
• Valor inicial de cwnd: 1 segmento (en realidad 1xMSS
bytes).
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
Grupo de Aplicaciones Telemáticas
1
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
Slow-start
_________________________________________
• Cuando recibe el ack correspondiente, cwnd se incrementa
para permitir 2 segmentos (cwnd=2xMSS) (1+1). Si la
ventana ofrecida es mayor o igual, el transmisor envía 2
segmentos.
• Cada vez que recibe un ack, el transmisor incrementa en
uno el número de segmentos transmitidos (incrementa la
ventana de congestión).
_________________________________________
_________________________________________
_________________________________________
________________________________________
– Slow-start impone un ritmo inicial lento de envío de datos
a la red, ritmo que se incrementa muy rápidamente si las
redes lo permiten.
– Un parámetro: Round-Trip -Time, período que va desde
el momento en que se envía un segmento y aquel en el
que se recibe su ack.
Departamento
Arquitectura
Computadores
UPC
Grupo de Aplicaciones Telemáticas
© J.C. Cruellas
_________________________________________
Slow-start
_________________________________________
_________________________________________
_________________________________________
_________________________________________
D
D ato
Da ato s
Da tos s
to
s
Da
Da tos
to
s
________________________________________
ack
ack
ack
ack
ack
ack
ack
Da
to
s
TCP rec.
TCP trans.
Cwn: 1
Cwn: 2
Cwn: 5
Cwn: 3
Cwn: 4
Cwn: 6
Cwn: 7
Cwn: 8
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
_________________________________________
Slow-start
_________________________________________
_________________________________________
cwnd (en segmentos)
_________________________________________
16
_________________________________________
________________________________________
8
4
2
(RTT)
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
Grupo de Aplicaciones Telemáticas
2
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
Congestion avoidance
_________________________________________
– Suposición de partida: sólo el 1% de los datagramas que
se pierden en Internet (es decir, que deben ser
retransmitidos) lo son por sufrir alteraciones en sus
contenidos. La inmensa mayoría de las pérdidas son
provocadas por la congestión de determinadas redes.
– Principios de actuación:
_________________________________________
_________________________________________
_________________________________________
________________________________________
• Cuando comienza a transmitir datos, un módulo TCP
inicializa cwnd a 1 y sigue los dictados de Slow-Start. El
ritmo crece exponencialmente por el incremento de cwnd
en 1 por ack llegado (zona de Slow-Start -SS).
• TCP sigue transmitiendo según las pautas de SS hasta
que detecta congestión (se produce la primera
retransmisión por time-out).
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
_________________________________________
Congestion avoidance
_________________________________________
• Entonces se baja a nuevamente la cwnd a 1 y se vuelve a
actuar según SS (incremento de cwnd en una unidad por
ack recogido)
• Cuando el ritmo de transmisión llega a un cierto umbral, se
cambia a un crecimiento lineal del mismo, para evitar
enviar demasiados datagramas a las redes (zona de
Congestion Avoidance -CA) y congestionarlas.
• Al mismo tiempo, si en algún momento el transmisor
retransmite un segmento por time-out, se reinicializa el
valor de la ventana cwnd a 1 segmento y comienza a
transmitirse según SS partiendo de la situación inicial. Se
hace así para disminuir drásticamente el ritmo en cuanto
se detecta congestión.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
Congestion avoidance
_________________________________________
_________________________________________
_________________________________________
cwnd (en segmentos)
_________________________________________
Congestion Avoidance
________________________________________
Slow-Start
Congestión!
t
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
Grupo de Aplicaciones Telemáticas
3
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
Congestion avoidance en marcha
_________________________________________
_________________________________________
• Fundamentos:
– Se gestionan tres variables (todas en num. de bytes):
• cwnd: ventana de congestión.
• ssthresh: umbral de tamaño slow-start. Fija umbral a partir
del cual se deja SS y se pasa a CA.
• awnd: ventana anunciada por receptor.
_________________________________________
_________________________________________
________________________________________
– Algorítmo combinado control de flujo y de congestión:
• Inicio: cwnd = MSS (1 segmento) ; ssthresh = 65535 bytes
• Transmisor NUNCA envía más segmentos que el mínimo
de cwnd y la ventana anunciada por el receptor. A ese
mínimo le llamaremos ventana de transmisión actual
(vta = min(cwnd,awnd))
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
_________________________________________
Congestion avoidance en marcha
• SI hay congestión (time-out de datos transmitidos O ack
duplicados)
– ssthresh = max(1/2 vta,2xMSS).Mitad de ventana de
transmisión actual (2 segmentos como mínimo).
– Y si la congestión se detecta por un time-out, cwnd=1
• SI llega un ACK
– SI cwnd <= ssthresh ( se está en fase Slow Start -SS)
cwnd=cwnd+MSS
– SINO (se está en fase Congestion Avoidance -CA)
cwnd = cwnd + (MSSxMSS)/cwnd
• NOTA: implementaciones de algunas versiones de BSD en
la fase CA hacen
cwnd = cwnd + (MSSxMSS)/cwnd + MSS/8
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
Congestion avoidance en marcha
_________________________________________
• Comentarios:
– ssthresh se inicializa a un valor alto. Cuando se detecta
congestión se baja a la mitad de la ventana ACTUAL (así
se comienza el control de congestión antes).
– Cuando llega un ack, el comportamiento es distinto si se
está en SS o en CA. El tamaño de ventana es mayor en
el primer caso: la CA ralentiza el ritmo de envío de
segmentos a Internet.
Departamento
Arquitectura
Computadores
UPC
_________________________________________
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
4
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
Congestion avoidance
cwnd
ssthresh
256
65535
_________________________________________
VALORES INICIALES - MSS=256;cwnd=256;ssthres=65535
_________________________________________
256
512
2
Time-out SYN: ssthresh=512 (2MSS)
_________________________________________
512
768
885
512
512
4
7
SS: cwnd = 2 x 256
_________________________________________
512
512
512
10
991
1089
SS: cwnd = 3 x 256 = 768
________________________________________
CA (cwnd>ssthresh):
cwnd = cwnd+(2562/885)+256/8 = 885
12
14
2
3
4
SYN
Time out
SYN
NS:1-256
Ack 257
TCP
1
5
6
7 8
9
11
10
12
13
14
Departamento
Arquitectura
Computadores
Ack 1281
NS:1537-1792
Ack 1025
NS:1281-1536
Ack 769
Grupo de Aplicaciones Telemáticas
© J.C. Cruellas
UPC
NS:1025-1280
Ack 513
NS:769-1024
NS:513-768
NS:257-512
TCP
Congestion avoidance: cwnd, ssthresh y
números de secuencia
_________________________________________
_________________________________________
_________________________________________
valor de cwnd
_________________________________________
_________________________________________
Valor de ssthresh
________________________________________
CA
Ventana anunciada > cwnd
SS
SS
SS
¡Retransmisión por time-out!
t
Numeros de secuencia
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Grupo de Aplicaciones Telemáticas
_________________________________________
“Time out” y retransmisión en TCP
• Envío de ack para notificar recepción correcta de
segmentos: mecanismo para conseguir fiabilidad.
• Para contrarrestar la pérdida de los segmentos y de los
ack, se implanta un mecanismo de “time out” y
retransmisión.
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
– TCP activa un temporizador cuando envía un segmento.
Si al expirar el período marcado no ha recibido un ack,
retransmite el segmento.
– Elementos a fijar:
• Cómo se determina el valor del “time-out”
• Frecuencia de retransmisión.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
Grupo de Aplicaciones Telemáticas
5
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
“Time out” y retransmisión en TCP
_________________________________________
• Política de retransmisión:
– Fijar un valor inicial para el “timeout” de retransmisión
(notación: RTO), a partir de valores medidos de RTT
(notación: M).
– Si se da un “timeout”, el nuevo RTO se dobla
(“exponential backoff”): eso ralentiza las retransmisiones.
– Cada nuevo “timeout” dobla el valor del RTO. Así hasta
llegar a un límite o hasta que TCP decide abandonar la
conexión.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
“Time out” y retransmisión en TCP
• Notación. Retransmission Timeout: RTO.
• Para calcular el valor del RTO inicial,se mide el valor
del RTT (M), y se calcula un estimador a partir de lo
medido (R) que interviene en el valor del nuevo RTO.
Cada vez que se realice una nueva medición del RTT,
se actualizará el valor de R y por tanto de RTO.
• Medición del RTT: tiempo que pasa desde el
momento en que se envía un segmento que contiene
un byte con un número de secuencia determinado y el
instante en el que se recibe el ack correspondiente a
dicho número (entre otros, puesto que en TCP el ack
es de grupo).
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
“Time out” y retransmisión en TCP
• Cálculo del estimador (notación: R)
– Estimador básico (especificado como ejemplo en RFC
793):
• R <--- alfa * R + (1 -alfa) * M (alfa 0.9 aproximadamente).
• Cada vez que se realiza una nueva medición de RTT (M),
se actualiza el valor del estimador: el 90% del nuevo valor
corresponde al valor anterior, y el 10% corresponde a la
aportación del nuevo valor medido.
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
• Cálculo del valor de “timeout” (RTO).
– Ejemplo simple:
• RTO = beta * R
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
Grupo de Aplicaciones Telemáticas
6
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
“Timeout” y retransmisión en TCP
• Factor beta: para tener en cuenta la variación de M
(recomendado en RFC, alrededor de 2).
• Problema: cuando las redes están muy cargadas, las
variaciones de M pueden ser muy grandes (un factor de
hasta 16), y el valor de beta no se adecúa a lo que sucede.
El tiempo de retransmisión entonces queda demasiado
pequeño: en una situación de carga se retransmitirán
datagramas no perdidos (algunos que todavía están en
tránsito todavía hacia su destino; otros cuyos acks tardan
más en llegar), lo cual no hace otra cosa que agravar la
situación.
• Necesarios nuevos algoritmos de cálculo de RTO.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
“Timeout” y retransmisión en TCP
• Cálculo del RTO modificado (Van Jacobson)
– RTO se calcula teniendo en cuenta la media y la
desviación media de RTT.
• A: estimador derivado a partir de la media de RTT.
• D: estimador derivado a partir de la desviación media.
• Expresiones:
– Err = M - A (diferencia entre lo medido y lo que valía el
estimador de la media)
– A <-- A + g Err (el nuevo valor del estimador de la
media se iguala al valor anterior más el producto de la
diferencia anterior y un factor de ganancia (0.125)
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
“Timeout” y retransmisión en TCP
– D <-- D + h(|Err| -D) El nuevo valor del estimador de la
desviación media se obtiene de la suma de su valor
anterior y el resultado de multiplicar la diferencia entre
Err y el estimador anterior por un factor de ganancia
(0.25). De esa forma, si Err tiene un valor muy alto (M
ha cambiado mucho respecto a A), D ve alterado
notablemente su valor.
– RTO <-- A + 4 D.
• Con este algoritmo, cuando se esté en situación de
congestion, los valores de M crecerán, crecerá el valor de
|Err| y además de actualizar la A, D también cambiará
notablemente, aumentando RTO e incrementando el valor
del “timeout” de retransmisión.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
7
Sistemas de Transportes de Datos (STD)
Tema III: UDP Y TCP (Entrega 3)
_________________________________________
“Timeout” y retransmisión en TCP
_________________________________________
• Un problema final:
– Cuando llega un ack de un segmento que fue
retransmitido, no se está en condiciones de afirmar si lo
que llega es el ack del primero o de la retransmisión
(ambigüedad de retransmisión).
– En estas condiciones, no puede medirse el valor del RTT
(M) y en consecuencia NO DEBE ACTUALIZARSE EL
VALOR DEL RTO (Algoritmo de Karn). El RTO utilizado
será el que hay en este momento.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
_________________________________________
“Timeout” y retransmisión en TCP
– Una nueva medición válida de RTT (M), es decir, una
realizada sobre un segmento que no ha tenido que ser
retransmitido, permitirá calcular un nuevo valor de RTO.
– ¿Cada cuanto se mide el RTT?. Dependiente de la
implementación.
Departamento
Arquitectura
Computadores
UPC
© J.C. Cruellas
Juan Carlos Cruellas Ibarz.
_________________________________________
_________________________________________
_________________________________________
_________________________________________
________________________________________
Grupo de Aplicaciones Telemáticas
8
Descargar