On 14/08/2012 22:22, Fred Baker (fred) wrote:
Let me put hands and feet on what Valdis points out. With a gigabit interface, you are able to carry about 83,333 1500 byte packets per second. If you're trying to download a file from, say, an Akamai server, TCP will allow you to move one window per round trip. If you are using standard window scaling (e.g., your window is in the neighborhood of 65,000 bytes), you can achieve 1 GBPS only if your round trip time is in the neighborhood of half a millisecond. Outside of a data center, such an RTT is Really Unusual. The obvious alternative is to use a larger window scaling value: if your RTT is 20 ms, scale up by at least 40 times, which is to say a shift of 6 bits for a multiplier of 64. Even with that, TCP's normal way of operating will prevent it from using the entire gigabit until quite a way into the session. You'll need a Really Long File.
I come up against TCP window challenges rather often due to the fact that RTTs between eyeball and content are still between 200ms and 1000ms for large portions of what eyeballs in Africa would like to consume. I was trying to quantify these limitations the other day and my Google-fu was lacking. Can anyone point me at some resources showing default TCP windows for the various OSes/platforms, which of them do auto scaling and what the upper bounds are for scaled windows. -- Graham Beneke