dslreports logo

The RWIN is the TCP Receive Window. TCP is a packet based transfer where data packets are moved in chunks rather than one at a time. The RWIN itself is a "buffer" that gathers the incoming data until it is full, then it moves the data to storage before refilling. Between fills, the computer sends acknowledgement packets "acks" that tell the sending computer that the data was correctly received. Increasing the RWIN means that more data is gathered on each transfer, followed by a blitz of acks, followed by more incoming data, and so on. Smaller RWIN sizes gather less data per fill, and thus send fewer acks, and then the cycle begins anew. The trick is in finding the proper RWIN for your line speed and latency.

The TCP Receive Window has a default value of only about 8K bytes in Windows 95/98/NT, and about 16K bytes in Windows Me/2000/XP, which is adequate for relatively slow dialup modems and for high-speed networks with relatively low latency (e.g., less than 20 milliseconds). Increasing the TCP Receive Window above the default settings (e.g., to 32-64K) can substantially improve throughput on high-speed Cable Modem or DSL connections where there is higher latency (e.g., 100-200 milliseconds), as is often the case on the Internet, particularly over long network paths. (Increasing the TCP Receive Window will usually not have an adverse effect on other connections.)

For example, let's consider the case of downloading a file at 150 kilobytes per second from a remote server over a typical 1.5Mbps broadband connection. A default TCP Receive Window of 8K bytes will be filled in only about 53 milliseconds, which is often shorter than the round-trip latency on the Internet. When the window is full, the sender has to stop sending until an acknowledgment of the data that was received comes back from the recipient. With a TCP Receive Window of 32K bytes, the sender can continue for as long as 217 milliseconds without an acknowledgment, which should permit uninterrupted data flow even when latency is 100-200 milliseconds or more. (With a TCP Receive Window of 64K bytes, the sender can continue for as long as 450 milliseconds.)

The moral of the story is this: Slower download speeds on lower latency need a smaller (say, 10K) RWIN. High speed connections on long latency networks may need a much larger RWIN (say, 32000). Here below are some suggested settings to try for broadband connections, based on latency and rated download speed.

Low latency (<40ms)
500 Kbps --- RWIN 5000
1000 Kbps -- RWIN 10000
1500 Kbps -- RWIN 15000
2000 Kbps -- RWIN 20000
2500 Kbps -- RWIN 25000

Medium latency (<90ms)
500 Kbps --- RWIN 10000
1000 Kbps -- RWIN 15000
1500 Kbps -- RWIN 20000
2000 Kbps -- RWIN 25000
2500 Kbps -- RWIN 30000

Long latency (<150ms)
500 Kbps --- RWIN 15000
1000 Kbps -- RWIN 20000
1500 Kbps -- RWIN 25000
2000 Kbps -- RWIN 30000
2500 Kbps -- RWIN 35000

Adjusting your RWIN will not affect your rated line speed, it only allows for transfers to be of maximum efficiency. Some users should note that even if they signed up for 1.5Mbps max service they may be capped at lowers speeds such as 768Kbps or 384Kbps, depending on individual line conditions. Your RWIN has no effect (well, a negligible effect, anyway) on your TTL, MTU or latency! A well tuned RWIN can, however, greatly improve transfer speeds by increasing data transfer efficiency.


Feedback received on this FAQ entry:
  • No mention in this important FAQ of how and where to access the RWIN window and its fields to make the damn change!

    2008-03-01 19:56:04



Expand got feedback?

by Mortis See Profile edited by KeysCapt See Profile
last modified: 2003-08-16 20:38:15



Also read About DSL for lots more information