How large should RWIN be ?
The size of RWIN is directly related to your maximum bandwidth, and your maximum latency.
To calculate the optimal RWIN value for your internet connection, take the maximum bandwidth available to you in Kilobytes/second and multiply it by the maximum anticipated latency (ping) in miliseconds... (you can use our bits/bytes calculator if need be)
500 KB throughput * 500 ms latency = 250,000 bytes RWIN.
The above bandwidth*delay product states: to achieve 500KB throughput at 500ms latency you must have at least 250,000 RWIN value.
After you know the approximate value, it's best to still make the RWIN value a multiple of MSS, you can read our tweaking articles or use the TCP Optimizer.
* In the above example, the latency is set to a high number on purpose. It should represent the maximum anticipated latency, which can easily be triple or more than your average pings. Latency also varies with every server, the distance to it, current congestion on that particular backbone and nodes, etc.
* Making the RWIN value too somall caps your possible througput. The server is going to wait before there is room in the buffer before sending additional data. On the other hand, using huge values introduces other problems by reducing the responsiveness of the protocol, since both requests and data use the same socket, and requests might have to wait a few seconds before even getting transmitted.
* You can use the SG RWIN/BDP Calculator to obtan an approximate RWIN value for your particular bandwidth and latency.