This message was appearing a little too often for my liking:
In many cases this problem is caused by a feature known as Auto-Tuning. This is supposed to continually adjust TCP/IP receive window size based on the network conditions at any given moment. But on a less-than-perfect network this can cause time-out issues.
The TCP receive window size is the maximum amount of incoming data that can be buffered at once on the receiving side of a connection. The sending host can send only that amount of data before waiting for an acknowledgement and then a “receive window” update from the receiving host.
The TCP/IP stack nowadays tunes itself with larger default window sizes than it used to. Instead of using a hard-coded default value, TCP automatically adjusts the window size – beneficial during bulk data transmission by reducing the number of segments sent with large amounts of data.
Auto-Tuning continually determines the optimal receive window size by measuring bandwidth delays and the application’s retrieve rate. In an ideal world this means excellent performance even with changing network conditions. In the real world this means occasional timeout errors…
This doesn’t just affect Remote Desktop – some older version of Outlook used to get error 0x800CCC0F (“The connection to the server was interrupted. If this problem continues, contact your server administrator or Internet service provider (ISP).”) for the same reason.
What can be done?
To tweak your auto-tune settings:
Run CMD as an administrator and enter this command:
netsh interface tcp set global autotuninglevel=restricted
If you later wish to reverse this setting:
netsh interface tcp set global autotuninglevel=normal
To see what you’ve got right now:
netsh interface tcp show global
The permited values for the AutoTuningLevel parameter are:
Sets the receive window at the default value.
Lets the receive window grow beyond the default value, but does so very conservatively.
Lets the receive window grow beyond the default value, but limits such growth in some scenarios.
Lets the receive window grow to accommodate most scenarios.
Lets the receive window grow to accommodate extreme scenarios.
N.B. The experimental value may decrease performance and should only be used for testing.