Comcast Cheating On Bandwidth Testing?
dynamo52 writes "I'm a freelance network admin serving mainly small business clients. Over the last few months, I have noticed that any time I run any type of bandwidth testing for clients with Comcast accounts, the results have been amazingly fast — with some connections, Speakeasy will report up to 15 Mbps down and 4 Mbps up. Of course, clients get nowhere near this performance in everyday usage. (This can be quite annoying when trying to determine whether a client needs to switch over to a T1 or if their current ISP will suffice.) Upon further investigation, it appears that Comcast is delivering this bandwidth only for a few seconds after any new request and it is immediately throttled down. Doing a download and upload test using a significantly large file (100+ MB) yields results more in line with everyday usage experience, usually about 1.2 Mbps down and about 250 Kbps up (but it varies). Is there any valid reason why Comcast would front-load transfers in this way, or is it merely an effort to prevent end-users from being able to assess their bandwidth accurately? Does anybody know of other ISPs using similar practices?"
So... how can you tweak your Bittorrent client to fool Comcast into thinking it is making lots of small downloads?
-- Ed Avis ed@membled.com
This is it, and it should be amazingly obvious to any "sysadmin" who should know something about general browsing habits. I worked for a wISP for a year and this was a standard feature offered by the company for no extra charge. Max subscriber speeds were 1.5 Mbps, but for about 20 seconds ALL traffic was burst to 2 Mbps, regardless of the subscriber paying for the 500 k/s speed or something higher. For general browsing and light email, it made all the customers quite happy to have things terrifically speedy.
By and large, language is a tool for concealing the truth. -- George Carlin
I've made something of a game out of it, actually. With careful tactics, one can easily hit as much as 1.0 MiB/s upstream for short periods. I use Deluge to play. My present record is 2.4 MiB/s, on an Ubuntu 7.10 torrent for which I already had all the file data.
First, configure your torrent client to use a modest number of connections -- limit it to, say, 250 connections globally and 70% of your nominal upstream speed. Then, get on a very large, active torrent and build up a few minutes' worth of downloaded data. Once you're in the swarm, open everything wide up -- no global connection limit, no bandwidth cap, and no per-torrent upload slot limit. If your client has a bandwidth chart, watch it scroll by and enjoy the thrill as your upstream bandwidth surges to heights like you have never seen before. Of course, eventually the Power Boost will wear off and some connections will finish as their pieces are completely transferred, but it's fun while it lasts.
They aren't shaping based on individual downloads. They are going to shape all the traffic going to your cable modem as a single stream. There may be other outbound queues within the shaper to provide fair queuing and such, but that gets too complicated for this post.
Most shapers (including the ones in their broadband routers) allow a variety of parameters.
You can set a sustained rate, peek rate, and burst size. For example a common implementation would have the following values (I haven't worked with Cisco QOS much, so it may be implemented differently but the principals are the same):
sustained rate: 2mbps
burst rate: 10mbps
Max burst size: 10 Megabytes
The burst size counter is depleted as you download over 2mbps, and replenished when you download under 2mbps.
When you download a 100MB file you will deplete the burst size at 8mbps. You can download at 10mbps for 10.5 seconds, at which point your download will drop to 2mbps and will stay there until you slow your transfer rate. If you stop downloading completely it will take 42 seconds to refill your burst counter.
Yeah, I did some testing on my own a while back and my theory is that it's a token-bucket sort of thing, implemented in the modem. Whenever your aggregate bandwidth is less than X for more than a certain amount of time, it allocates a "token" and resets your cap to 2*rated. The longer your connection is non-busy, the more tokens you get, up to a certain point (when the bucket is full). Then, when you start moving some data, and you go over your rated limit (which, after all, is half of what the modem is giving you), it starts taking tokens out of the bucket. When the bucket is empty, it re-caps you at your rated speed, and no more boost until you start collecting tokens again, which means a period of inactivity.
;)
And yes, as the other commenter pointed out, this is actually an entirely sensible way to deal with "bursty" internet use and improve user experience without actually buying any more bandwidth. It would be really sweet if Comcast didn't do other stupid shit