How do you reduce TCP RWIN in Windows 7 to accomodate Verizon's edge routers?

I posted this in DSLReports as well, and I'd like to see if there's a way to force RWIN to a much lower value.


Verizon has some strange configuration with their newer Juniper ERX series edge routers. If your connection goes through an ERX router/aggregator, only a properly tweaked 2k/XP (OSX and Linux as well) will go through. Unfortunately, Windows Vista and 7 both use Microsoft's new Next Generation TCP/IP Stack, which does not allow you to tune the one most important variable: the receive window size (RWIN). Now, the Next Generation TCP/IP Stack may be a very capable and efficient stack, but a good chunk of Verizon's DSL hardware will choke under the auto-tuned RWIN value.

 

The Next Generation TCP/IP stack is dynamic and very aggressive. It's pretty good at optimizing YOUR ideal connectivity, and Verizon's more budget-conscious DSL offering seem to have trouble with it (their 3M and 1M plans, I don't know how their higher plans handle large RWIN). The new networking stack selects RWIN based on the link media type, so if your Windows machine is connected to a gigabit switch, it's going to use a high RWIN. From my tests, if you're connected to a 10Mbit hub, Windows will set RWIN at around 16k. If you're connected to a gigabit switch, Windows will set RWIN at 64k at least.


Many people have reported related problems with Verizon's ERX hardware, but I wanted to make sure. So I tested out an XP machine on my DSL connection to verify. In the DSLReports tweak tests, the default XP configuration showed:

Receive Window (RWIN): 65535
Window Scaling: off
Path MTU Discovery: ON
RFC1323 Window Scaling: OFF
RFC1323 Time Stamping: OFF
Selective Acks: ON
MSS requested: 1452
TTL: (less any hops behind firewall) 123
TTL remaining: 113
TOS flags: none set
Actual data bytes sent: 1497913
Actual data packets: 1034
Max packet sent (MTU): 1492
Max packet recd (MTU): 1470
Retransmitted packets: 327
sacks you sent: 0
pushed data pkts: 49
data transmit time: 27.312 secs
our max idletime: 1255.8 ms
transfer rate: 36643 bytes/sec
transfer rate: 293 kbits/sec
transfer efficiency: 68%

I then forced a RWIN of 8 times MSS (MSS = 1452 for PPPoE and RWIN = 11616) by creating these DWORDS in the XP registry:


HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\GlobalMaxTcpWindowSize = 11616
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpWindowSize = 11616

Then I ran the tests again and saw:

Receive Window (RWIN): 11616
Window Scaling: off
Path MTU Discovery: ON
RFC1323 Window Scaling: OFF
RFC1323 Time Stamping: OFF
Selective Acks: ON
MSS requested: 1452
TTL: (less any hops behind firewall) 123
TTL remaining: 113
TOS flags: none set
Actual data bytes sent: 1024001
Actual data packets: 707
Max packet sent (MTU): 1492
Max packet recd (MTU): 1470
Retransmitted packets: 0
sacks you sent: 0
pushed data pkts: 160
data transmit time: 8.222 secs
our max idletime: 385.9 ms
transfer rate: 117674 bytes/sec
transfer rate: 941 kbits/sec
transfer efficiency: 100%

I also tried forcing my Windows 7 machine's network driver to use 10Mbit, which apparently reduced the RWIN to about 16k. This value is still too high and causes retransmits, but not as bad as the default "optimized" value that Windows 7 uses on my gigabit local connection. These are values from my Windows 7 machine with the constrained link speed:

Receive Window (RWIN): 16896
Window Scaling: 8
Path MTU Discovery: ON
RFC1323 Window Scaling: ON
RFC1323 Time Stamping: ON
Selective Acks: ON
MSS requested: 1452
TTL: (less any hops behind firewall) 123
TTL remaining: 113
TOS flags: none set
Actual data bytes sent: 1104641
Actual data packets: 769
Max packet sent (MTU): 1480
Max packet recd (MTU): 1458
Retransmitted packets: 56
sacks you sent: 53
pushed data pkts: 130
data transmit time: 10.900 secs
our max idletime: 388.6 ms
transfer rate: 90116 bytes/sec
transfer rate: 720 kbits/sec
transfer efficiency: 92%

Tests ran on: http://www.dslreports.com/tweaks

 

Clearly, the Windows TCP/IP tuner only considers the local link speeds, and not the actual broadband capabilities when specifying RWIN. And Verizon's hardware chokes when RWIN is more than 9 times MSS (13068) in my tests. Now, I'm not willing to drop the local connection to 10Mbit since I have local machines (NAS, XBox, etc.) that would crawl with a 10Mbit link to my Windows 7 machine. Verizon has also indicated that they willl not fix the problem (people have been reporting this problem for years, and one person reported it has been a problem for 6 years). There must be some kind of workaround under Windows Vista/7 that doesn't involve confining my local interface speed. Any suggestions?

Answer
Answer

Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this reply?

Thanks for your feedback.

 
 

Question Info


Last updated March 13, 2018 Views 6,215 Applies to: