TCP Window Scaling for Satellite Connections

A satellite connection generally has a RTT around 500ms. Connections generally suffer sub-optimal transfer speeds, in spite of large amounts of bandwidth because TCP acknowledgements take too long to arrive.

My understanding is that a good way to address this problem with TCP connections is to set the TCP Window size to the connection speed (in bits) multiplied by RTT (in seconds). So a 1mbps connection over satellite should have a window size of 512kb.

What pitfalls are involve in this? Are there any other similar tweaks that should be made to optimize for satellite connections? I understand that many modern operating systems will modify the window size automatically, but will they be aggressive enough to make window sizes large enough to work for satellite communication?

As an aside, I’m going to assume that a large window size is not desirable on networks that frequently drop packets, as the retransmission will be at the window size, and you may dedicate much of your bandwidth to retransmission overhead.

Thank you, I’m still learning a great deal about networking and appreciate your input.

Answer

You should generally use a TCP stack that implements proper Window scaling. But of course you are right that your window size needs to mach that bandwidth-delay-product (BDP). In case you have a varying BDP you can set the window size to something you’d expect as a common “worst” case. Interestingly enough most connections don’t suffer from too much if the window size is large than the BDP (it shouldn’t be way too large of course), but show degraded performance if the window size is much smaller than the BDP.

To check if your TCP/IP stack is properly increasing the window size you should employ Wireshark or any other traffic sniffer. You can either directly look at the window size flag in the header (with the scaling factors in mind!). Wireshark can also show the effective window size by taking the scaling factor into account.

Check this tutorial on how to plot your TCP window size as a function of time here.

Attribution
Source : Link , Question Author : directedition , Answer Author : pfo

Leave a Comment