380 likes | 487 Views
Un nuevo protocolo de transporte SCTP-RR Julio Kriger Director: Dr. Claudio Righetti Jurado: Dra. Patricia Borensztejn Dr. Marcelo Risk Universidad de Buenos Aires Departamento de Computación Facultad de Ciencias Exactas y Naturales. Introducción
E N D
Un nuevo protocolo de transporte SCTP-RR Julio Kriger Director: Dr. Claudio Righetti Jurado: Dra. Patricia Borensztejn Dr. Marcelo Risk Universidad de Buenos Aires Departamento de Computación Facultad de Ciencias Exactas y Naturales
Introducción • Stream Control Transmission Protocol (SCTP) Los problemas • Reorden de paquetes. • Cambios bruscos del RTT. Objetivos • Mejorar SCTP bajo ciertas condiciones de red. • Emular una red (condiciones de red en ambiente real y controlado). Contribuciones del trabajo • Análisis de trabajos anteriores. • Análisis de herramientas para emulación. • Experimentos y resultados.
Los problemas, la congestión y SCTP Los problemas Reordenamiento de Paquetes Causas: • Ruteo multi-camino a nivel de paquete (por balanceo de carga). • Route fluttering (función de ruteo por costo por retraso y congestión). • Paralelismo inherente en routers modernos de alta velocidad (creación de banda de paquete para reducir costos). • Retransmisiones a nivel de la capa de enlace (Router wireless). • Treguas (actualización de tablas de ruteo). Cambios Bruscos del RTT • El rendimiento inversamente proporcional al RTT.
Los problemas, la congestión y SCTP El impacto de los problemas Reordenamiento de Paquetes • Retransmisiones espurias. • Ventana de congestión innecesariamente pequeña. • Pérdida de Reloj Ack. Cambios Bruscos del RTT • Calculo del RTT. • Timeout de Retransmisión (RTO).
Los problemas, la congestión y SCTP Congestión en redes globales • Congestión es el estado sostenido de sobrecarga de una red donde la demanda de recursos (ancho de banda y buffer) se encuentra al límite o excede la capacidad de los mismos. • Una red se dice que está congestionada desde la perspectiva de un usuario si la calidad de servicio percibida por el usuario disminuye debido a un aumento en la carga de la red. Control de congestión y asignación de recursos • Se asignan principalmente de buffer y ancho de banda (Router y Host). • El objetivo de control de congestión es el uso eficiente de la red, hay que prevenir la congestión. • Sobreprovisionamiento (ISP) • Ancho de banda barato. • Facilidad de administración. • Preparado para más cantidad de clientes.
Los problemas, la congestión y SCTP Congestión en redes globales Esquema de funcionamiento de los Router • Cuellos de botella • Procesar paquetes entrantes. • Tiempo de espera en buffer.
Los problemas, la congestión y SCTP Congestión en redes globales Clasificación de asignación de recursos Principales mecanismos: • Centrada en los Router vs. Centrada en los Host (decisión de los Router o Host se adapta a la red). • Basada en Reserva vs. Basada en Retroalimentación [explicita o implicita] (se reservan recursos en Router o Host se adapta). • Basado en Ventana vs. Basado en Tasa (se informa tamaño de ventana/espacio de buffer entre origen y destino, o se regula la tasa de transmisión [bytes por segundo]).
Los problemas, la congestión y SCTP Congestión en redes globales Modelo de red Principales características de la arquitectura de red: • Redes de conmutación de paquetes (Router que intercambian paquetes). • Flujos no orientados a conexión (diferencia entre orientados a conexión y no orientados a conexión, uso de soft/hard state, flujos implícitos [Router inteligente para paquetes con mismo nodo de origen y destino] o explícitos [por mensaje de inicialización]). • Modelo de servicio mejor esfuerzo (todo paquete es tratado igual, hay limitado QoS).
Los problemas, la congestión y SCTP Congestión en redes globales Congestión en redes de conmutación de paquetes no orientadas a conexión • Como afecta la congestión en el rendimiento de la red.
Los problemas, la congestión y SCTP Protocolo SCTP • Entrega de datos fuera de orden confiable (entrega rápida de datos). • Preservación de los límites de mensaje (identificar partes de varios mensajes). • Soporte para múltiples flujos de datos independientes (múltiples flujos en una misma conexión). • Multihoming (múltiples direcciones IP por conexión). • Confiabilidad parcial (definir que tan persistente debe se la entrega de mensajes). • Soporta four-way-handshake (para evita ataques de Denial of Service). • Un paquete tiene una cabecera común (12 bytes) y múltiples Chunk (de control o datos). • Mismos concepto de puerto que TCP y UDP. • Checksum de 32 bits. • Dos tag de verificación de 32 bits.
Los problemas, la congestión y SCTP Protocolo SCTP • Flexibilidad para agregar nuevos Chunk de control. • Chunk de Hearbeat mantiene vivas las asociaciones.
Los problemas, la congestión y SCTP Protocolo SCTP
Los problemas, la congestión y SCTP Protocolo SCTP Definiciones • Sender Maximum Segment Size (Smss): tamaño máximo de envío de segmento en un momento dado. • CWnd: Limita la cantidad de datos que TCP puede enviar. • SSThresh: Limite para usar Slow Start, luego usar Congestion Avoidance. • Desconocimiento inicial de las condiciones de la red (CWnd = 2*Smss). • Uso de Slow Start cuando CWnd < SSThresh (crecimiento exponencial, incrementa CWnd hasta Smss por cada Ack de datos nuevos). • Uso de Congestion Avoidance cuando CWnd > SSThresh (crecimiento lineal, incrementa CWnd = CWnd + Smss * (Smss / CWnd)).
Los problemas, la congestión y SCTP Protocolo SCTP SCTP y la congestión • Formato de Sack Chunk. • Data Chunk identificados por TSN.
Los problemas, la congestión y SCTP Protocolo SCTP SCTP y la congestión • Protocolo de ventana deslizante mediante Advertised Receiver Window Credit. • Usa Slow Start. • Usa Congestion Avoidance. • Mantiene las variables de CWnd y SSThresh para cada dirección destino. • No se retransmiten los TSN confirmados por Gap Ack Block.
Los problemas, la congestión y SCTP Protocolo SCTP Medición del Round Trip Time • Sirve para calcular el Timeout de Retransmisión (RTO) (igual que TCP). • No se toman retransmisiones. • Distintos RTT en LAN y WAN.
Los problemas, la congestión y SCTP Protocolo SCTP Fast Retransmit y Fast Recovery • Algoritmos heurísticos que generan retransmisión antes de Timeout. • Basados en Ack duplicado. • Uso del Gap Ack Block y algoritmo Highest TSN Newly Acked (HTNA). • Se espera hasta DupTresh Ack duplicados para entrar en Fast Retransmit. • Se disminuyen las variables SSThresh y CWnd. • Se retransmite el paquete “perdido”. • Una vez que Fast Retransmit resolvió la perdida de paquetes, Fast Recovery recupera el valor de SSThresh previo, para evitar Slow Start.
Los problemas, la congestión y SCTP Librería SCTP • Desarrollada por Siemens, Univ. Essen y Univ. Münster. • Ejecuta en el espacio de usuario. • Fácil de extemder y depurar. Conceptos generales • API basada en Callbacks. • Uso de socket raw. • Eventos de Timer. • Función bloqueante sctp_eventLoop. • Función no bloqueante sctp_getEvents.
Los problemas, la congestión y SCTP Emulador Emulador de red • Técnica para emular distintas condiciones de red. Métodos de emulación • Introducción de dispositivo dentro de una red. Emulación y simulación • Simulación (basada en un modelo matemático). • Emulación (reproducción precisa de comportamiento).
Trabajos Relacionados Mejoras a SCTP • Implementrar Scalable TCP (mejora al esquema de control de congestión). • Implementar Timestamp en cabecera de SCTP similar a Eifel (detecta más rápido transmisiones espurias). • Implementar F-RTO (modifica comportamiento después de Timeout). • Implementar Rhein cuando hay cambio de caminos (ataca problemas de transmisiones espurias y crecimiento no amigable a TCP del CWnd). • Implementar Changeover aware congestion control (previene crecimiento incorrecto del CWnd eliminando Fast Retransmit espurios). Viene en 2 “sabores”: Conservative CACC (reorden por cambio de camino no incrementa reporte de paquetes perdidos) y Split Fast Retransmit CACC (utiliza SAck selectivamente para aplicar Fast Retransmit).
Trabajos Relacionados Emulación de red • Simuladores de red más populares: NS2, OMNeT++, NetSim, OPNET, Modeler y QualNet. • Umlsim, híbrido entre simulación y emulación. • Dispositivos dedicados: Simena, PacketStorm, Gambit, Anue. Emulación por Software: • Dummynet (FreeBSD, autocontenido). • NIST Net (Linux, dificil de extender). • NetEm (Linux). • WANEM (basado en NetEm).
Algoritmo SCTP-RR • Tres módulos independientes Detección de FastRetransmit y Timeout espurios • Basado en reporte de TSN duplicados del SAck. • Evento de retransmisión. • TRL con TSN retransmitidos • Si para todos los TSN en la TRL llega un reporte de duplicado, entonces la retransmisión fue espuria. • Solo detecta del último evento de retransmisión (por desambiguación). • Basado en 2 condiciones: • Conocer TSN de la última retransmisión (Dos TRL, una para último evento de retransmisión, otra para histórico). • Manatener los TSN posibles de recibir reporte de duplicados (problema de crecimiento infinito de la TRL eliminar TSN menores al Cumulative TSN Ack Point).
Algoritmo SCTP-RR Detección de FastRetransmit y Timeout espurios • Puede ocurrir FastRestransmit dentro de FactRecovery (no se modifican CWnd ni SSThresh, hasta no salir de FactRecovery todo FastRestransmit se considera único evento de retransmisión). • Se ejecuta por cada destino. • Los TSN retransmitidos se guardan en la TRL del destino original. • Por cada TSN duplicado eliminar el TSN de la TRL del destino original. Costo Computacional y de Almacenamiento 3 etapas: • Evento de retransmisión (mover TRL último evento a TRL histórico, mantenimiento de TRL histórico), costo lineal. • Retransmisión de TSN (agregar TSN a TRL), costo constante. • Recepción reporte TSN duplicado (eliminar TSN de TRL), costo lineal.
Algoritmo SCTP-RR Recovery • Ante Timeout y Fast Retransmit se disminuyen el SSThresh y CWnd (costo de Timeout más caro que costo de Fast Retransmit). • Almacenar valores de SSThresh y CWnd antes de evento de retransmisión (por dirección). • Si el evento fue espurio, actualizar SSThresh al valor previo de CWnd para entrar en Slow Start. • En pocos RTT se recuperar CWnd y el rendimiento: • Sin el algoritmo SSThresh = CWnd previo / 2 • Con el algoritmo SSThresh = CWnd previo • Retransmisiones anidadas reduciran SSThresh y CWnd. • Se restaurarán las variables del último evento de retransmisión. Costo computacional y de almacenamiento • 8 bytes. • Costo constante.
Algoritmo SCTP-RR Adaptación dinámica del DupThresh • Para evitar Fast Retransmit espurios, Dupthresh debe ser mayor que la media de reportes de TSN faltantes (generados por reorden). • Contador de reporte de faltantes (CRF) por cada TSN transmitido. • Fast Retransmit retransmitirá los TSN con CRF mayor que 3. • Fijar el DupThresh según reorden de la red trae problemas: • Si el Dupthresh es alto (disparará Timeout cuando Fast Retransmit lo habría corregido). • Si el Dupthresh es bajo (disparará muchos Fast Retransmit). Medición y seguimiento del contador de reporte de faltantes • Uso de histograma de CRF de TSN retransmitidos. • Agregar el TSN al histograma si: • el CRF del TSN es mayor o igual que 4. • se recibió un reporte de TSN duplicado (el TSN no se perdió). • el TSN pertenece al último evento de retransmisión.
Algoritmo SCTP-RR Adaptación dinámica del DupThresh Actualización del DupThresh • El histograma guarda la distribución del reorden de la red. • No variar el DupThresh (ejemplo del 90%), sino utilizar un percentil variable. • Uso de “percentil para evitar Fast Restransmit” (PEF) para variar el DupThresh según corresponda. • Cambiar el PEF según costo de: • Timeout espurio: W * (T / R + log2(W) - 2) + 1. • Fast Restransmit espurio: (k * (W - k + 1) / 2). • W = Cantidad máxima de paquetes que se pueden enviar en un momento dado. • R = Smoothed RTT. • T = Duración de la retransmisión de paquetes durante un Timeout. • k = Duración de Fast Retrsnamit espurio divido por R
Algoritmo SCTP-RR Adaptación dinámica del DupThresh Actualización del PEF • Sea S la medida axiomática (un valor fijo) para adaptar el PEF. • S debe ser pequeño para un ajuste fino del Dupthresh. • Después de un Fast Transmit espurio incrementar PEF en S. • Después de un Timeout espurio decrementar PEF en (Costo (Timeout) / Costo(Fast Retransmit)) * S . Costo computacional y de almacenamiento • 8K por histograma de CRF por dirección. • Mantenimiento del histograma de CRF (agregar CRF y eliminar CRF según su Timestamp) costo lineal. • Cálculo del PEF (según funciones de costos) costo constante. • Actualización del DupThresh (calcular percentil según PEF, ordenar histograma según CRF con quicksort costo [n * log(n)], actualizar Dupthresh), costo constante.
Las herramientas de Linux Disciplina de colas (qdics) Colas y disciplinas de cola • Algoritmo que controla la cola de un dispositivo (de entrada o salida). • Shaping/modelado de tráfico solo en el egreso. Disciplinas de cola simples, sin clases • Aceptan datos y se limitan a reordenarlos, retrasarlos, descartarlos, etc. Ajustan el tráfico de una interfaz entera. Disciplinas de cola con clases • Clasifican el tráfico entrante para dar tratamiento especial en una subclase. Usan filtros para tomar decisión de encolado.
Las herramientas de Linux NetEm • Emula condiciones de red (demora, perdida, duplicación, corrupción y reorden). • Disciplina de cola sin clases. • Tiene dos colas internas TFIFO, ordenadas por Timestamp de los paquetes. • Se agrego la opción fixed_delay. tc • Pertenece al paquete Iproute2. • Permite configurar qdisc. • Se agrego la opción fixed_delay.
Emulando condiciones de red Reordenamiento de paquetes • Demora promedio de X ms y un gap de Y paquetes. • Demora promedio de X ms y un desvío estándar Y ms. • Demora promedio de X ms y un porcentaje Y % de reorden. Cambios bruscos de Round Trip Time • Determinística y controlada. • Aleatoria o no determinística Integrando las herramientas • tc qdisc add dev eth1 root netem limit 999999 \ delay 15ms 5ms 90% reorder 90% fixed_delay 50ms
Experimentos Configuración del hardware Escenarios • Dos objetivos: • Medir el rendimiento en tiempo. • Medir el rendimiento en bytes por segundo. • Para cada objetivo hubieron tres tipos de condiciones.
Experimentos Escenarios • Demora fija más demora variable por porcentaje de reorden: Demora fija de 50, 100, 200 y 300 ms, y el 0, 5, 10 y 15 % con demora variable de 100, 200 y 300 ms. • Ejemplo demora fija de 200 ms más demora variable de 100 ms para porcentajes de reorden.
Experimentos Escenarios • Demora fija más demora variable: Demora fija de 100, 200, 300 ms, más variable de 50, 100, 150 ± 50, 100, 150 ms. • Ejemplo demora fija de 300 ms más demora variable de 100 ms ± varianza del Jitter.
Experimentos Escenarios • Demoras fijas por cambio de tiempo: cada 250, 500, 750 y 1000 ms cambio de demora fija de 1 ms a 200 ms, 100 ms a 300 ms y de 200 ms a 400 ms. • Ejemplo cambio de tiempo de cada 500 ms para distintos RTT.
Experimentos Análisis • Medición del rendimiento en tiempo. • Medición del rendimiento en bytes por segundo. • Nivelación de los gráficos. • Mejor rendimiento de SCTP-RR sobre SCTP.
Conclusiones • Algoritmo para mejorar rendimiento de SCTP ante cambios bruscos de RTT y reordenamiento de paquetes. • Módulo de detección de Timeout y Fast Retransmit espurios. • Módulo de recupero de variables de control de congestión. • Módulo de adaptación dinámica del DupThresh. • Implementación sobre librería de SCTP. • Modificaciones a NetEm y tc. • Emulación de distintas condiciones de red. • Mejora del rendimiento.
Trabajo Futuro • Realizar distintas aplicaciones (servidor Web, FTP, etc.) • Uso de hardware especializado. • Implementar sobre LKSCTP.