Resumen
- El Silly Window Syndrome es un ciclo: una pequeña ampliación de la ventana genera un segmento pequeño y su reconocimiento prepara otra ampliación de tamaño parecido.
- TCP corta el ciclo mediante dos decisiones independientes de espera, una en el receptor y otra en el emisor, con un temporizador que evita que la agregación termine en bloqueo.
En una transferencia larga, el deterioro puede nacer de una excepción trivial. El emisor venía llenando segmentos razonables, pero una frontera natural de los datos deja al final una pieza de 50 bytes. El receptor la acepta, la aplicación libera esos 50 bytes y la siguiente actualización de ventana devuelve exactamente ese margen. El emisor tiene muchos datos en cola, aunque la ventana utilizable solo le permite mandar 50. Lo hace. Cuando llega el ACK, vuelve a disponer de otros 50. La excepción ya no es una excepción: se ha convertido en una regla que se reproduce sola.
RFC 813 explicó este patrón en 1982 bajo el nombre de Silly Window Syndrome, o SWS. Su aportación no consistía solo en advertir contra los paquetes pequeños. Identificaba una degeneración estable del control de flujo: una vez dividida la ventana utilizable, no había un mecanismo natural que reuniera las piezas mientras el flujo siguiera sin pausa. Cada pequeño segmento generaba la oportunidad para el siguiente.
La diferencia entre ventana ofrecida y ventana utilizable hacía visible la trampa. El receptor anuncia cuánto está dispuesto a recibir. El emisor resta de esa cifra los bytes enviados que aún no han sido reconocidos. Por eso, una ventana anunciada de 1.000 bytes puede ofrecer solo 50 bytes nuevos si 950 permanecen en tránsito. La cifra grande del campo de ventana no garantiza una unidad de envío grande; importa cuánto se mueve su borde derecho respecto de los datos pendientes.
La degradación afectaba a más que la proporción entre cabecera y carga útil. RFC 813 señaló pérdidas de rendimiento y de eficiencia de CPU de varios múltiplos, y documentó casos históricos con segmentos medios de una décima parte de lo que ambos extremos podían manejar y numerosas retransmisiones. No es evidencia sobre la frecuencia o los parámetros de las redes actuales. Sí demuestra por qué los diseñadores consideraron el ciclo un problema sistémico y no una rareza estética.
El receptor podía romperlo sin negar que existía espacio libre. La solución era mantener fijo durante un tiempo el borde derecho anunciado. Los bytes que la aplicación consumía quedaban disponibles, pero aún no se convertían en nuevo crédito visible. Al acumular una cantidad sustancial, el receptor abría la ventana de una vez. Abrir demasiado tarde podía vaciar temporalmente la tubería e introducir demora; abrir con cada pequeño cambio mantenía vivo el patrón costoso. RFC 813 aconsejaba inclinarse hacia la prudencia y no reabrir por menos de una unidad razonablemente grande.
En 1989, RFC 1122 convirtió esa estrategia en una obligación de implementación. La sección 4.2.3.3 exige que el receptor incluya un algoritmo contra SWS. La fórmula sugerida conserva fijo RCV.NXT + RCV.WND hasta que el espacio disponible pero no anunciado alcance el menor de dos valores: una fracción del búfer total o un MSS de envío efectivo. La fracción recomendada es un medio. Así, la actualización suele avanzar por una unidad capaz de sostener un segmento útil.
Sin embargo, proteger solo al receptor dejaría al host a merced de un interlocutor menos cuidadoso. RFC 1122 §4.2.3.4 exige también un algoritmo en el emisor. Recomienda transmitir si cabe un segmento máximo, si todos los datos marcados para envío inmediato pueden salir bajo las condiciones previstas, si puede utilizarse al menos la mitad de la ventana máxima observada o si vence un temporizador de anulación. El emisor puede recibir permiso para enviar una cantidad pequeña y conservarlo hasta que ese permiso produzca un trabajo más eficiente.
La cuarta condición resuelve una asimetría de conocimiento. El receptor conoce el tamaño de su búfer; el emisor solo puede estimarlo. La mayor ventana observada durante la conexión sirve como aproximación, pero el receptor puede reducir su memoria. Si el emisor siguiera esperando una fracción de un máximo que ya no existe, la política de agrupación acabaría inmovilizando la conexión. El temporizador permite enviar a pesar de la regla. RFC 9293 conserva una recomendación de 0,1 a 1,0 segundos para esta salida, sin convertirla en una afirmación sobre todos los sistemas reales.
RFC 9293 mantiene hoy las dos obligaciones: tanto el emisor como el receptor deben incluir mecanismos contra SWS. También separa este problema del algoritmo de Nagle. Nagle contiene segmentos diminutos cuando la aplicación entrega datos en pequeños incrementos. El algoritmo SWS del emisor contiene segmentos diminutos cuando la ventana de recepción avanza en pequeños incrementos. Las dos técnicas son complementarias porque actúan sobre causas distintas.
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance
