Mecanismos de Control de Congestión en TCP y Gestión de Colas: Evitando la Congestión en Redes

Gestión de Colas y Control de Congestión en TCP

Control de Congestión en TCP: Congestion Avoidance

El objetivo principal del control de congestión es evitar que las interfaces o colas se congestionen. Está diseñado especialmente para TCP, ya que este protocolo reacciona ante la congestión reduciendo su tasa de envío. A continuación, un breve repaso sobre el mecanismo básico de Congestion Avoidance en TCP:

Slow Start

  • TCP puede tener una cantidad de datos enviados sin confirmar limitada por la ventana de control de flujo (win).
  • Inicialmente, TCP desconoce las condiciones de la red y comienza enviando de forma conservadora (¿1 paquete?).
  • cwnd = 1 (ventana de congestión).
  • La cantidad de datos enviados sin confirmar es el mínimo entre cwnd y la ventana de control de flujo.
  • Si los datos llegan correctamente (se recibe ACK), TCP prueba a enviar más datos de golpe (aumentar la cantidad de datos «en vuelo»).
  • Para ello, aumenta cwnd.
Slow Start (continuación)
  • TCP incrementa cwnd en, como mucho, SMSS por cada ACK que confirma nuevos datos.
  • Esto se mantiene hasta que se alcanza o supera ssthresh (slow start threshold) o se detecta una pérdida.
  • ssthresh comienza siendo un valor grande.

Tiempo | Número de segmentos enviados (IW=1, no delayed-ack) | RTT | cwnd

—|—|—|—

RTT | 1 | | 1

RTT | 2 | | 2

RTT | 3 | | 3

RTT | 4 | | 4

RTT | 8 | | 8

Congestion Avoidance

  • Inicialización: cwnd=1, ssthresh=65535
  • Slow Start (…)
  • Si se detecta una pérdida:
    • ssthresh = mín( cwnd, win )/2 o ssthresh = máx (FlightSize/2, 2) (…)
    • Por Timeout: cwnd=1, comienza Slow-start de nuevo (…)
    • Nuevos datos son confirmados:
      • Si cwnd < ssthresh: Congest. avoidance, cwnd+=1/cwnd (crecimiento lineal) (…)
  • ssthresh=n/2

Detección de pérdida | tiempo | n | cwnd

—|—|—|—

TCP Tahoe | | |

Gestión Pasiva de Colas (Passive Queue Management)

Drop-Tail (la más habitual)

  • Simple
  • Descarta un paquete independientemente de su importancia
  • Controla la congestión, pero no la evita
  • (…)
Drop-Tail (continuación)
  • TCP puede enviar ráfagas (limitadas por el tamaño de la ventana).
  • Si una ráfaga llega a una cola casi llena, se perderán varios paquetes.
  • Ante pérdidas, TCP reduce la ventana de congestión y, por lo tanto, la velocidad de envío.
  • Varias conexiones pueden entrar simultáneamente en este proceso de control de congestión, reduciendo en gran medida el throughput global.
  • Introduce sincronización global con varias conexiones TCP en el enlace.
  • (…)
Drop-Tail (la más habitual)
  • Unos pocos flujos pueden monopolizar el recurso.
  • La cola se mantiene llena por largos periodos, impidiendo la absorción de ráfagas.
  • Colas llenas no llevan a mayor throughput, sino a menor throughput.
  • Colas poco ocupadas llevan a mayor throughput y menor retardo.

Head-drop

  • Tira los paquetes que más tiempo llevan en el buffer.
  • Probablemente ya han sido retransmitidos (TCP).
  • Probablemente ya llegan tarde (UDP/RTP).
  • Controla la congestión, pero no la evita.
  • Evita que unos pocos flujos monopolicen el recurso.
  • Posible sincronización.

Random-Drop (ante cola llena)

  • Se puede reducir la sincronización global, pero no controlar UDP.
  • Evita que unos pocos flujos monopolicen el recurso.
  • Controla la congestión, pero no la evita.

AQM – Active Queue Management

  • Pensado para TCP, no controla UDP igual de bien.
  • Evita sincronizaciones, menores retardos y fluctuaciones.
  • TCP regula su tasa al detectar pérdidas (Congestion avoidance).

Active Queue Management – Early-Random-Drop (cola no llena)

  • Si la cola excede un nivel, se tira cada paquete que llega con una probabilidad fija (p).

Active Queue Management – Weighted Tail Drop

  • Se asignan umbrales en la cola a diferentes clases de tráfico.
  • Cuando se alcanza el umbral U1, se descartan los paquetes que lleguen de la clase 1.
  • Cuando se alcanza el umbral U2, se descartan también los paquetes que lleguen de la clase 2.
  • De la tercera clase se descartarán solo cuando se llene la cola.

U2 U1

Active Queue Management – RED (Random Early Detection)

  • «Recommendations on Queue Management and Congestion Avoidance in the Internet»
  • Descartar paquetes probabilísticamente antes de la congestión.
  • Evalúa la ocupación media del buffer.
  • Cálculo mediante exponential moving average.
  • Para un parámetro w bajo, la media sigue los cambios rápidos del valor instantáneo.

Active Queue Management – RED (Random Early Detection) (continuación)

  • Difícil medir sus beneficios.
  • Con mala configuración, podría comportarse peor que Drop-Tail.
  • Se han propuesto bastantes más algoritmos de AQM.
  • RED es el más extendido en implementaciones.

WRED (Weighted RED)

  • Emplea un Minth y Maxth diferente para diferentes clases de tráfico.
  • Mayor cuanto mayor es el valor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.