Ventana cero de TCP a través de un proxy: identifique al receptor
Localice el control de flujo TCP en el lado cliente o servidor de un proxy antes de atribuir una descarga atascada al escalado de ventana o al tamaño del búfer.
Una captura de paquetes dice TCP ZeroWindow. Antes de cambiar un parámetro del núcleo, identifique el extremo que anuncia el cero.
Ese extremo describe su capacidad de recepción en esa conexión TCP. No anuncia cuánto ancho de banda tiene el proxy completo. Una sonda de ventana cero permite al emisor averiguar si esa capacidad anunciada ha cambiado; las sondas por sí solas no demuestran pérdida de paquetes ni un proxy averiado.
browser <-- TCP A --> proxy <-- TCP B --> website
Son conversaciones TCP separadas. Supongamos que el navegador deja de leer una respuesta grande y anuncia cero en A. El proxy puede acabar dejando de vaciar B a medida que se llenan sus propios búferes. Una ventana cero posterior en B puede ser consecuencia del cliente lento y no el problema original.
La situación inversa es posible durante una subida. Si la aplicación de destino deja de consumir datos, su ventana en B puede cerrarse. La presión puede viajar entonces de vuelta hacia el cliente a través de los búferes del proxy.
Ordene las observaciones
- Anote los extremos de la conexión y la dirección de la transferencia afectada.
- Identifique qué extremo anunció primero una ventana de recepción que se reduce o llega a cero.
- Compruebe si su aplicación estaba leyendo, detenida en otra operación o limitada por recursos.
- Compare el momento en la otra conexión del proxy antes de asignar la causa original.
Las etiquetas de análisis de ventanas de Wireshark son interpretaciones útiles de la captura, no una instrucción para aumentar todos los búferes de recepción. El escalado de ventana también debe interpretarse teniendo en cuenta la negociación de la conexión.
Probar otro extremo de una lista de proxies y ver que la transferencia se recupera es una prueba útil de que la ruta cambió. Por sí solo, no demuestra que la implementación de TCP de un sistema operativo fuera defectuosa. Mantenga la explicación ligada al proceso receptor y a la conexión donde empezó la espera.