El síndrome de la ventana tonta es un problema en las redes informáticas causado por un control de flujo de TCP mal implementado . Puede surgir un problema grave en la operación de la ventana deslizante cuando el programa de aplicación emisor crea datos lentamente, el programa de aplicación receptor consume datos lentamente, o ambos. Si un servidor con este problema no puede procesar todos los datos entrantes, solicita a sus clientes que reduzcan la cantidad de datos que envían a la vez (la configuración de la ventana en un paquete TCP). Si el servidor sigue sin poder procesar todos los datos entrantes, la ventana se vuelve cada vez más pequeña, a veces hasta el punto de que los datos transmitidos son más pequeños que el encabezado del paquete, lo que hace que la transmisión de datos sea extremadamente ineficiente. El nombre de este problema se debe a que el tamaño de la ventana se reduce a un valor " tonto ".
Dado que hay una cierta cantidad de sobrecarga asociada con el procesamiento de cada paquete, el número incrementado de paquetes significa una sobrecarga incrementada para procesar una cantidad decreciente de datos. El resultado final es una paliza .
Solución
Cuando no hay sincronización entre el emisor y el receptor con respecto a la capacidad del flujo de datos o el tamaño del paquete, se crea el problema del síndrome de la ventana. Cuando el remitente crea el síndrome de la ventana tonta, se utiliza el algoritmo de Nagle . La solución de Nagle requiere que el remitente envíe el primer segmento, incluso si es pequeño, y luego espere hasta que se reciba un ACK o se acumule un segmento de tamaño máximo (MSS). Cuando el receptor crea el síndrome de la ventana tonta, se utiliza la solución de David D. Clark. [ cita requerida ] La solución de Clark cierra la ventana hasta que se pueda recibir otro segmento de tamaño máximo de segmento (MSS) o el búfer esté medio vacío.
Hay 3 causas de SWS:
- Cuando el servidor anuncia un espacio vacío como 0
- Cuando el cliente puede generar solo 1 byte a la vez
- Cuando el servidor puede consumir solo 1 byte a la vez
Durante SWS, la eficiencia de la comunicación es casi 0, por lo que la duración de SWS debe ser lo más corta posible.
Evitación de ventana tonta del lado de envío
Un método heurístico en el que el TCP de envío debe permitir que la aplicación de envío realice llamadas de "escritura" y recopile los datos transferidos en cada llamada antes de transmitirlos a un segmento grande. El TCP de envío retrasa el envío de segmentos hasta que puede acumular cantidades razonables de datos, lo que se conoce como agrupamiento.
Evitación de ventana tonta del lado de recepción
Un método heurístico que utiliza un receptor para mantener un registro interno de la ventana disponible y retrasar la publicidad de un aumento en el tamaño de la ventana al remitente hasta que pueda avanzar una cantidad significativa. Esta cantidad depende del tamaño del búfer del receptor y del tamaño máximo del segmento. Al usar este método, evita los anuncios de ventanas pequeñas donde las aplicaciones recibidas extraen octetos de datos lentamente.
Referencias
- Comer, Douglas E. (2006). Internetworking con TCP / IP (5 ed.). Prentice Hall: Upper Saddle River, Nueva Jersey.
- Postel, J (1981). Plan de transición NCP / TCP . pag. 6. doi : 10.17487 / RFC0801 . RFC 801 . Consultado el 5 de octubre de 2016 .
Algunas implementaciones de TCP no protegen contra el síndrome de la ventana tonta.