Internet Upload Speed
Nov. 29th, 2016 04:37 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)

About one week ago we noticed that upload from my computer to remote servers became quite slow.
Speed test indicates that while upload speed is good (80 - 90 Mbps), download speed is getting worse on remote servers.
My computer is in Jacksonville area and upload speed to Orlando servers is quite fast:
http://www.speedtest.net/my-result/5837858780
Orlando, FL
Ping: 21 ms
Download speed: 90.13 Mbps
Upload speed: 9.55 Mbps
That is close to 10 Mbps upload speed that Comcast claims to have for my account.
However the further away the server is - the longer is ping time and the worse is upload speed:
http://www.speedtest.net/my-result/5837865645
Dallas, TX
Ping: 47 ms
Download speed: 90.12 Mbps
Upload speed: 5.14 Mbps
http://www.speedtest.net/my-result/5837843259
Remote server: Seattle, WA
Ping: 83 ms
Download speed: 90.13 Mbps
Upload speed: 3.12 Mbps
http://www.speedtest.net/my-result/5837868925
London, UK
Ping: 115 ms
Download speed: 87.99 Mbps
Upload speed: 2.31 Mbps
http://www.speedtest.net/my-result/5837874972
Chelyabinsk, Russia
Ping: 188 ms
Download speed: 86.41 Mbps
Upload speed: 1.52 Mbps
Why does upload speed deteriorate proportionally to the ping to the remote server (but download speed stays the same)?
My hypothesis is that network protocol waits after every chunk of data for the response from the remote server (instead of continuing sending new chunks of data).
By why?
Comcast technician came today and found that there was some network issues with upload frequency. Lost packets during upload may initiate resynchronization waits that would drag upload speed down on connections with slower ping.
Comcast technician promised that within couple of days, Comcast network crew should fix the issues.
We'll see how that would change my upload speed.
Update (thanks to anspa recommendation):
PingPlotter shows a lot of Packet Loss with my Internet connection:

no subject
Date: 2016-11-29 10:13 pm (UTC)Well, it depends on how exactly they measure upload speed. Regular TCP protocol was specifically designed NOT to wait for acknowledge before transmitting the next chunk (google 'TCP Window').
no subject
Date: 2016-11-29 10:33 pm (UTC)What does speedtest.net shows on your computer?
Does the upload speed depend on the server (ping) that you use for testing upload?
> Regular TCP protocol was specifically designed NOT to wait for acknowledge
Exactly.
That's why I think it is either Comcast wide artificial limitation introduced into their network protocols, or these delays are caused by lost packets in the network cable frequency that carries upload data.
no subject
Date: 2016-11-29 10:13 pm (UTC)no subject
Date: 2016-11-29 10:55 pm (UTC)2) I actually tried to add DefaultReceiveWindow and DefaultSendWindow to registry:
http://www.miersengineering.com/2015/03/480/
It increased upload speed a little for connections with "nearby" servers.
But upload speed to remote servers is still slow.
no subject
Date: 2016-11-29 11:47 pm (UTC)On Windows the similar thing is called "Network Monitor" if I remember right, might be downloadable from MSDN. Or some 3rd-party tool like Wireshark.
Basically look at the dump of the TCP packets and see if the send window gets all used up. You'll also see the retransmits if the packets get lost. A lost packet resets the window size for this connection down to 0 if I remember right. but the modern TCP implementations might be smarter. Linux actually has the pluggable modules for retransmit policies and you can tune them in a very wide range.
2) The send window is the one you need for upload. I'm not sure about the exact settings but it might be also limited by the configuration of the network card driver. Try looking in the NIC device properties.
no subject
Date: 2016-11-30 05:19 am (UTC)I updated this posting with the graph from PingPlotter.
Is that kind of data that you are suggesting to extract using tcpdump/Network Monitor?
2) What "NIC device" do you mean? Cable modem?
no subject
Date: 2016-11-30 06:18 am (UTC)no subject
Date: 2016-11-30 07:40 pm (UTC)BTW, the easy way to see the retransmit is to use the plain old command-line FTP with the hash printing enabled (it will print "#" for each block of data sent). You'll see these hashes printed fast when the data flows nicely, and hiccuping when a packet gets lost.
But PingPlotter's data is useful too. Traceroute ("tracert" on Windows) would probably give the approximately same information. It looks like Comcast has some kind of issues where their network connects to another provider, with the delays and packet loss.
2) The network card in your computer. BTW, the other side also has its settings for the maximal windows sizes, and the smallest of the two gets actually used. So your increasing the setting on your side might not help at all if the other side already has the lower limits.
no subject
Date: 2016-11-30 06:26 am (UTC)no subject
Date: 2016-11-29 11:15 pm (UTC)Tech was puzzled, theorized about issues with some equipment on Verizon side.
At some point I tried another cable socket (on another wall) and magically everything became OK. Seems a bad coaxial splitter.
no subject
Date: 2016-11-29 11:27 pm (UTC)1) Bad coaxial splitter caused multiple data packets loss.
2) Multiple data packets loss caused smaller size of the congestion window.
3) Smaller size of the congestion window caused slower upload speed.
Does this hypothesis sound about right?
Hopefully I have similar issue with the network between cable box on my front yard and Comcast modems (connection between my home and Internet box on my frontyard seems to be good, according to the Comcast tech).
If it is the case, when they would fix their network issues I would get better upload speed.
no subject
Date: 2016-11-30 01:26 am (UTC)PingPlotter
Date: 2016-11-30 05:16 am (UTC)Do I read it correctly that about 30% of packets are lost?
Re: PingPlotter
Date: 2016-11-30 06:12 am (UTC)Re: PingPlotter
Date: 2016-11-30 10:27 am (UTC)I agree that it looks suspicious and is probably the blame.
#11 is "po1.fcr04.sr05.dal01.networklayer.com" which is a new name for softlayer (my guess is that IBM finally digested SoftLayer and renamed softlayer.com domain to networklayer.com).
I do not think that hosting provider of my remote server is to blame here:
networklayer.com is getting packet loss simply because it is behind malfunctioning "as36351-1-c.nota.fl.ibone.comcast.net" hop (of my ISP).
Hops at the end of the network chain must work through the hops at the beginning of the chain, right?
So TCP exchange with remote hops collects all errors from nearby hops too.