The TCP slow start will also be activated if there have been no traffic for 200 ms., then the TCP stack will test again if network connection is as good as before. So long living TCP connection, with occasional bursts of data, will experience poor performance (slow latency).
The initial congestion window size of 2 frames was perfect, when using dialup modems, but with modern network connections, then it is actually a bottleneck. Now the recommended size is 10 frames (MSS).
It is possible to change the initial congestion window on Windows 2008 R2. This command will display advanced TCP options:
Execution these two commands will set an Initial Congestion Window (ICW) of 10 frames (MSS):netsh interface tcp show supplemental
Note the above command will fail if the hotfix KB2472264 has not been applied.
Note for long living TCP connections, then one can workaround the TCP slow start triggered by occasional pause in traffic (Without touching ICW). The simple solution is that the sending side sends a keep alive packet every 150 ms. Alternative the receiving side can cheat and send a ping operation every 150 ms. that causes the sending side to reply back and thus prevent TCP slow start from happening.netsh interface tcp set supplemental template=custom icw=10
netsh interface tcp set supplemental template=custom
More Info RFC3390
More Info Google 2012: Draft for increasing ICW to 10
More Info Jim Gettys 2012: Increasing ICW to 10 is harmful
Related Compound TCP (CTCP) can improve TCP Slow Start
Related TCP_NODELAY disables nagle algorithm and can improve latency
Related TCP/IP RWIN Auto-Tuning can slow down network
Credits Andy's Notebook
Does a patched tcpip.sys exist for any flavor of Windows 2000/XP/2003 with the initial congestion window increased? Can it be practically made? (Srv2003 is a capable, stable system with less bloat, without autotuning issues.)
I was intrigued by the parameter SlowStartSegments in tcpip.sys 5.0.2195.7071. It is only present in late versions of Win2k, and no longer in WinXP. Upon closer examination it turns out that this parameter is read from the registry, compared to 2, possibly overwritten with 2, and not referenced at all anymore. It has no effect. Looks like Microsoft were experimenting with slow-start.
I have not seen any fixes for Win2k3. And since Microsoft support will stop soon, then I guess one have to upgrade.