You know, the nice thing about technological quandries is simply that there’s usually a solution around that fits both sides of the quandry.
From my post the other day you can tell that I was in two minds of what to do regarding my router, Vonage and so forth. My decision was between building a new Linux-based firewall, or buying a firewall that had some more advanced functions (QoS). So I did both.
What? Well, I did a bit of research on what might be my best option, and found that the Linksys WRT54GS might be my best bet. It’s a Wireless G access point with a basic firewall and four-port switch. OK, so that’s pretty common… but what’s not so common about this hardware is the fact that you can actually install Linux on it.
The box itself actually uses Linux out of the box, but there’s actually a significant third-party community out there that actually creates Linux distributions to install on these units that extends the functionality way beyond what Linksys intended originally. There are some catches, like the fact that the newest hardware revisions of this unit have smaller memory and therefore aren’t quite as “open” as the earlier models… but this still is a great option for those that want the flexibility of a Linux box that’s well supported, and a nice piece of hardware in and of itself.
So I started by taking it home… and before even powering it up I started to work on installing OpenWRT, which seemed to be a good option since it’s a “from scratch” Linux distribution for the WRT hardware. My thinking was that a modular system would be ideal from a flexibility standpoint. If you’re a true Linux geek then this is the way to go. The base install results in a router that works “out of the box” with basic NAT, firewall and wireless access point functionality… even a basic web interface if you don’t fancy the command prompt to configure.
I worked with this for a while, until I realized that getting it up to the level of functionality I was hoping for would take a while, a lot of packages, a lot of experimentation and a whole lot of configuration. Not ideal. For me, functionality in this case trumped flexibility since I needed this up relatively quickly.
So I switched to DD-WRT instead. While it’s based on the same code, and in fact is very similar it includes a lot more functionality “out of the box” and a web interface that’s a lot more comprehensive. In that regard, it resembles the default Linksys OS more than it does OpenWRT, but does allow you to get a working configuration quicker that can then be extended.
Setup was quick and simple, and though there are some things I preferred about OpenWRT and its method of doing things, this DD-WRT works pretty well all things considered. Even setting up the basic QoS rules was a lot quicker, and I was able to tune the rules rapidly and efficiently. No problems.
So how well does it work? Fantastically well in fact. Although the documentation for DD-WRT is not quite as mature as OpenWRT’s, I think it was a lot easier to set up for someone with a bit of knowledge of networking and so forth. I configured it out, set up my wireless (support WPA2!!! Yeah!!) and began defining my choice of rules.
I started with the high-load stuff; FTP transfers, BitTorrent client and so forth; hell, even SMTP rates in there at times. What I did was set all these at “Bulk” rate. This is the lowest priority setting, which means that when I’m downloading stuff it’ll use all the available bandwidth, but pretty much everything interactive (web pages, general surfing) will take precedence. This is fantastic… even with a BT client pulling Fedora Core 4 and saturating my bandwidth, I can still fire up Firefox in another window and browse the Internet as though nothing out of the ordinary was going on. In fact, since I set my maximum QoS-capped rate at about 90% of my actual bandwidth (per my ISP), their buffers don’t get maxed as often and my latency is lower. This means that generally web surfing is “snappier”.
Then I took my web server and gave it an “Express” rate. This means that web traffic will hopefully take precedence over pretty much everything else on the network, thus people hitting my web server should now get much better and more consistent performance since I’m now not causing a slowdown when I’m using the pipe.
Beyond that, I then set Vonage traffic to be prioritized at “Premium” rate, thus it takes precedence over everything else and pushes everything else on the connection into the background when it’s being used. The upshot is it doesn’t break up as bad, even on heavy loads when the Internet connection is being nailed. There’s still some breakup, but I think a little more QoS tuning should put paid to that (in combination with my line upgrade that’s happening on Monday 9th January). The quality now is as good as a landline… and it’s more reliable than it was before.
Now, it’s still having some problems. Again though, like I said just some tuning ought to put paid to the problems.
So just some more information on the life of a geek.