Q: Can you set RWIN too high?
A: YES!
Here is the issue:
- Large RWIN values (e.g. 150K) can results in 100+ outstanding TCP segments
- *Culmultive* ACKs used by default in many TCP stacks
- Drop just one segment (e.g. #50 of 100) and 50-100 have to be retransmitted
- Even modest error rates (<1%) result in using 33% of bandwidth for retransmissions
- *Selective* ACKs (SACKs) minimize this issue, but they may not be enabled
Conclusion:
- Determine if you have SACK enabled
- If yes, then you can be aggressive (RWIN=64KB+)
- If not, evaluate your error rate
- If low (<.01%) then you can still be aggressive (RWIN=64KB+)
- If high (>.01%) then you should be conservative (RWIN=8-16KB)
Note: RWIN values >64KB are seldom necessary, so don't set it higher unless
your bandwidth*delay warrants.
For more details on this subject see:
RFC 1072 - TCP
Extensions for Long-Delay Paths
RFC 2018 - TCP
Selective Acknowledgment Options