Does your download speed drop when uploading?

Have you noticed that, whilst uploading data, such as photos to Facebook, videos to YouTube, sending an email or seeding a torrent, the download speed of your ADSL (broadband) connection appears to drastically slump?

I live in fairly rural countryside in the national park of Broadland, Norfolk (UK). The UK isn’t well known for fast broadband speeds at the best of time, especially in rural areas. Having said that, my router connects to the telephone exchange at 8128kbps — very nearly the full 8Mbps advertised for our package. Using to obtain an actual, measured speed, results average somewhere around a respectable 7Mbps.

Whilst sending an email with a large attachment, or uploading photos to Facebook for example, I have measured response times (ping) over over 1000ms (typically this would be 30-50ms), and a download speed of way below 0.5Mbps.

So why the massive drop in speed?

In effect, your broadband connection is two, separate connections. (Not technically true I know, but I’m simplifying here!) One in each direction: upload, for transferring data from your computer, to others on the Internet; and download, for exactly the reverse. The ‘A’ of ‘ADSL’ stands for ‘asynchronous’. The opposite of course being ‘synchronous’, and yes, SDSL exists — usually for business customers. With SDSL, each connection runs at the same speed, 4Mbps in each direction perhaps. Most home users very rarely upload large volumes of data (although I would argue this is becoming less and less true), so the balance of overall available bandwidth is tilted in favour of download, so typically residential customers experience 8Mbps download speed, and just 448kbps up. So we can now download things faster at the cost of not being able to upload them so fast, but residential customers don’t often upload anyway. (Or didn’t used to).

Think of your router as a town. The broadband connection would be a road into and out of the town. This road is divided into lanes in which cars (or packets of data) move in a single, predefined direction. With an ADSL connection, there would be far more lanes coming into your town, than there are leaving it.

For example: Suppose we have a connection running at 4Mbps down-stream (download speed), and 1Mbps up-stream (upload speed); your town would then have a 5-lane road, with 4 lanes carrying traffic in to your town, and 1 lane carrying traffic out. In a given frame of time, your town can have 4 times as much traffic coming in, as it can going out.

You begin to upload a large file, so in this scenario, your single out-bound (upload) lane has a constant stream of cars (or packets of data) flowing out of your town (or router) to the outside world. So, traffic coming into your town on the other 4 lanes isn’t affected, right? Well wrong… sort of.

Most of the time when you are downloading from the Internet, certainly when downloading files and web pages, your data will be sent using the TCP protocol. Sounds complicated (well, it is) but for the level of detail needed in this scenario, it’s not. Bare with me!

We are all connected to the Internet at different speeds, and (hopefully) the server hosting the file you wish to download has a faster upload speed than your download speed. This remote server needs to work out how fast you can receive its packets of information. Suppose I was giving a reference number to a support desk over the telephone. If I said, as fast as I can “4638465638”, do you suppose the person the other end would hear and understand each digit? Of course not. What really happens, is I will say “463”, and they may reply “463, yes”, so I knew they got that part of the number before continuing.

The TCP protocol essentially works in the same way. A chunk of data, say part of an image you’re downloading, is sent to your router. It arrives pretty fast because it uses all 4 lanes. Now, your router needs to send a message back confirming it’s received those ‘packets’ of information. This message, an ACK (ACKnowledgement) packet is really tiny, so it doesn’t really matter that your upload speed is relatively much slower.

But wait a moment, the lane out of your town, your upload link, is full at maximum capacity, as you’re still uploading that photo. There’s no room for your small ACK packet to get out, so it is delayed. This means the remote server is subsequently delayed receiving confirmation that you received the first chunk, so it is still waiting to send out the second chunk.

Which should, hopefully, explain why your download speed drops when you upload.

Is there anything that can be done to fix the issue?

Well, yes, but probably not with most, typical, home ADSL routers.

The solution is theoretically very simple. QoS (Quality of Service) can be used to prioritise packets. It’s like strapping a flashing blue light to these ACK packets. The other packets, in this case, those containing the photo we’re uploading, are instead put on hold so that priority is given to the ACK packets. The result is that the remote server doesn’t get a delay in receiving your ACK packets, and so doesn’t slow down the rate at which it sends you the chunks of data of the file you’re downloading.