Protocolo TCP: Control de Flujo y Control de Congestión en Redes

Informática y Telecomunicaciones8,54 KB

Transporte orientado a la conexión: TCP

TCP es un servicio fiable que tiene estado, control de flujo y de congestión, garantía de entrega, establecimiento de conexión y segmentación de datos. Desarrollaremos las funciones mínimas de un protocolo de transporte.

La conexión TCP es full-duplex y punto a punto, por lo que no permite transferir datos a varios receptores. En la conexión TCP, los procesos de aplicación en ambos hosts deben establecer primero la comunicación. Los sistemas intermedios no mantienen estado de la conexión TCP.

Establecimiento de la conexión

Es un acuerdo en tres fases: intercambio de tres segmentos especiales y definición de las variables de estado y retardo de establecimiento previo a la transferencia de datos.

Una vez establecida, el proceso de aplicación cliente pasa los datos a través del socket al buffer de emisión. TCP irá enviando segmentos de datos a la capa de red según su conveniencia. La cantidad máxima de datos que lleva un segmento TCP está limitada por el MSS, que depende del tamaño de la MTU para garantizar que el segmento TCP se ajuste a la trama y evitar la segmentación.

Estructura del segmento TCP

La estructura del segmento TCP (cabecera de 20 bytes) incluye:

  • Número de puerto de origen y de destino (16 bits).
  • Número de secuencia (32 bits).
  • Número de reconocimiento (32 bits).
  • Longitud de cabecera (4 bits).
  • Flags (6 bits).
  • Ventana de recepción (16 bits).
  • Suma de verificación (checksum).
  • Puntero de datos urgentes (16 bits).
  • Opciones (longitud variable).

Los flags son:

  • ACK: validez del campo número de reconocimiento.
  • SYN, FIN: establecer y cerrar la conexión.
  • URG: contenido urgente.
  • PSH: pasar de inmediato los datos a la capa superior.
  • RST: rechazo de conexión.

Funciones del emisor

  • Recepción de PDUs de la capa superior: TCP encapsula datos en un segmento, lo pasa a la capa IP y se inicia el temporizador.
  • Recepción de ACK: se compara el valor del ACK con la variable BaseEmision (número de secuencia más antiguo pendiente de ACK). Si el valor del ACK > BaseEmision, el ACK confirma el segmento y los anteriores.
  • Fin de temporizador (timeout): TCP retransmite el segmento asociado y se reinicia el temporizador. Cada vez que TCP retransmite por timeout, el valor se duplica.

Retransmisión rápida es la solución ante los problemas de retardo que se producen en timeouts largos. El emisor detecta la pérdida de paquetes si recibe 3 ACK duplicados del último byte recibido.

Para la resolución de errores en cadena se usa una solución híbrida de Go-Back-N, con reconocimientos acumulativos y ACK duplicados, y Selective Repeat, con retransmisión selectiva y almacenamiento en el buffer del receptor de segmentos con número de secuencia fuera de orden.

Control de flujo

El control de flujo es un procedimiento de TCP para regular la velocidad entre emisor y receptor con el fin de no desbordar el buffer del receptor. Se supone que se descartan los segmentos fuera de orden y que el emisor conoce el valor de la ventana de recepción (W).

Si el buffer está lleno, la ventana es nula y entonces el emisor es notificado para que deje de enviar segmentos. El proceso de aplicación saca segmentos del buffer, los lee y el receptor deja de actualizar el valor de la ventana al emisor. Cuando el emisorspera a que la ventana sea mayor que cero, debe continuar enviando segmentos de 1 byte por minuto para no bloquearse.

Principios del control de congestión

La congestión de red es la consecuencia principal del aumento del tráfico. Supone un aumento del retardo y el desbordamiento de los buffers en los routers, lo que conlleva pérdidas de paquetes y la reducción del rendimiento de las aplicaciones.

