Internet y /IP La Capa de Transporte en Internet: Control de Flujo y Congestión mayo de 2008 Índice Administración de ventanas en. El síndrome de la ventana tonta y la solución de Clark. El algoritmo de Nagle. Control de congestión: arranque lento y recuperación rápida. Otras mejoras a. sobre redes inalámbricas. Desempeño en redes de gigabits. Resumen. mayo de 2008 2 1
Números de secuencia ISN Datos entregados a la aplicación Datos confirmados, pero no entregados a la aplicación Espacio de números de 0 a 2 32-1 Buffer Datos no confirmados WIN Espacio libre mayo de 2008 3 Administración de Ventanas (I) Búfer de recepción: 2600 bytes SEQ=i+1400 SEQ=i+1000 SEQ=i+2000 / TAM=1000 / TAM=600 TAM=400 ACK=2400 ACK=1000 / WIN=200 / WIN=1600 0 1000 1400 2000 2400 mayo de 2008 4 2
Administración de Ventanas (II) mayo de 2008 5 Síndrome de la Ventana Tonta mayo de 2008 6 3
Nagle y Síndrome de la Ventana Tonta Prevenir el Síndrome de la Ventana Tonta (Clark 1982) Receptor: No incrementar WIN hasta que sea min[mss ó bien ½ búfer] Emisor: no enviar segmentos pequeños, si es posible. Algoritmo de Nagle (1984) Tras enviar el 1er segmento acumular en el búfer de envío hasta: Acumular MSS bytes o ½ max WIN anunciado por el receptor Sean los últimos datos y no hay datos sin confirmar Se adapta a las condiciones de la red, aunque en ocasiones es necesario desactivarlo ( cuáles?). mayo de 2008 7 Temporizador de Retransmisión Cómo estimar el RTT (round-trip time) cuando los tiempos son altamente variables? Idea: usar un algoritmo dinámico. Medir el tiempo entre el envío del último segmento y la recepción de un ACK: M RTT := α RTT + (1- α) M (Generalmente α=7/8) (Jacobson 1988): El temporizador debe ser algo mayor que el RTT estimado: β RTT, donde β=2, aunque es mejor una estimación dinámica de la desviación media: D := α D + (1- α) RTT-M La expiración del temporizador se puede fijar ahora a RTT + 4D Además Karn sugirió no actualizar RTT con segmentos retransmitidos, sino duplicar la expiración del temporizador mayo de 2008 8 4
Temporizadores Nombre Connection Retransmission Delayed ACK Persist Keepalive Timed Wait Valor 75s Dinámico 200-500 ms 200ms e incremento exponencial Configurable 2MSL (MSL= 30s, 1m, 2m) Descripción tiempo máximo para establecer una conexión Retransmisión de segmento Piggiback Persistencia tras informes de ventana a 0 Prueba de que el otro extremo existe cuando hay inactividad en una conexión (opcional) Tiempo antes de la reapertura de una conexión mayo de 2008 9 Control de Congestión (I) mayo de 2008 10 5
Arranque Lento (I) Tahoe Con la creciente calidad en las líneas de transmisión, se puede suponer que las pérdidas de paquetes son debidas a la congestión (pregunta: cuándo esto no es cierto?). Se mantiene, además de la ventana del receptor, una ventana de congestión (cwnd) y un umbral (SSThresh). Algoritmo en dos fases: 1ª fase: crecimiento exponencial, desde 1 ó 2 MSS duplicando cwnd hasta SSThresh. 2ª fase: crecimiento lineal de cwnd (en pasos de 1 MSS) Si timeout, el umbral SSThresh se baja a la mitad de la cwnd y se reinicia el algoritmo mayo de 2008 11 Arranque Lento (y II) mayo de 2008 12 6
Retransmisión Rápida (Fast Retransmit) Idea: No bajar cwnd a 1 ó 2 por perder un segmento. Intentar primero retransmitirlo rápidamente. No esperar a un timeout: Observación: ACKs duplicados significan una pérdida. Hacer que el receptor envíe inmediatamente un ACK ante un segmento fuera de secuencia (pérdida). Si se reciben 3 ACKs duplicados: Reducir cwnd a la mitad. Retransmitir el segmento que falta y esperar por un ACK de toda la ventana de transmisión antes de regresar. Si dicho ACK no llega, realizar el arranque lento. mayo de 2008 13 Recuperación Rápida (Fast Recovery) Reno Idea: La llegada de ACKs duplicados significa que los segmentos posteriores al perdido llegan a destino. Fast Recovery gobierna la transmisión de los nuevos datos hasta que dejen de llegar ACKs duplicados, en lugar de realizar arranque lento. El algoritmo infla artificialmente el valor de cwnd mientras está activo, incrementándolo con cada llegada de un ACK duplicado y continuando la transmisión. Cuando llega el ACK correspondiente al segmento perdido se coloca cwnd al valor de SSThresh, reduciendo de nuevo la ventana de congestión. En general ambos algoritmos se implementan juntos. mayo de 2008 14 7
Otros Algoritmos y mejoras a New Reno: Mejora de la retransmisión durante la fase de recuperación rápida cuando se pierden varios segmentos seguidos. Vegas: Nueva forma de calcular la ventana de congestión a través de la eficiencia estimada. Hybla: Intenta mejorar el rendimiento de ante enlaces de alta latencia (Interplanetary Internet). S (Protocolo de Transmisión de Control de Flujo): Opciones (negociadas) que permiten implementar repetición selectiva SACK (útil en enlaces de satélite), mantener fronteras de mensajes y otros avances. ECN (Notificación de Congestión Explícita). Mediante el uso de dos bits en la cabecera IP. (Nota: no es relativo a, pero sí al control de congestión) T/: Mejora el rendimiento en transacciones (lo veremos a continuación) mayo de 2008 15 Transactional - T/ (RFC 1379 y 1644) mayo de 2008 16 8
Inalámbrico El algoritmo de control de congestión supone que las pérdidas de segmentos son debidas a congestión. Problema: esto no es cierto en conexiones inalámbricas: Bakne y Badrinath (1995) proponen el Indirecto. Balakrishnan et al (1995) proponen cambiar el código de la estación base para una solución transparente. mayo de 2008 17 Desempeño en Redes de Gigabits Supuesto: Transmitir de San Diego a Boston sobre 1Gbps. Ventana del receptor = 64Kbytes (524288 bits). El emisor comenzaría a enviar datos y se detendría apenas 500 µs después. Los primeros datos llegarían en unos 20 ms (retardo de propagación) El emisor podría continuar tras unos 40 ms Hemos usado la línea unos 0 5 ms de un total de 40 ms, logrando una eficiencia del 1 25%. Solución: El tamaño de la ventana de recepción debe ser algo mayor que el producto ancho de banda-retardo, en este caso: 1Gbps x 40 ms = 40 Mbits = 5 Mbytes de ventana al menos. mayo de 2008 18 9
Resumen Hemos visto la filosofía de funcionamiento de las ventanas en. Tal cual, el método puede llevar al síndrome de la ventana tonta, solventado mediante la solución de Clark. Para aumentar el rendimiento se utilizan algoritmos como el de Nagle. Como los retardos son variables es necesario tener temporizadores de retransmisión adaptativos, como propone Jacobson. También la capa de transporte puede ayudar a controlar la congestión. En esto se hace mediante algoritmos como el arranque lento. Sucesivas mejoras fueron modificando dichos algoritmos y añadiendo nuevas características para mejorar el desempeño de. Y aún hay que adaptarlo para las nuevas necesidades: redes inalámbricas, redes de gigabits y ( por qué no?) la Internet Interplanetaria. mayo de 2008 19 10