La Congestión de redes es el fenómeno producido cuando a la red (o parte de ella) se le ofrece más tráfico del que puede cursar.
Causas de la Congestión
Hay varias causas de congestión. Las más importantes son:
La Memoria insuficiente de los conmutadores.
Los paquetes se reciben demasiado deprisa para ser procesados (lo que produce que se llene la memoria de entrada). Además puede ser que en la memoria de salida haya demasiados paquetes esperando ser asentidos, entonces se llena memoria de salida.
Insuficiente CPU en los nodos.
Puede que el nodo sea incapaz de procesar toda la información que le llega, con lo que hará que se saturen las colas.
Velocidad insuficiente de las líneas.
Control de una Congestión
Comprende todo un conjunto de técnicas para detectar y corregir los problemas que surgen cuando no todo el tráfico de una red puede ser cursado.
Gestión de tráfico
El control de admisión se encarga de aceptar o declinar una petición de establecimiento de conexión. El control de flujo se encarga de ajustar la tasa de emisión de células en función de las características de la red.
La función de policía vela por el cumplimiento del perfil de tráfico contratado. La gestión de memoria decide las células a descartar en caso de desbordamiento de los buffers que hay en los conmutadores.
El planificador de células se encarga de decidir el orden de envío de células. Para controlar la congestión, se utiliza un sistema de créditos negociados entre emisor y receptor. Es el receptor el encargado de avisar al emisor para que cese en los envíos o los reanude.
Gestión de tráfico ABR
Para acondicionar la velocidad del tráfico se utilizan células especiales RM. El control es retroalimentado dinámicamente entre emisor y receptor. Se suele utilizar un algoritmo para el control de tráfico. Este algoritmo se llama GCRA. Es similar al cubo de fichas.
Mecanismos de Control de una Congestión
El problema del control de congestión puede enfocarse matemáticamente desde el punto de vista de la teoría de control de procesos, y según esto pueden proponerse soluciones en bucle abierto y en bucle cerrado.
Soluciones en bucle abierto
También llamadas soluciones pasivas. Combaten la congestión de las redes mediante un adecuado diseño de las mismas. Existen múltiples variables con las que el diseñador puede jugar a la hora de diseñar la red. Estas variables influirán en el comportamiento de la red frente a la congestión. Las resumiremos en función del nivel del modelo OSI al que hacen referencia:
· Nivel de enlace.
· Nivel de Red.
· Nivel de Transporte.
Análogo al nivel de enlace, pero entre
sistemas finales.Tienen tres fases:
a) Monitorización de parámetros. Se vigilan los siguientes parámetros:
1. Ocupación de los enlaces y de los
buffers (colas de espera en los nodos).2. Porcentaje de descartes.
3. Número de retransmisiones.
4. Retardos y jitters.
Los jitters son oscilaciones de la separación temporal entre paquetes. En aplicaciones que requieren sincronización (videoconferencia, sincronizar audio con vídeo), es muy importante que esas oscilaciones sean pequeñas.
b) Reacción: envío de información a los puntos necesarios. La comunicación se realiza gracias a:
1. Paquetes especiales.
No están sometidos a control de congestión y se saltan las colas de espera en los nodos. Los envía el nodo que, gracias a la monitorización, ha detectado la congestión.
2. Bits de cabecera.
En los paquetes enviados, indico en la cabecera que empieza a haber congestión. (Ejemplo: Frame Relay).
3. Información específica.
Si se recibe una alerta de congestión (mediante bits de cabecera de paquetes que circulan por la red), se solicita más información.
c) Ajuste del sistema. Hay varias medidas:
1. Reducir la velocidad de envío
2. Control de acceso. No se permiten más conexiones.
3. Tirar paquetes. Controlar ráfagas de paquetes que llegan.
Se describen dos algoritmos en bucle cerrado: el algoritmo de descarte de paquetes, y un algoritmo de paquetes reguladores, así como un algoritmo en bucle abierto llamado mecanismo de Traffic Shaping.
Sin embargo, cada línea necesita al menos una (o más) posiciones de memoria para gestionar información relevante, tal como asentimientos, que permite la liberación de posiciones de memoria ocupadas por paquetes que estaban esperando por si necesitaban retransmitirse.
Si a la línea llegan datos (no asentiminentos u otra información relevante) y el buffers de salida de la línea correspondiente está lleno, se descarta el paquete. Hay varias formas de hacer la asignación de buffers:
a) En base al uso.
No es muy eficiente, porque cuando una línea se empieza a cargar acapara todos los recursos.
b) Asignación fija.
Tampoco es muy buena, ya que desaprovecha recursos.
c) Asignación subóptima (de Irland).
Algoritmo de paquetes reguladores
En terminología inglesa, al paquete regulador se le llama
choke packet. Se hace en bucle cerrado. Asocia un peso a cada línea que cambia con el tiempo.Si el peso supera un cierto umbral, se pone la línea en estado de alerta y se considera que puede haber congestión.
Si pasa un determinado tiempo sin recibir notificaciones de congestión, se vuelve a subir el flujo que puede cursar el origen. Si por el contrario se supera un umbral mayor, se pasa directamente a hacer descarte de paquetes.
Variaciones de este algoritmo:
- Pueden mandarse paquetes reguladores con información de estado (grave, muy grave, etc.).
- En vez de monitorizar las líneas de salida pueden medirse otros parámetros, tales como el tamaño de las colas en los nodos.