Академический Документы
Профессиональный Документы
Культура Документы
Contextualizacin
www.um.es Apl.1
Nivel de Transporte
sun.rediris.es
Nivel de Aplicacin
Apl.2
O.S.
D H
Data
Header
Data
Header
O.S.
D H
Nivel de Red
Nivel de Enlace
Control de errores
Recuperacin ante la prdida de datos en la subred
Arquitectura de Redes - Universidad de Murcia 6
22
Protocolo TCP
Transmission Control Protocol (TCP), RFC 793
Implementa un transporte confiable orientado a la conexin (CONS) sobre un servicio de red no confiable (IP)
Funciones:
Establecer y terminar conexiones Intercambiar datos con las aplicaciones: multiplexar nivel de aplicacin (puertos) Gestionar los buffers, ejercer control de flujo Controlar errores, retransmitir segmentos (TPDUs) perdidos, eliminar duplicados Efectuar control de congestin
Arquitectura de Redes - Universidad de Murcia 23
Caractersticas de TCP
Ofrece un servicio de transporte de datos entre aplicaciones dplex, fiable y orientado a conexin (establecimiento, transferencia de datos y liberacin). El octeto es la unidad de datos del interfaz. No es posible preservar unidades de mayor longitud. Los datos de usuario se dividen para ser transmitidos como datagramas IP. Se emplea el mecanismo de ventana deslizante para ejercer control de flujo y recuperarse frente a errores (generados o no recuperados por la red). La numeracin es a nivel de octeto. El tamao de la ventana puede variar a lo largo de una misma conexin.
Arquitectura de Redes - Universidad de Murcia 24
Diagrama de Multiplexacin
Nivel de aplicacin FTP Port 21 Telnet Port 23 SMTP Port 25
25
Cabecera TCP
32 bits
Puerto de origen Puerto de destino Nmero de secuencia N(S)
20 bytes
Nmero de acuse de recibo N(R) Lon. Cab Reserv. Checksum Opciones Flags Tamao ventana Puntero datos urgentes Relleno
Flags:
el segmento contiene datos urgentes el campo nmero de acuse de recibo tiene sentido el segmento contiene datos Pushed ha habido algn error y la conexin debe cerrarse indica el inicio de una conexin indica el final de una conexin
26
Campos
Origen y Destino: puertos origen y destino de la comunicacin (FTP, TELNET, SMTP, etc.) N(S): posicin del segmento dentro de la ristra de octetos de usuario. N(R): posicin del siguiente octeto que se espera recibir. Vlido si bit ACK activo. Lon Cab: longitud de la cabecera TCP, en mltiplos de 32 bits. Campo necesario porque la cabecera es de longitud variable.
27
Campos
Tam. Ventana: receptor anuncia sus recursos disponibles. Checksum: suma de comprobacin del segmento TCP y una pseudo-cabecera. Puntero Urgentes: indica la posicin dentro del segmento donde acaban los datos urgentes stos se hallan al principio. Vlido si bit URG activo. Opciones: Campo opcional de tamao variable. Define extensiones a TCP, tales como negociar el tamao mximo de segmento (MSS). Relleno: para que la cabecera sea mltiplo de 32 bits.
28
Se necesita saber la direccin IP origen, por lo que hay que interactuar con la entidad IP antes de enviar el datagrama.
29
La Pseudo-cabecera TCP
32 bits
Direccin IP de origen Direccin IP de destino
00000000 00000110
Se aade al principio del segmento para el clculo del checksum. Permite a TCP comprobar que IP no se ha equivocado en la entrega del datagrama. El valor 1102 = 610 indica que el protocolo de transporte es TCP
30
Tipos de Flags
URG. Datos acelerados. El campo Puntero Urgentes tiene validez.
Ej: Envo de una seal a aplicacin remota
ACK. El campo N(R) es vlido. Confirmacin de entrega. PSH. El segmento requiere envo y entrega inmediata
Ej: Telnet requiere enviar lnea de buffer al presionar [Enter]
RST. Resetea la conexin ante un error irrecuperable. SYN. Establecimiento de conexin. Confirmacin con ACK. FIN. Liberacin de conexin. Confirmacin con ACK.
31
Transferencia de Datos
Se emplea ventana deslizante y asentimientos con memoria, que indican el siguiente octeto que se espera recibir. Cada segmento transmitido lleva asociado un temporizador. Cuando expira, se retransmite. El plazo de retransmisin se calcula dinmicamente para adaptarse a las condiciones de la red. El receptor recompone la ristra de datos de usuario, descartando duplicados, entregndolos en secuencia. Ms detalles en la siguiente seccin
32
Conexiones en TCP
Se utiliza saludo a tres vas (3-way handshake) tanto para establecer como para cerrar conexiones El proceso de establecimiento de conexin reserva recursos para la comunicacin e intercambia los nmeros de secuencia iniciales (ISN)
32 bits que se usan en el intercambio de datos de una conexin para identificar:
la posicin de los datos del segmento en el flujo de bytes del emisor el siguiente byte que espera el receptor
Se eligen de forma aleatoria a partir de un reloj para evitar que segmentos atrasados de conexiones anteriores puedan interferir en la conexin actual Con un MSL (Maximum Segment Lifetime) de unos 2 minutos, la probabilidad de que dos ISN coincidan es despreciable
33
Establecimiento de Conexin
TCP A
CLOSED SYN-SENT SYN-RECEIVED
Caso Normal
TCP B
LISTEN
Tiempo
ESTABLISHED
ESTABLISHED
Los primeros segmentos de una conexin TCP pueden llevar datos. En ese caso el TCP remoto los ha de retener hasta que la aplicacin receptora acepte la conexin.
Arquitectura de Redes - Universidad de Murcia 34
Recuperacin
TCP A
CLOSED SYN-SENT
SYN Duplicado
TCP B
LISTEN
SYN-RECEIVED Tiempo
LISTEN SYN-RECEIVED
Terminacin de la Conexin
La terminacin se hace de forma simtrica mediante un saludo a tres vas modificado
Cuando una parte no tiene ms datos que enviar enva un mensaje FIN que es asentido por el otro extremo Desconexin en cada sentido de comunicacin
Una vez terminada una conexin el host que inici la desconexin est un cierto tiempo a la espera por si aparecen segmentos retrasados
36
TCP B
ESTABLISHED
Los flags SYN y FIN cuando estn activos incrementan en 1 el nmero de secuencia (byte de datos virtual) La presencia del flag ACK no incrementa el nmero de secuencia
38
Diagrama de Estados
39
Opciones TCP
Opciones se suelen negociar en el segmento de inicio de la conexin
El que lleva el bit SYN activo
40
Opciones TCP
MSS Maximum Segment Size (MSS)
Opcin ms comn, indica el tamao mximo del payload dispuesto a aceptar MSS pequeo poca eficiencia
Ej: si payload = 1 byte, slo 1/41 de carga til en TCP/IP
MSS grande
probabilidad de fragmentacin IP
Mensajes de Keepalive
Cuando una conexin est inactiva durante un periodo de tiempo, expira el keepalive timer
del orden de 2 horas enva un segmento con el ltimo byte de datos asentido el extremo debe responder con un ACK, en cuyo caso la conexin sigue viva
42
Mensajes de Keepalive
TCP A
Tiempo
100 bytes (501-600)
TCP B
Datos puestos en buffer para la aplicacin
Timer Keepalive
1 byte (600)
43
45
Intercambio de Datos
TCP - Aplicacin
Aplicacin TCP: la aplicacin enva datos a TCP cuando quiere
Siempre y cuando TCP tenga espacio libre en el buffer de emisin
TCP Aplicacin: la aplicacin lee del buffer de recepcin de TCP cuando quiere y cuanto quiere
Excepcin: datos urgentes
Para TCP los datos de la aplicacin son un flujo continuo de bytes sin separacin alguna. La separacin de los datos (fin de registro, etc.) es responsabilidad de la aplicacin.
Intercambio de Datos
TCP - TCP
TCP manda los datos cuando quiere.
Excepcin: datos Pushed y Urgentes
TCP decide el tamao de segmento segn sus preferencias. Al inicio de la conexin se negocia el MSS. TCP puede aplicar la tcnica de Path MTU Discovery para ajustar el MSS al tamao ptimo para esa comunicacin. Normalmente TCP intenta agrupar los datos para que los segmentos tengan la longitud mxima, reduciendo as la sobrecarga debida a cabeceras y procesamiento de segmentos.
47
Segmentacin y Paquetizacin
Aplicacin
ABCD
ABC
TCP Red
ABCD
A B C D
48
Host B
49
Datos TCP
Host B
50
Nmeros de Secuencia
Host A
ISN (initial sequence number)
SN = primer byte
TCP Data
TCP HDR
TCP Data
Host B
51
Ventanas Deslizantes
IP proporciona un servicio no confiable, por lo que pueden haber prdidas Para proporcionar un servicio de transporte confiable, TCP establece un temporizador de retransmisin para cada segmento Si se recibe un ACK para ese segmento se cancela el temporizador Cuntos segmentos consecutivos transmite TCP? Protocolo de ventana deslizante
El receptor anuncia la cantidad de bytes que puede recibir en su buffer El emisor transmite tanta informacin como puede (uso eficiente del canal) sin desbordar el buffer del receptor
Source: CS244, Steve McKeown, Stanford University
52
Datos asentidos
Datos enviados Datos que Datos que sin asentir pueden enviarse an no pueden enviarse
53
54
Transferencia Normal
TCP A
Tiempo
100 bytes (501-600)
200 bytes libres Datos ledos por la aplicacin 300 bytes libres Datos en buffer de aplicacin 100 bytes libres
Tras establecimiento
TCP B
Datos ledos por la aplicacin 300 bytes libres Datos puestos en buffer para la aplicacin 200 bytes libres
55
Tras establecimiento
TCP B
400 bytes libres
Retransm. timer
56
Tras establecimiento
TCP B
300 bytes libres
Retransm. timer
Datos ledos por la aplicacin 300 bytes libres Datos puestos en buffer para la aplicacin 200 bytes libres
57
Tras establecimiento
TCP B
300 bytes libres
Retransm. timer
58
Tras establecimiento
TCP B
300 bytes libres
Retransm. timer
Temporizador de Persistencia
TCP A
Tiempo
100 bytes (501-600)
Buffer lleno
TCP B
Timer de Persistencia
Bloqueado
1 byte (601)
60
En enlaces de baja capacidad, reducir los tamaos de los segmentos puede ayudar
62
Host A
???
Host B
63
Retransmisiones en TCP
Round-trip time (RTT) Retransmission TimeOut (RTO) Banda Guarda
Host A
RTT estimado
Dato1
Dato2
ACK Host B
ACK
TCP usa un timeout de retransmisin ajustable: Congestin RTT cambia Cambios en encaminamiento frecuentemente
64
Transferencia Interactiva
Receptor Lento
Emisor
Usuario teclea una C y TCP transmite inmediatamente TCP genera un ACK Servidor lee el carcter y lo escribe de nuevo. TCP enva el segmento. TCP genera un ACK
Receptor
Transferencia Interactiva
Receptor Rpido
Emisor
Usuario teclea una C y TCP transmite inmediatamente Usuario teclea una O y TCP transmite inmediatamente TCP enva ACK de segmentos recibidos TCP entrega el dato a la aplicacin, la cul enva el carcter que es devuelto por TCP inmediatamente
Receptor
Transferencia Interactiva
Baja Eficiencia en TCP El funcionamiento eficiente de TCP aconseja enviar segmentos del tamao mximo permitido Cuando la aplicacin emisora genera los datos en pequeas dosis (p.ej: Telnet) se da un problema de eficiencia Solucin: Algoritmo de Nagle
67
Algoritmo de Nagle
Cuando la aplicacin enva datos en pequeos grupos, TCP enva el primero y retiene los dems hasta recibir el ACK; por cada ACK recibido enva un segmento con los bytes que hubiera pendientes, y as sucesivamente. Tambin se enva un segmento cuando los datos acumulados igualan el MSS o la mitad de la ventana.
El mecanismo es auto-regulado (self-clocking), pues cuanto ms cargada est la red mas tardarn los ACK y ms agrupados irn los datos Se puede aplicar a datos pushed en caso necesario
68
Algoritmo de Nagle
Ejemplo
Emisor
Usuario teclea una C y TCP transmite inmediatamente TCP espera ACK mientras usuario teclea ONTROL TCP enva datos en buffer al recibir ACK TCP entrega el dato a la aplicacin, la cul enva el carcter que es devuelto por TCP inmediatamente
Receptor
70
Solucin de Clark
El TCP receptor solo debe notificar una nueva ventana cuando tenga una cantidad razonable de espacio libre. RFC 813 Razonable significa al menos:
Un MSS (segmento del tamao negociado), o La mitad del espacio disponible en el buffer
71
Delayed ACK
Ventajas
Decrece el trfico de control en la red: si llegan N segmentos durante el tiempo de espera, slo enviamos 1 ACK como respuesta en lugar de N+1 Mayor probabilidad de hacer piggybacking con datos enviados En el mismo ACK se anuncia la nueva ventana del receptor (Clark), en lugar de enviar primero el ACK y luego la ventana
Inconvenientes
Si el ACK se atrasa demasiado tiempo, podra provocar la retransmisin del segmento por parte del emisor consumo de ancho de banda y procesamiento TCP usa ACKs para estimar RTTs y tiempos de retransmisin Delayed ACKs podran confundir los estimadores
74
Contextualizacin
En esta seccin nos centramos en el control de congestin en TCP
Additive Increase, Multiplicative Decrease (AIMD) Slow Start Congestion Avoidance Algoritmo de Karn para estimacin de timers de retransmisin
Control de Flujo
Control de Congestin
75
La Congestin es Inevitable
Es incluso buena! Usamos conmutacin de paquetes porque hace un uso eficiente de los enlaces. Por tanto, los buffers de los routers estn normalmente ocupados. Si los buffers estn siempre vacos, el retardo es bajo, como el uso de nuestra red. Si los buffers estn siempre ocupados, el retardo es ms alto, pero estamos usando las red muy eficientemente.
Problemas de la Congestin
Si el retardo es demasiado alto, afecta negativamente al rendimiento de las aplicaciones. Si los buffers de los routers se llenan, existe prdida de paquetes (retardo = ).
Comportamiento tpico de colas con llegadas aleatorias: Las rfagas mueven la asntota a la izquierda Una mtrica simple para medir cmo de bien funciona la red:
Potencia =
Carga Retardo
Retardo medio
Potencia
Carga
Arquitectura de Redes - Universidad de Murcia
77
Congestin y TCP
Colapso por Congestin
Congestin en la red Mayor Retardo
TCP detecta la congestin cuando se pierde un segmento (expira timer de retransmisin) TCP alivia la congestin reduciendo la tasa de envo TCP intenta evitar la congestin aumentando poco a poco la tasa de envo, hasta detectar congestin
Arquitectura de Redes - Universidad de Murcia 78
Ventana de Congestin
Las fuentes TCP cambian la tasa de envo modificando el tamao de la ventana:
Window = min{Advertized window, Congestion Window}
Receptor (rwnd) Emisor (cwnd)
Es decir, enva a la velocidad del componente ms lento: el receptor, o la red. cwnd se incrementa de forma aditiva, y se decrementa de forma multiplicativa (AIMD)
AI, Slow Start: Recibir 1 ACK +1 MSS a cwnd MD: Perder 1 segmento (timeout) /2 tamao de cwnd
79
Slow Start
Diseado para averiguar la tasa de datos apropiada al inicio de una conexin, o tras haber detectado congestin Inicialmente:
cwnd = 1 MSS
Por cada segmento enviado con xito (ACK recibido) la ventana se ampla en 1 MSS
cwnd += 1 MSS En la prctica esto supone un crecimiento exponencial en potencias de dos
Si la ventana de congestin supera a la de control de flujo, se aplica la de flujo (rwnd), por lo que cwnd deja de crecer
80
Slow Start
No es tan lento
Slow Start no es slow en absoluto
cwnd crece de forma exponencial se le llama as porque inicialmente TCP no tena control de congestin la fuente hubiera enviado una ventana rwnd completa de datos 1 2 4 8
Fuente
D D
A A
D D
D A
D A A A
Destino
81
Control de la Congestin
Se fija un valor umbral (ssthresh) en un valor igual a la mitad de la cwnd que haba cuando se produjo la prdida
ssthresh = cwnd / 2 Inicialmente, ssthresh = tamao mximo de ventana (64 KB por defecto); o ssthresh = rwnd; u otro criterio dependiente de la implementacin
82
Congestion Avoidance
Una vez se alcanza el umbral (cwnd == ssthresh), ejecutamos algoritmo de congestion avoidance.
Slo se incrementa la ventana a razn de 1 MSS por cada rfaga (ventana) que se recibe correctamente. Motivacin:
1. Detectamos congestin, as que comenzamos de nuevo a transmitir con Slow Start desde el principio. 2. Al llegar a la mitad de la ventana que caus la congestin, aumentamos ms lentamente la tasa de envo para evitar entrar de nuevo en congestin (Congestion Avoidance). 3. Si en cualquier punto se vuelve a detectar la congestin, repetimos el proceso.
83
Ejemplo
Slow Start
Ventana 1 MSS 2 MSS
Emisor
SEG 1
Receptor
ACK 1 SEG 2 SEG 3 SEG 4 SEG 5 SEG 6 SEG 7 ACK 2 ACK 3 ACK 4 ACK 5 ACK 6 ACK 7
4 MSS
8 MSS
SEG 8 SEG 9 ACK 8 SEG 10 ACK 9 SEG 11 ACK 10 SEG 12 ACK 11 SEG 13 ACK 12 SEG 14 ACK 13 SEG 15 ACK 14 ACK 15
84
Ejemplo
Deteccin, Slow Start y Congestion Avoidance
Ventana 1 MSS 2 MSS
Emisor
SEG 16
Receptor
ACK 16 SEG 17 SEG 18 SEG 19 SEG 20 SEG 21 SEG 22 SEG 23 SEG 24 SEG 25 SEG 26 SEG 27 SEG 28 SEG 29 SEG 30 SEG 31 SEG 32 SEG 33 ACK 17 ACK 18
4 MSS
ssthresh = 4KB
ACK 19 20 ACK ACK 21 ACK 22 ACK 23 ACK 24 ACK 25 ACK 26 ACK 27 ACK 28 ACK 29 ACK 30 ACK 31 ACK 32 ACK 33
85
5 MSS
6 MSS
Algoritmo
Slow Start y Congestion Avoidance
Nota: usamos el segmento como unidad, en la prctica se usan bytes Inicializacin: cwnd = 1 ; ssthresh = rwnd ; Al recibir ack: if (cwnd < ssthresh) /* Slow Start */ cwnd = cwnd + 1 ; else /* Congestion Avoidance */ cwnd = cwnd + 1/cwnd; Al ocurrir un timeout de retransmisn: send snd_una ; ssthresh = max(2, cwnd / 2) ; cwnd = 1 ;
86
ssthresh
0 Mensajes Enviados
Copyright 2000 The McGraw Hill Companies Leon-Garcia & Widjaja: Communication Networks Figure 7.63
87
Timer de Retransmisin
RTO
RTO (Retransmission TimeOut) debe ser adecuado para la comunicacin:
Si es excesivo se esperar innecesariamente. Si es muy corto se harn reenvos innecesarios.
Idealmente debe ser un poco superior al Round Trip Time (RTT), pero este valor es difcil de predecir extremo a extremo debido a su gran fluctuacin.
Por tanto, se deben utilizar mecanismos dinmicos autoadaptables. TCP actualiza el RTO en base a una estimacin del RTT segn el tiempo que pasa desde que se enva un segmento hasta que se recibe el ACK correspondiente.
La estimacin del RTO es crucial para el correcto funcionamiento del Control de Congestin en TCP.
Arquitectura de Redes - Universidad de Murcia 88
89
Deducir el RTO a partir de MRTT es complicado si no tenemos una idea de la dispersin de los valores.
Inicialmente se propuso: RTO = * MRTTn, con un factor constante =2. Jacobson demostr que este esquema no es capaz de absorber grandes fluctuaciones de RTT.
90
Las colas de los routers crecen con la carga hasta ser inestables. Al aumentar la carga, la varianza del retardo crece rpidamente.
Retardo medio de la cola
varianza
media
RTT
Carga
(Volumen de trfico que llega al router)
Source: CS244, Steve McKeown, Stanford University
91
Estimacin de RTO
Propuesta Mejorada
Propuesta de Jacobson
Estimar el RTT medio como antes, calculando MRTT. Estimar tambin la desviacin tpica D del RTT Se pueden calcular de forma eficiente a partir de las siguientes ecuaciones: Err = RTT MRTT MRTTn = MRTTn-1 + g*Err Dn = Dn-1 + h*(|Err| - Dn-1)
donde: g = 1/8 es la ganancia del estimador de la media, h = 1/4 es la ganancia del estimador de la desviacin tpica.
El RTO se hace proporcional a la desviacin estimada D, en lugar de a la constante . RTO = MRTT + *D , donde = 4.
Arquitectura de Redes - Universidad de Murcia 92
Estimacin de RTO
N 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 230,00 238,00 241,25 253,59 252,64 246,19 257,92 259,68 266,10 268,09 265,33 270,16 274,89 269,28 MRTTn-1 RTTn 230 294 264 340 246 201 340 272 311 282 246 304 308 230 328 MRTTn 230,00 238,00 241,25 253,59 252,64 246,19 257,92 259,68 266,10 268,09 265,33 270,16 274,89 269,28 276,62 64 54,5 65,56 51,07 51,21 61,86 49,92 50,27 41,68 36,78 37,25 37,40 39,27 64 54,5 65,56 51,07 51,21 61,86 49,92 50,27 41,68 36,78 37,25 37,40 39,27 44,13 494 459,25 515.83 456.92 451.27 505.36 459,36 467,18 434,81 412,45 419,16 424,49 426,36 453,14 Dn-1 Dn RTO
Retransmission
Problema:
Cmo estimar el RTT cuando se retransmiten segmentos?
Soluciones:
Algoritmo de Karn - Opcin de Timestamp
-
94
Algoritmo de Karn
Al recibir un ACK de un segmento que se retransmiti:
No modificar el MRTT estimado. Duplicar el RTO.
Algoritmo de Karn
Inicializacin: MRTT=0; RTO = 3 + 2D; Llegada de ACK: Si (ACK == Segmento Retransmitido) { RTO = RTO * 2; /* Por cada ACK recibido */ /* No se modifica MRTT */ } Si (Primer ACK de Segmento No Retransmitido) { Err = RTT - MRTT ; MRTT = MRTT+g*Err; D = D + h(|Err| - D) RTO = MRTT + 4*D }
Arquitectura de Redes - Universidad de Murcia 96
97
98
Retransmisin Bsica
Problemas Incluso si la estimacin del RTT es buena
Si el RTO no es suficiente, muchos segmentos se envan de forma repetida.
Emisor
Es posible un compromiso entre estar seguros de evitar el primer caso con un valor alto de RTO, Receptor y a la vez detectar las prdidas rpidamente? Si el RTO es muy grande, la retransmisin ocurre muy tarde.
Emisor
Receptor
Arquitectura de Redes - Universidad de Murcia 99
Retransmisin Bsica
Escenario
Un receptor debe enviar un ACK inmediatamente al recibir un segmento fuera de orden. El emisor recibe una serie de ACK duplicados que se pueden usar para inferir la prdida del segmento. Cuntos para distinguir prdida de desorden?
Arquitectura de Redes - Universidad de Murcia 100
Fast Retransmit
Un ACK Duplicado es aqul que asiente un segmento de datos ya asentido (mismo nmero de secuencia) Idea bsica: Usar ACKs duplicados para detectar prdida de segmentos
La red podra entregarlos fuera de orden, por lo que el emisor infiere que el segmento se ha perdido cuando llegan mltiples duplicados
Fast Retransmit
Con la recepcin de tres ACKs duplicados, el emisor TCP retransmite el segmento perdido antes de que expire el RTO.
101
Algoritmo
SS y CA con Fast Retransmit
Nota: usamos el segmento como unidad, en la prctica se usan bytes Inicializacin: cwnd = 1 ; ssthresh = rwnd ; Al recibir ack: if (cwnd < ssthresh) /* Slow Start */ cwnd = cwnd + 1 ; else /* Congestion Avoidance */ cwnd = cwnd + 1/cwnd; Al ocurrir un timeout de retransmisn o recibir 3 DupACK: send snd_una ; ssthresh = max(2, cwnd / 2) ; cwnd = 1 ;
102
Fast Retransmit
Generalmente, Fast Retransmit elimina alrededor de la mitad de las retransmisiones por expiracin del RTO.
Esto supone alrededor del 20% de mejora en el throughput. Ntese que si la ventana efectiva es pequea, fast retransmit no puede eliminar todos los timeouts si no le queda crdito disponible.
Tras la retransmisin, la ventana de congestin se reduce a 1 y se comienza con Slow Start de nuevo.
Si estn llegando ACKs duplicados, puedo inferir algo del nivel de congestin actual de la red?
Arquitectura de Redes - Universidad de Murcia 103
Fast Recovery
Idea bsica: Si llegan ACKs Duplicados, significa que otros segmentos estn llegando.
La congestin no es excesiva. Podramos recuperarnos a partir de una tasa intermedia en lugar de bajar cwnd a 1 segmento.
Fast Recovery
Tras Fast Retransmit, dividir la cwnd a la mitad y comenzar la recuperacin desde este punto usando incremento aditivo.
Arquitectura de Redes - Universidad de Murcia 104
Fast Recovery
El emisor reduce la ventana de congestin al valor de ssthresh ms 3 segmentos.
Los correspondientes a los DupACK, puesto que ya han salido de la red y no consumen recursos.
Por cada DupACK adicional recibido, cwnd += 1 MSS. Sigue enviando segmentos nuevos (si lo permite la ventana efectiva). Al recibir un ACK que asiente nuevos datos, cwnd = ssthresh y comienza Congestion Avoidance (no se entra en Slow Start).
Arquitectura de Redes - Universidad de Murcia 105
Algoritmo
Fast Retransmit y Fast Recovery
Nota: usamos el segmento como unidad, en la prctica se usan bytes Al recibir DupACK: if (third dup ack) { /* Fast ReTx */ ssthresh = max (2, cwnd / 2) ; send snd_una ; cwnd = ssthresh + 3 ; fast_recovery = true ; } else if (fast_recovery) /* Fast Recovery */ cwnd = cwnd + 1; Al recibir ACK: fast_recovery = false ; cwnd = ssthresh ; /* Entramos en Congestion Avoidance */
106
Ejemplo
Fast Retransmit y Fast Recovery
Estado inicial cwnd=7 Slow Start
0 1 2 3 4 5 6 cwnd=8 7 8 1 cwnd=8 cwnd=9 9 Ack(9) Ack(10) cwnd=10 10 cwnd=11 11 Ack(1) Ack(1) Ack(1) Ack(1) Ack(1) Ack(1) Ack(1) Ack(1)
12
107
Ejemplo
Fast Retransmit y Fast Recovery
108
109
Contextualizacin
Hemos estudiado diferentes mejoras que se han ido introduciendo a TCP para un mejor soporte de la congestin:
Slow Start Congestion Avoidance Fast Retransmit Fast Recovery
En general, las diferentes versiones de TCP que se han estandarizado, incluyen diferentes combinaciones de estos componentes. En esta seccin, estudiaremos la evolucin histrica de las diferentes versiones de TCP y compararemos las caractersticas de las mismas.
Arquitectura de Redes - Universidad de Murcia 110
Variantes de TCP
TCP inicial (RFC 793) TCP Tahoe (RFC 1122) TCP Reno (RFC 2581) TCP NewReno (RFC 2582) TCP SACK (RFC 2018) Otras variantes
TCP Vegas: Mejoras a la estimacin de congestin. TCP FACK: Forward ACK.
111
TCP Tahoe
Slow Start con Congestion Avoidance Cuando emisor recibe 3 DupACKs para el mismo nmero de secuencia o expira el RTO, infiere una prdida
Se reduce la ventana de congestin a 1 segmento Se comienza de nuevo Slow Start Slo se retransmite al expirar el RTO
Ventajas:
Simple
Inconvenientes:
Control de congestin demasiado agresivo
112
TCP Tahoe
Control de Congestin
Nota: usamos el segmento como unidad, en la prctica se usan bytes Inicializacin: cwnd = 1 ; ssthresh = rwnd ; Al recibir ack: if (cwnd < ssthresh) /* Slow Start */ cwnd = cwnd + 1 ; else /* Congestion Avoidance */ cwnd = cwnd + 1/cwnd; Al ocurrir un timeout de retransmisn o recibir 3 DupACK: if (timeout or (DupAck and Fast ReTx)) send snd_una ; ssthresh = max(2, cwnd / 2) ; cwnd = 1 ;
Arquitectura de Redes - Universidad de Murcia 113
TCP Tahoe
114
TCP Tahoe
115
116
117
TCP Reno
El problema de TCP Tahoe es la agresividad del control de congestin En Reno las prdidas se siguen detectando mediante expiraciones del RTO y DupACKs. En esta variante, se implementan Fast Retransmit y Fast Recovery.
Slo se usa Slow Start si la prdida se detect por RTO
Ventajas:
Reno aumenta el rendimiento de Tahoe al usar Fast Recovery
Inconvenientes:
Puede funcionar mal cuando hay mltiples prdidas
Arquitectura de Redes - Universidad de Murcia 118
TCP Reno
Control de Congestin
Nota: usamos el segmento como unidad, en la prctica se usan bytes Al recibir DupACK: if (third dup ack) { /* Fast ReTx */ ssthresh = max (2, cwnd / 2) ; send snd_una ; cwnd = ssthresh + 3 ; fast_recovery = true ; } else if (fast_recovery) /* Fast Recovery */ cwnd = cwnd + 1; Al recibir ACK: fast_recovery = false ; cwnd = ssthresh ; /* Entramos en Congestion Avoidance */
119
TCP Reno
Fast Recovery
120
TCP Reno
Problemas
Si cwnd < 4 segmentos entonces no pueden obtenerse 3 DupACKs y el temporizador RTO saltar siempre. Si se pierden mltiples mensajes de la misma ventana de datos, no se detecta con los DupACKs por lo que saltar el RTO. El algoritmo no gestiona prdidas de paquetes durante la fase de Fast Recovery (no recursivo), por lo que acabar saltando el RTO.
En todos los casos, sufrimos el retardo de expiracin y el inicio lento de Slow Start.
121
TCP Reno
Emisor
Estado inicial cwnd=7 Slow Start
Flight Size =Num. de segmentos sin asentir Fast Retransmit cwnd=8/2+3=7 ssthresh=8/2=4 Fast Recovery
0 1 2 3 4 5 6 cwnd=8 7 8 1 Ack(3) cwnd=8 cwnd=9 9 Ack(3)
Ejemplo
Receptor
Ack(1) Ack(1) Ack(1) Ack(1) Ack(1) Ack(1)
Exit Fast Recovery cwnd=ssthresh=4 Congestion Avoidance Flight Size > cwnd 8 y 9 estn fuera de la cwnd, si se pierden: RTO
Arquitectura de Redes - Universidad de Murcia
122
TCP Reno
Prdidas Mltiples
123
TCP NewReno
Idea bsica: Si el emisor anota el nmero mayor de segmento enviado al entrar en Fast Recovery (recover), al llegar un ACK no duplicado puede ver si se trata de un ACK Parcial, indicando que se han perdido ms paquetes de la ventana [Hoe95]. En ese caso, el emisor retransmite tambin el siguiente segmento perdido, y permance en la fase de Fast Recovery. El emisor termina la fase de Fast Recovery cuando recibe un ACK con nmero de secuencia recover+1.
124
TCP NewReno
Algoritmo
Si recibido Ack Parcial (seqnum < recover)
Retransmitir el primer segmento no asentido cwnd = cwnd - Bytes Asentidos + MSS Si nuevo cwnd lo permite, mandar un nuevo segmento
La reducin de cwnd al llegar el ACK Parcial intenta garantizar que al acabar Fast Recovery haya aproximadamente ssthresh bytes sin asentir en la red
Mantener el self-clocking
125
TCP NewReno
Ejemplo
Estado inicial cwnd=5 Slow Start
Fast Retransmit cwnd=6/2+3=6 ssthresh=6/2=3 Recover=6 Fast Recovery
Emisor
0 1 2 3 4
Receptor
Ack(1) Ack(1) Ack(1) Ack(1) Ack(1)
cwnd=6 5 6
1 cwnd=7 7
Ack(3) Ack(3)
Recover Ack Partial Ack 3 cwnd=7-(3-1)+1=6 cwnd=7 8 Recover < Ack Exit Fast Recovery cwnd=ssthresh=3 Congestion Avoidance Arquitectura de Redes - Universidad de Murcia
Ack(8) Ack(9)
126
127
TCP SACK
RFC 2018 y 2883
Los asentimientos acumulativos no dan mucha informacin sobre qu paquetes han llegado al receptor
Un emisor agresivo podra retransmitir muy pronto segmentos ya entregados
TCP SACK
Ejemplo Supongamos que se transmiten los segmentos 525 Supongamos que se pierden el 5, 12, y 18
El receptor enva un ACK=5, y SACK=(6-11,13-17,1925) En las siguientes transmisiones que correspondan, el emisor se centrar en transmitir los segmentos 5, 12, y 18
130
TCP SACK
131
TCP FACK
Mejora adicional de la informacin de las opciones SACK para mejorar el mecanismos de control de congestin
132
Bibliografa
Bsica
Tanenbaum, secc. 3.4, 6.1-6.4. Comer, cap. 12 y 13. Bertsekas, secc. 6.1-6.2.
Complementaria
Peterson, cap. 5 y 6. Stevens Vol I, cap. 17 y 18. Stallings, cap. 20.
133
Bibliografa
[Fall95] Fall, K. and Floyd, S., "Comparisons of Tahoe, Reno, and Sack TCP", ftp://ftp.ee.lbl.gov/papers/sacks.ps.Z, December 1995. [Hoe95] J. Hoe, Startup Dynamics of TCP's Congestion Control and Avoidance Schemes. Master's Thesis, MIT, 1995. [RFC2581] Stevens, W., Allman, M. and V. Paxson, "TCP Congestion Control", RFC 2581, April 1999. [RFC2018] M. Mathis, J. Mahdavi, S. Floyd, and A. Romanow, TCP Selective Acknowledgement Options, RFC 2018, October 1996.
134