La congestión de la red en las redes de datos y la teoría de las colas es la reducción de la calidad del servicio que se produce cuando un nodo o enlace de red transporta más datos de los que puede manejar. Los efectos típicos incluyen el retraso en la cola , la pérdida de paquetes o el bloqueo de nuevas conexiones. Una consecuencia de la congestión es que un aumento incremental en la carga ofrecida conduce a un pequeño aumento o incluso a una disminución del rendimiento de la red . [1]
Los protocolos de red que utilizan retransmisiones agresivas para compensar la pérdida de paquetes debido a la congestión pueden aumentar la congestión, incluso después de que la carga inicial se haya reducido a un nivel que normalmente no habría inducido la congestión de la red. Tales redes exhiben dos estados estables bajo el mismo nivel de carga. El estado estable con bajo rendimiento se conoce como colapso congestivo .
Las redes utilizan técnicas de control y prevención de la congestión para tratar de evitar el colapso. Estos incluyen: retroceso exponencial en protocolos como CSMA / CA en 802.11 y el CSMA / CD similar en el Ethernet original , reducción de ventana en TCP y cola justa en dispositivos como enrutadores y conmutadores de red . Otras técnicas que abordan la congestión incluyen esquemas de prioridad que transmiten algunos paquetes con mayor prioridad antes que otros y la asignación explícita de recursos de red a flujos específicos mediante el uso del control de admisión .
Capacidad de la red
Los recursos de red son limitados, incluido el tiempo de procesamiento del enrutador y el rendimiento del enlace . La contención de recursos puede ocurrir en las redes en una serie de circunstancias comunes. Una LAN inalámbrica se llena fácilmente con una sola computadora personal. [2] Incluso en redes informáticas rápidas, la red troncal puede congestionarse fácilmente con unos pocos servidores y PC cliente. Los ataques de denegación de servicio por parte de botnets son capaces de llenar incluso los enlaces de redes troncales de Internet más grandes, generando una congestión de red a gran escala. En las redes telefónicas, un evento de llamada masiva puede abrumar los circuitos telefónicos digitales.
Colapso congestivo
El colapso congestivo (o colapso por congestión) es la condición en la que la congestión impide o limita la comunicación útil. El colapso de la congestión generalmente ocurre en puntos de estrangulamiento en la red, donde el tráfico entrante excede el ancho de banda saliente. Los puntos de conexión entre una red de área local y una red de área extensa son puntos de estrangulamiento comunes. Cuando una red se encuentra en esta condición, se establece en un estado estable donde la demanda de tráfico es alta pero hay poco rendimiento útil disponible, durante el cual se producen retrasos y pérdidas de paquetes y la calidad del servicio es extremadamente deficiente.
El colapso congestivo se identificó como un posible problema en 1984. [3] Se observó por primera vez en Internet en octubre de 1986, [4] cuando la red troncal de fase I de NSFnet cayó tres órdenes de magnitud de su capacidad de 32 kbit / sa 40 bit / s, [ citación necesaria ] que continuó hasta nodos finales comenzaron a aplicar Van Jacobson y Sally Floyd 's control de la congestión entre 1987 y 1988. [5] Cuando más paquetes se enviaron de lo que podría ser manejada por los routers intermedios, los routers intermedios desechados muchos paquetes, esperando que los puntos finales de la red retransmitan la información. Sin embargo, las primeras implementaciones de TCP tenían un comportamiento de retransmisión deficiente. Cuando ocurrió esta pérdida de paquetes, los puntos finales enviaron paquetes adicionales que repetían la información perdida, duplicando la velocidad de entrada.
Control de la congestión
El control de la congestión modula la entrada de tráfico en una red de telecomunicaciones para evitar el colapso congestivo resultante de la suscripción excesiva. Por lo general, esto se logra reduciendo la tasa de paquetes. Mientras que el control de congestión evita que los remitentes abrumen la red , el control de flujo evita que el remitente abrume al receptor .
Teoría del control de la congestión
La teoría sobre el control de la congestión fue pionera en Frank Kelly , quien aplicó la teoría microeconómica y la teoría de optimización convexa para describir cómo los individuos que controlan sus propias tarifas pueden interactuar para lograr una asignación óptima de tarifas en toda la red. Ejemplos de asignación de tasa óptima son la asignación justa máximo-mínimo y la sugerencia de Kelly de una asignación proporcionalmente justa , aunque son posibles muchas otras.
Dejar ser la tasa de flujo , ser la capacidad de enlace , y ser 1 si fluye usa enlace y 0 en caso contrario. Dejar, y ser los vectores y la matriz correspondientes. Dejarser una función creciente, estrictamente cóncava , llamada utilidad , que mide cuánto beneficio obtiene un usuario al transmitir a una velocidad. La asignación de tarifa óptima entonces satisface
- tal que
El dual de Lagrange de este problema se desacopla, de modo que cada flujo establece su propia tasa, basada únicamente en un precio señalado por la red. Cada capacidad de enlace impone una restricción, que da lugar a un multiplicador de Lagrange ,. La suma de estos multiplicadores, es el precio al que responde el flujo.
El control de la congestión se convierte entonces en un algoritmo de optimización distribuido. Muchos algoritmos actuales de control de congestión se pueden modelar en este marco, con siendo la probabilidad de pérdida o el retraso en la cola en el enlace . Una debilidad importante es que asigna el mismo precio a todos los flujos, mientras que el control de flujo de ventana deslizante provoca ráfagas que hacen que diferentes flujos observen diferentes pérdidas o retrasos en un enlace determinado.
Clasificación de algoritmos de control de congestión
Entre las formas de clasificar los algoritmos de control de congestión se encuentran:
- Por tipo y cantidad de comentarios recibidos de la red: Pérdida; demora; señales explícitas de un bit o de varios bits
- Por capacidad de implementación incremental: solo el remitente necesita modificaciones; el remitente y el receptor necesitan modificación; solo el enrutador necesita modificaciones; el remitente, el receptor y los enrutadores necesitan modificaciones.
- Por aspecto de rendimiento: redes de productos con alto retardo de ancho de banda; enlaces con pérdida; justicia; ventaja de los flujos cortos; enlaces de tasa variable
- Por criterio de equidad: equidad máxima-mínima; proporcionalmente justo; retraso controlado
Mitigación
Se han inventado mecanismos para evitar la congestión de la red o para hacer frente a un colapso de la red:
- Programador de red : gestión de colas activa que reordena o descarta selectivamente paquetes de red en presencia de congestión.
- Notificación de congestión explícita : una extensión de los protocolos de comunicaciones IP y TCP que agrega un mecanismo de control de flujo
- Control de congestión de TCP : diversas implementaciones de esfuerzos para lidiar con la congestión de la red
El comportamiento correcto del punto final suele ser repetir la información eliminada, pero ralentizar progresivamente la tasa de repetición. Siempre que todos los puntos finales hagan esto, la congestión se eleva y la red reanuda el comportamiento normal. [ cita requerida ] Otras estrategias, como el inicio lento, aseguran que las nuevas conexiones no abrumen al enrutador antes de que se inicie la detección de congestión.
Los mecanismos comunes para evitar la congestión del enrutador incluyen la puesta en cola justa y otros algoritmos de programación , y la detección temprana aleatoria (RED) donde los paquetes se eliminan al azar cuando se detecta la congestión. Esto activa proactivamente los puntos finales para reducir la transmisión antes de que se produzca el colapso de la congestión.
Algunos protocolos de extremo a extremo están diseñados para comportarse bien en condiciones de congestión; TCP es un ejemplo bien conocido. Las primeras implementaciones de TCP para manejar la congestión se describieron en 1984, [6] pero la inclusión de Van Jacobson de una solución de código abierto en Berkeley Standard Distribution UNIX (" BSD ") en 1988 proporcionó por primera vez un buen comportamiento.
UDP no controla la congestión. Los protocolos construidos sobre UDP deben manejar la congestión de forma independiente. Los protocolos que transmiten a una velocidad fija, independientemente de la congestión, pueden resultar problemáticos. Los protocolos de transmisión en tiempo real, incluidos muchos protocolos de voz sobre IP , tienen esta propiedad. Por lo tanto, se deben tomar medidas especiales, como la calidad del servicio , para evitar que los paquetes se caigan en presencia de congestión.
Práctica prevención de la congestión de la red
Los protocolos orientados a la conexión , como el protocolo TCP ampliamente utilizado , vigilan la pérdida de paquetes o el retraso en la cola para ajustar su velocidad de transmisión. Varios procesos para evitar la congestión de la red admiten diferentes compensaciones. [7]
Evitación de la congestión de TCP / IP
El algoritmo de prevención de la congestión de TCP es la base principal para el control de la congestión en Internet. [8] [9] [10] [11] [12]
Los problemas ocurren cuando los flujos TCP concurrentes experimentan caídas de cola , especialmente cuando hay un bloque de búfer . Esta pérdida de paquetes retrasada interfiere con la prevención automática de congestión de TCP. Todos los flujos que experimentan esta pérdida de paquetes comienzan un reentrenamiento de TCP en el mismo momento; esto se denomina sincronización global de TCP .
Gestión de colas activa
La gestión de cola activa (AQM) es el reordenamiento o la eliminación de paquetes de red dentro de un búfer de transmisión que está asociado con un controlador de interfaz de red (NIC). Esta tarea la realiza el programador de la red .
Detección temprana aleatoria
Una solución es utilizar la detección temprana aleatoria (RED) en la cola de salida del equipo de red. [13] [14] En puertos de hardware de red con más de una cola de salida, se puede utilizar la detección temprana aleatoria ponderada (WRED).
RED indica indirectamente al emisor y al receptor de TCP descartando algunos paquetes, p. Ej., Cuando la longitud media de la cola es superior a un umbral (p. Ej., 50%) y elimina de forma lineal o cúbica más paquetes, [15] hasta, p. Ej., 100%, a medida que la cola se llena más .
Detección temprana aleatoria robusta
Se propuso el algoritmo robusto de detección temprana aleatoria (RRED) para mejorar el rendimiento de TCP contra los ataques de denegación de servicio (DoS), en particular los ataques de denegación de servicio de baja tasa (LDoS). Los experimentos confirmaron que los algoritmos tipo RED eran vulnerables a los ataques LDoS debido al tamaño de la cola TCP oscilante causado por los ataques. [dieciséis]
WRED basado en flujo
Algunos equipos de red están equipados con puertos que pueden seguir y medir cada flujo y, por lo tanto, pueden señalar un flujo de ancho de banda demasiado grande de acuerdo con alguna política de calidad de servicio. Luego, una política podría dividir el ancho de banda entre todos los flujos según algunos criterios. [17]
Notificación de congestión explícita
Otro enfoque consiste en utilizar la notificación explícita de congestión (ECN). [18] ECN se usa solo cuando dos hosts señalan que quieren usarlo. Con este método, se utiliza un bit de protocolo para señalar una congestión explícita. Esto es mejor que la notificación de congestión indirecta señalada por la pérdida de paquetes por los algoritmos RED / WRED, pero requiere el apoyo de ambos hosts. [19] [13]
Cuando un enrutador recibe un paquete marcado como compatible con ECN y el enrutador anticipa la congestión, establece la bandera ECN, notificando al remitente de la congestión. El remitente debe responder disminuyendo su ancho de banda de transmisión, por ejemplo, disminuyendo su velocidad de envío reduciendo el tamaño de la ventana TCP o por otros medios.
Dar forma a la ventana TCP
Se puede evitar la congestión de manera eficiente reduciendo el tráfico. Cuando una aplicación solicita un archivo, gráfico o página web de gran tamaño, normalmente anuncia una ventana de entre 32K y 64K. Esto da como resultado que el servidor envíe una ventana completa de datos (asumiendo que el archivo es más grande que la ventana). Cuando muchas aplicaciones solicitan descargas simultáneamente, estos datos pueden crear un punto de congestión en un proveedor ascendente. Al reducir la publicidad de la ventana, los servidores remotos envían menos datos, reduciendo así la congestión. [20] [21]
ECN hacia atrás
La ECN hacia atrás (BECN) es otro mecanismo de notificación de congestión propuesto. Utiliza mensajes de extinción de origen ICMP como un mecanismo de señalización IP para implementar un mecanismo ECN básico para redes IP, manteniendo las notificaciones de congestión en el nivel IP y sin necesidad de negociación entre los puntos finales de la red. Las notificaciones de congestión efectivas se pueden propagar a los protocolos de la capa de transporte, como TCP y UDP, para los ajustes apropiados. [22]
Efectos secundarios de evitar el colapso congestivo
Enlaces de radio
Los protocolos que evitan el colapso congestivo generalmente asumen que la pérdida de datos se debe a la congestión. En las redes cableadas, los errores durante la transmisión son raros. WiFi , 3G y otras redes con una capa de radio son susceptibles a la pérdida de datos debido a interferencias y pueden experimentar un rendimiento deficiente en algunos casos. Las conexiones TCP que se ejecutan sobre una capa física basada en radio ven la pérdida de datos y tienden a creer erróneamente que se está produciendo una congestión.
Conexiones de corta duración
El protocolo de inicio lento funciona mal para conexiones cortas. Los navegadores web más antiguos creaban muchas conexiones de corta duración y abrían y cerraban la conexión para cada archivo. Esto mantuvo a la mayoría de las conexiones en el modo de inicio lento. El rendimiento inicial puede ser deficiente y muchas conexiones nunca salen del régimen de inicio lento, lo que aumenta significativamente la latencia. Para evitar este problema, los navegadores modernos abren múltiples conexiones simultáneamente o reutilizan una conexión para todos los archivos solicitados de un servidor en particular.
Control de admisión
El control de admisión requiere que los dispositivos reciban permiso antes de establecer nuevas conexiones de red. Si la nueva conexión corre el riesgo de crear congestión, se puede denegar el permiso. Un ejemplo de esto es el uso de Oportunidades de transmisión libre de contención (CFTXOP) en el estándar ITU-T G.hn , que proporciona redes de área local de alta velocidad (hasta 1 Gbit / s) a través de diferentes cables (líneas eléctricas, teléfonos líneas y cables coaxiales).
Ver también
- Gestión del ancho de banda : proceso de medición y control de las comunicaciones en un enlace de red, para evitar llenar el enlace a su capacidad o sobrecargar el enlace.
- Bufferbloat : congestión causada por un almacenamiento en búfer excesivo de paquetes
- Falla en cascada : sistema de partes interconectadas en el que la falla de una o pocas partes puede desencadenar la falla de otras.
- Intercambio de estrangulamiento
- Erlang (unidad)
- Equidad máxima-mínima
- Síndrome del aprendiz de brujo : una falla en el protocolo de red en las versiones originales de TFTP
- Control de congestión de TCP : técnicas para mejorar el rendimiento de la red sobre el protocolo de control de transmisión
- Ingeniería de teletrafico
- Thrashing : la computadora intercambia datos constantemente entre la memoria y el almacenamiento, lo que deja poca capacidad para el procesamiento productivo
- Conformación del tráfico : técnica de gestión del ancho de banda
- Fiabilidad (redes informáticas)
Referencias
- ↑ (Al-Bahadili, 2012, p. 282) Al-Bahadili, H. (2012). Simulación en diseño y modelado de redes informáticas: uso y análisis . Hershey, PA: IGI Global.
- ↑ den Hartog, F., Raschella, A., Bouhafs, F., Kempker, P., Boltjes, B. y Seyedebrahimi, M. (2017, noviembre). Un camino para resolver la Tragedia Wi-Fi de los Comunes en bloques de apartamentos . En 2017, 27a Conferencia Internacional de Aplicaciones y Redes de Telecomunicaciones (ITNAC) (págs. 1-6). IEEE.
- ^ RFC 896
- ^ Fall, KR; Stevens, WR (2011). TCP / IP Illustrated, Volumen 1: Los protocolos (2 ed.). Educación Pearson. pag. 739. ISBN 9780132808187.
- ^ Hafner, Katie. "Sally Floyd, que ayudó a que las cosas funcionen sin problemas en línea, muere a los 69" . New York Times . Consultado el 5 de septiembre de 2019 .
- ^ Vinton G. Cerf; Robert E. Kahn (mayo de 1974). "Un protocolo para la intercomunicación de red de paquetes" (PDF) . Transacciones IEEE sobre comunicaciones . 22 (5): 637–648. doi : 10.1109 / tcom.1974.1092259 . Archivado desde el original (PDF) el 4 de marzo de 2016.
- ^ Lee, BP; Balan, RK; Jacob, L .; Seah, WKG; Ananda, AL (2000), "Túneles TCP: Evitar el colapso de la congestión", Actas 25ª Conferencia anual IEEE sobre redes informáticas locales. LCN 2000 , págs. 408–417, doi : 10.1109 / LCN.2000.891077 , ISBN 0-7695-0912-6, S2CID 34447400
- ^ Van Jacobson , Michael J. Karels . Evitación y control de la congestión (1988). Actas del Simposio Sigcomm '88 , vol. 18 (4): págs. 314–329. Stanford, CA. Agosto de 1988. Este artículo originó muchos de los algoritmos para evitar la congestión utilizados en TCP / IP.
- ^ RFC 2001 - Algoritmos de inicio lento, prevención de congestión, retransmisión rápida y recuperación rápida de TCP
- ^ RFC 2581 - Control de congestión de TCP
- ^ RFC 3390 - TCP aumentando la ventana inicial de TCP
- ^ Explicación de la prevención de la congestión de TCP mediante un diagrama de secuencia
- ^ a b Sally Floyd: Gestión de colas RED (detección temprana aleatoria)
- ^ Sally Floyd, Van Jacobson. Pasarelas de detección temprana aleatorias para evitar la congestión (1993). Transacciones IEEE / ACM sobre redes , vol. 1 (4): págs. 397–413. Puertas de enlace de detección temprana aleatoria (RED) inventadas.
- ^ Un diseño de función RED analítica que garantiza un comportamiento estable del sistema , CiteSeerX 10.1.1.105.5995 ,
... La ventaja de esta función radica no solo en evitar oscilaciones pesadas, sino también en evitar la subutilización del enlace con cargas bajas. La aplicabilidad de la función derivada es independiente del rango de carga, no se deben ajustar parámetros. En comparación con la función de caída lineal original, la aplicabilidad se extiende por mucho ... Nuestro ejemplo con parámetros de sistema realistas da una función de aproximación del cúbico del tamaño de la cola ...
- ^ Zhang, Changwang; Yin, Jianping; Cai, Zhiping; Chen, Weifeng (2010). "RRED: algoritmo RED robusto para contrarrestar ataques de denegación de servicio de baja tasa" (PDF) . Cartas de comunicaciones de IEEE . IEEE . 14 (5): 489–491. doi : 10.1109 / LCOMM.2010.05.091407 . S2CID 1121461 .
- ^ "Resumen de prevención de la congestión" . Cisco Systems . Consultado el 7 de agosto de 2020 .
- ^ RFC 3168 - La adición de notificación explícita de congestión (ECN) a IP
- ^ Estudio comparativo de RED, ECN y TCP Rate Control (1999)
- ^ Publicidad de ventana generalizada para TCP CongestionControl (PDF) , consultado el 13 de noviembre de 2020
- ^ Pop, O .; Moldován, I .; Simon, Cs .; Bíró, J .; Koike, A .; Ishii, H. (2000), "Advertised Window-Based TCP Flow Control in Routers", Telecommunication Network Intelligence , págs. 197–218, doi : 10.1007 / 978-0-387-35522-1_12 , ISBN 978-1-4757-6693-6
- ^ Una propuesta de ECN hacia atrás para el Protocolo de Internet
- "Implementación de IP y MPLS QoS para redes multiservicio: teoría y práctica" por John Evans, Clarence Filsfils (Morgan Kaufmann, 2007, ISBN 0-12-370549-5 )
- RFC 2914 - Principios de control de la congestión, Sally Floyd, septiembre de 2000
- RFC 896 - "Control de congestión en IP / TCP", John Nagle, 6 de enero de 1984
- Introducción a la prevención y el control de la congestión , Van Jacobson y Michael J. Karels, noviembre de 1988
Bibliografía
- John Evans; Clarence Filsfils (2007). Implementación de QoS IP y MPLS para redes multiservicio: teoría y práctica . Morgan Kaufmann. ISBN 978-0-12-370549-5.
enlaces externos
- Nagle, J. RFC 896: Control de congestión en redes IP / TCP (1984)
- Floyd, S. RFC 2914: Principios de control de la congestión (2000)
- Floyd, S. y K. Fall, Promoción del uso del control de congestión de extremo a extremo en Internet (Transacciones IEEE / ACM sobre redes, agosto de 1999)
- Sally Floyd, Sobre la evolución del control de la congestión de extremo a extremo en Internet: una visión idiosincrásica (Taller de IMA sobre fenómenos de escala en las redes de comunicación, octubre de 1999) ( formato pdf )
- Término de vinculación: hacer cola
- Pierre-Francois Quet, Sriram Chellappan, Arjan Durresi, Mukundan Sridharan, Hitay Ozbay, Raj Jain, "Directrices para optimizar la ECN multinivel, utilizando el modelo TCP basado en el flujo de fluidos"
- Sally Floyd, Ratul Mahajan, David Wetherall: RED-PD: RED con caída preferencial
- Un simulador de RED simple genérico para fines educativos por Mehmet Suzen
- Enfoques para el control de la congestión en redes de paquetes
- Papeles en control de congestión
- Página de inicio de detección temprana aleatoria
- Página de inicio de notificación de congestión explícita
- Página de inicio de TFRC
- Página de inicio de AIMD-FC
- [enlace muerto permanente ] Simulación de control de congestión TCP: recuperación rápida
- Publicaciones recientes sobre ataques de denegación de servicio (DoS) de baja tasa