Bandwidth: I has it

My connection speeds to various services seem to fluctuate greatly. I spent some time this afternoon analyzing my network traffic and tried to figure out what could be done to keep things speedy.

The first thing was to determine the scope of the “network” I’m referring to. I used the excellent bandwidth analyzer SpeedTest to connect to servers in various parts of the world, and the results were very interesting, if just about what should be expected.

For instance, check out my rate as I connected to a Munich server.

Unbelievable. It was very nearly a record high for the sit, but was short by about 2Mbps. But when I opted to establish a connection with a server more geographically distant, like Saudi Arabia, the results were not as stunning.

Ouch. This was the worst result I could find, actually. I began to sample connections with the Faroe Islands, New York City, and San Franscio, and all went rather well.

Basically I’m on an absolutely monster connection here, but it really depends on what one is doing with the bandwidth available. I’ve already confirmed with friends here that our university ISP is performing traffic shaping, namely strangling connections on protocols like BitTorrent, similar to the affair that recently landed Comcast in hot water. Fortunately, using RC4 encryption gets around this limitation very easily, and ensures the packets flow freely in glorious digital liberty.

But there are definitely downsides to disguising network traffic like this. I’ve noticed that if I have connections open across many different protocol types, basic things like surfing experience slowdown. This is absolutely unacceptable, as I need my feeds. But I tend to max out my number of connections fairly easily.

The solution to keep things like surfing responsive while maintaining functioning connections across other protocols was to configure quality of service settings on my router. Wikipedia tells us:

Quality of Service is the ability to provide different priority to different applications, users, or data flows, or to guarantee a certain level of performance to a data flow. Quality of Service guarantees are important if the network capacity is limited….

Now, as demonstrated by the bandwidth graphs above, it seems silly to say that my network capacity here is limited. As explained, certain protocols are more problematic than others, and maintaining their solid performance can complicate connections on other protocols. But there’s another issue at work here, which is that I’m running all my traffic through a little Linksys WRT54GL router. This simple piece of hardware can easily get overloaded by hundreds of active IP connections, having only a 200Mhz processor and 16MB of RAM.

Thus the quality of service configuration. By telling the router that HTTP traffic (web browsing) is of utmost importance, my surfing will always be lightning fast, as it HTTP requests will steal bandwidth from other protocols as needed. This is what my settings look like:

Now’s as good a time as any to mention that I’m using DD-WRT, an open source firmware for routers that adds advanced functionality. (Lifehacker covered it in a piece called Turn your $60 router into a $600 router.) Although I’m considering switching to Tomato, I’m still quite happy with DD-WRT, and don’t ever foresee myself going back to using closed, proprietary firmware.

I’m off to partake in a very speedy and responsive Wikpedia clickfest. May Firefox’s tab anxiety be damned.


About this entry