Many cable modem users complain that, if they run an upload at the same time as a download, their download speed is reduced. This is because the cable modem rate capping impacts upon TCP acknowledgements (ACKs), thus upsetting the TCP flow-control algorithms.
When your PC opens a TCP connection to or from a remote server, your PC tells the remote server what your PC's TCP Receive Window (RWIN) is. The basic flow control mechanism of TCP is that the sender will stop sending data if it has not yet received an ACK for any of the last RWIN bytes of data sent, and the receiver should transmit an ACK packet back to the sender when there is about half an RWIN's worth of data received but not yet ACKed. The sender uses the arrival of the ACK packet to pace itself on how fast to send data to the receiver. Pulling in a fast download requires not only the download packets to arrive quickly, but also for the ACK packets to get back to the sender in a timely fashion.
If you saturate your cable modem's upload cap with an upload, the ACK packets of your download will have to queue up waiting for a gap between the congested upload data packets. So your ACKs will be delayed getting back to the remote download server, and it will therefore believe you are on a very slow link, and slow down the transmission of further data to you.
There is a similar effect at work on your upload speed, as the ACK packets from the upload server will be delayed getting back to you if you have saturated your cable modem's download rate-cap with a large download.
The combined effect of this is that the upload and download speeds through the cable modem rate-caps tend to fall into a synchronised ratio, as the ACK packets fall into step with the congested main data packets in the opposite direction. The exact ratio of the synchronised speeds will depend on the relative sizes of the RWINs (TCP Receive Windows) in each direction, on certain timings, and on the ratio of the upload and download rate caps.
In theory (I have not sat down and tested it), you can reduce the impact of a simultaneous upload on your download speed by ensuring that your PC's RWIN is tweaked to a large value, thus increasing the amount of data that the remote source can send you before it stops and waits for an ACK. The logic of the theory suggests that you should set your RWIN to be N times larger than the RWIN typically used by the upload server, where N is the ratio of the download/upload bandwidths (i.e. 4 for 512/128). But unfortunately, you don't have an easy way to find out what the upload server's RWIN is before you start, and Windows users have to reboot every time they tweak their RWIN! Most Unix servers are observed to have an initial RWIN of 32768, suggesting that a cable modem user should have an RWIN of at least 131072, which is actually larger than Windows 95 and Windows NT can manage.
The default RWIN for Windows 9x systems is far too small at 8192, and Win9x systems will thus always display a bad impact on download speeds from uploads. Windows ME is slightly better at 16384, but still not good enough for cable. Windows 2000 is smart enough to adjust its RWIN to suit conditions on the connection. See Networking tweaks for pointers to instructions for tweaking your RWIN upwards.
See http://cable-dsl.home.att.net/#Asymmetry for further discussion.
The ultimate solution to this problem is to use, in your PC, a smart download and upload manager which is capable internally of regulating the data rate demands it makes on your network connection. You should configure it to self-limit just below the rate caps of your cable modem in each direction. Then there will always be small but frequent gaps between packets in each direction, just enough to slot in ACK packets from the opposite direction without them having to wait for a gap. Then you should observe close to maximum utilisation of the cable modem rate caps in both directions simultaneously. The bandwidth capping configuration instructions are given here for many P2P systems.
It would be useful if anyone knowing the names of download/upload managers capable of regulating their bandwidth demands could let me know, so that we can build up a list of suitable ones.
There is another bad effect arising from running uploads at speeds hard up against the cable modem upload rate cap: both the cable modem head end and your PC will build up a backlog of data awaiting transmission. The time taken to move data through that backlog buffering will add to the apparent latency of the cable connection, affecting pings and UDP traffic as well as the TCP download effect discussed above.
Another potent cause of bad performance when simultaneously uploading and downloading is a mismatched ethernet duplex setting: see Ethernet card: duplex setting.
There are a few products which claim to be able to rate-limit network connections from Windows PCs. They are:
With effect from Linux 2.4 and higher, a complete solution is available. The Linux Wonder Shaper from http://lartc.org/wondershaper/ is a script which can be configured to rate-limit uploads so that low latency and high download speeds are maintained. You can use this with a single Linux PC connected to the cable modem, or if you are using Linux as a NAT router gateway to the cable modem. When using this script, you supply 3 parameters:
You do not need to set a download limit any more restrictive than your cable mode rate cap, so this should be set to a figure several times greater than your download cap. You should set the upload limit to be about 85% of the upload rate cap of the cable modem.
throttled provides upstream rate limiting for Mac OS X, and ensures prompt return of ACK packets, so as to maintain maximum downstream performance and low latency. See http://www.intrarts.com/throttled.html.
Return to Index.