Is it possible to disable the TCP scaling auto-downgrade?
In Windows Vista and 7 there's TCP scaling. That's great. However since Vista SP1 a new feature was introduced: based on some heuristics, Windows might automatically disable TCP window scaling. When this happens, the TCP window is limited to 64K for all subsequent TCP connections. This destroys performance for me, since my connection can sustain about 1600000 bytes per second. With a 64K window, any connection with an RTT higher than 40ms won't be able to achieve full speed. The connection keeps downgraded until you disable and re-enable the network adapter (or you reboot the machine). I think it's downgraded when Windows senses something is slower than usual, but that happens normally from time to time. The end result is that after a few days of uptime you can be almost 100% sure the connection has been downgraded. Searching for this the only thing you can find is the reverse: how to turn window scaling off. My problem is that it turns off itself, I want to force it on all the time. I've observed this behavior with the default networking settings. To reiterate again: turning off scaling via "netsh interface tcp set global autotuninglevel" is exactly what I do NOT want. I've attemped to use "netsh interface tcp set heuristics disabled" but that doesn't help. Also to clarify: this is "invisible" in the sense that even after turning itself off if you run "netsh interface tcp show global" it still says "normal". But it's off for all new connections, you can verify this by looking at the TCP SYN packets, or more importantly, seeing that your transfer rates have suddenly become limited to 65536 divided by the RTT for any given TCP connection. Ideally all TCP connections would use large window scaling (for example, 8 for a factor of 256) and a large base window (for example fixed at 65535 bytes). This way you always get a large window, even if some router drops the scaling option, which is the problem this auto-downgrading tries to avoid in the first place. In previous versions you could get this behavior setting the TcpWindowSize value in the registry to a large value such as 16776960. This is not possible now, in fact the new TCP stack has basically zero configurability (another thing I'd like to change is the initial RTT, 3 seconds is way too long; you used to be able to lower this, but not anymore).
April 18th, 2010 8:41pm

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics