Wednesday, November 27, 2019

What in a network will affect TCP window size?

I know that the TCP window size is “completely negotiated by the clients”. However, I’ve ran into the case where I have two separate connections. Both are just ethernet handoffs from two different ISPs. And clients on one of the networks will negotiate a vastly different TCP window size.

One client (let’s call it C1) is at our facility. The other client is a web server in a digital ocean DC.

If I put C1 on network A download a file from the web server (or run iperf). C1 and the web server will automatically negotiate a fairly high TCP window size (1.5-2MB), at least enough to max out the 100Mbps connection.

Now if I take C1 physically unplug it and plug it into network B. Run the same exact test. I’ll see the TCP window size sit at 64k or lower. The download will be all over the place. It will jump from 3-4MB/s then drop down to ~700KB/s and then shoot back up to 1-2MB/s etc. I’ve never seen anything more than 4-5MB/s and that’s not even close to stable.

Connection A is a 100Mbps line. Connection B is a 400Mbps burstable to 1Gbps.

So connection B should be faster but it’s almost 3-4 times slower.

I’ve checked for retransmission, dropped packets, and errors on interfaces but don’t see anything causing the problem.

I’m just looking for anything that might point me into a direction to investigate further. Any suggestions?



No comments:

Post a Comment