Las causas de la congestión son:

  • Emisión de datos a velocidades inapropiadas.
  • Mecanismos de fiabilidad inapropiados (retransmisiones innecesarias).
  • Compartición de enlaces de transmisión y buffers de capacidad limitada en los routers.

Las consecuencias son: grandes retardos de cola, retransmisiones y desperdicio de recursos en retransmisiones innecesarias, y el descarte de paquetes avanzados en su ruta.

Escenarios de congestión

  1. Dos hosts emisores y un router con buffer de capacidad ilimitada, solo datos originales y protocolo de transporte simple. Los dos hosts comparten la capacidad del enlace de salida del router.
  2. Dos hosts emisores y un router con buffer de capacidad limitada, datos originales y retransmisiones, y protocolo de transporte fiable. Se descartan paquetes si el buffer está lleno y los dos hosts comparten la capacidad del enlace de salida del router. En el caso ideal, el host conoce el estado del buffer y solo envía datos si no está lleno; no se producen pérdidas y por tanto no se retransmiten paquetes. En el caso realista, el emisor solo retransmite si sabe que un paquete se ha perdido y se produce el desbordamiento del buffer. En el caso más realista, el emisor realiza una retransmisión prematura: el timeout expira, pero el paquete no se ha perdido sino retardado; llegan al receptor el original y el duplicado, que se descarta, y existen retransmisiones innecesarias.
  3. Cuatro hosts emisores, routers con buffer de capacidad limitada, cuatro hosts, múltiples routers y rutas multisalto solapadas.

Los métodos de control de congestión en función de la intervención de la capa de red son:

  • Extremo a extremo: la capa de red no interviene ni proporciona soporte a la capa de transporte para controlar la congestión, y los hosts toman el control en función del comportamiento observado de la red.
  • Asistido por la red: la capa de red sí interviene, los routers indican al emisor el estado de congestión de la red, notificándolo directamente desde un router o indirectamente con el receptor.

Mecanismos de control de congestión

TCP utiliza el control de congestión extremo a extremo, ya que los routers IP no proveen retroalimentación al emisor para indicar el estado de congestión.

El emisor TCP regula la velocidad de transmisión con la variable ventana de congestión (VC) en función de la congestión observada. La VC supone la restricción de velocidad máxima que da el emisor. La ventana del emisor (V) es mayor o igual al número de bytes que se envían sin esperar ACK, y representa el valor mínimo entre VC y la ventana de recepción: V = min{VC, W}.

Si el buffer del receptor tiene mucha capacidad, no hay control de flujo, y V >= VC. Si apenas hay congestión, la velocidad de transmisión es VTrans = VC / RTT.

El emisor TCP percibe la congestión mediante sucesos como el vencimiento del timeout o 3 ACK duplicados, y entonces reduce la velocidad de transmisión. Si no hay congestión, se reciben de forma normal y correcta los ACK; en función de su frecuencia se produce un incremento rápido o lento de VC y de la velocidad de transmisión.

Algoritmo de control de congestión (3 modos)

  1. Arranque lento: cuando se inicia una conexión TCP, la VC inicial es de 1 MSS. Como el ancho de banda disponible para el emisor puede ser mucho mayor que MSS/RTT, en el estado de arranque lento se establece VC inicial = 1 MSS y se incrementa 1 MSS por cada ACK del primer segmento transmitido. Por lo tanto, VTrans se duplica en cada periodo RTT durante la fase de arranque lento. Esta fase termina si: vence el timeout, se pierde un paquete (entonces el emisor da VC = 1 MSS y vuelve a iniciar el proceso de arranque lento con un umbral VCumbral = VCmax / 2), VCmax indica el valor de VC cuando se detecta congestión, o se alcanza el umbral, a partir del cual se deja de incrementar VC exponencialmente y se pasa al modo de evitación de la congestión.
  2. Evitación de la congestión: incremento lineal de VC.
  3. Recuperación rápida: tras la recepción de tres ACK duplicados, TCP realiza una retransmisión rápida y entra en el modo de recuperación rápida.

Descargar

PDF Word HTML