Efectos de habilitar Window Scaling Heuristics

Window Scaling Heuristics” es una opción que permite a una maquina cliente detectar problemas de conectividad producidos por causa de dispositivos intermedios (generalmente dispositivos antiguos o que no se comporten correctamente en cuanto a escalado de ventana) y actuar en consecuencia.

Es un método que pretende evitar fallos en la comunicación de red provocados por un mal manejo del escalado.

Tenemos en este White Paper una buena explicación de este comportamiento:

https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Perf-tun-srv.docx

La clave de registro que afecta a esta propiedad es la siguiente:

- EnableWsd 

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\(REG_DWORD)

The default is 1 for client SKUs. By default, Windows automatically disables TCP receive window autotuning when heuristics suspect a network switch component may not support the required TCP option (scaling). Setting this value to 0 disables this heuristic and allows autotuning to stay enabled. When no faulty networking devices are involved, applying the setting can enable more reliable high-throughput networking via TCP receive window autotuning.

Esto quiere decir que si se habilita “Window Scaling Heuristics”, es probable que ante fallos en el escalado de ventana (y debido como se explica más arriba a dispositivos intermedios que no soporten el escalado o no lo manejen bien), éste se deshabilite completamente. Esto puede causar un impacto directo en el rendimiento de red pero evitará fallos en la comunicación a la vez que es una buena indicación de que algo está pasando en la red para que el escalado se haya deshabilitado.

Hay que tener en cuenta que esta opción fue diseñada para clientes que acceden a Internet y no para servidores que actúan en la Intranet o Datacenter.

Si generamos y analizamos trazas de red en ambos extremos veríamos algo similar a lo siguiente:

Sin uso de escalado (Heuristics habilitado)

127 11.0330416 System TCP TCP:Flags=......S., SrcPort=60351, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=3665122992, Ack=0, Win=8192 ( ) = 8192 {TCP:14, IPv4:13}

128 11.0936054 System TCP TCP:Flags=...A..S., SrcPort=Microsoft-DS(445), DstPort=60351, PayloadLen=0, Seq=1231207440, Ack=3665122993, Win=8192 ( Scale factor not supported ) = 8192 {TCP:14, IPv4:13}

129 11.0936319 System TCP TCP:Flags=...A...., SrcPort=60351, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=3665122993, Ack=1231207441, Win=64240 (scale factor 0x0) = 64240 {TCP:14, IPv4:13}

 

Con uso de escalado (Heuristics deshabilitado)

201 10.3617560 System TCP TCP:Flags=......S., SrcPort=62325, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1502484362, Ack=0, Win=8192 ( Negotiating scale factor 0x8 ) = 8192 {TCP:18, IPv4:17}

205 10.4234921 System TCP TCP:Flags=...A..S., SrcPort=Microsoft-DS(445), DstPort=62325, PayloadLen=0, Seq=2333543882, Ack=1502484363, Win=8192 ( Negotiated scale factor 0x8 ) = 2097152 {TCP:18, IPv4:17}

206 10.4235320 System TCP TCP:Flags=...A...., SrcPort=62325, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1502484363, Ack=2333543883, Win=513 (scale factor 0x8) = 131328 {TCP:18, IPv4:17}

 

Para habilitar o deshabilitar esta opción se utilizan los siguientes comandos de Netsh:

Para mostrar la configuración:

netsh int tcp show heuristics

Para habilitarlo:

netsh interface tcp set heuristics wsh=enabled

Para deshabilitarlo:

netsh interface tcp set heuristics wsh=disabled

Para volver al valor por defecto del sistema:

netsh interface tcp set heuristics wsh=default

 

Un saludo, Karin Galli