Home Routers w/ Decent QoS Performance? 52
danwarne asks: "With VoIP becoming rapidly more popular, quality of service (QoS) settings in home routers are also emerging as a key piece of functionality for the average user. QoS settings, which allows important or time-sensitive network traffic to be prioritized over less important packets, used to only be offered for corporate-level routers. Now, many hardware manufacturers have started including such capabilities in their mainstream routers, some doing it simply by a firmware upgrade without any change to the power of the underlying hardware. The emerging problem is that most home routers don't do a very good job at all with QoS, especially under heavy load (from P2P apps, for example), and home routers don't seem to have what it takes to prioritize sending Voice over IP packets first, leading to glitchy VoIP calls. VoIP operators around the world are facing this problem as they try to turn VoIP into a 'consumer-friendly' plug-and-play service. Does anyone know if someone has done extensive testing on home routers and modem/routers that investigates their ability to deliver QoS? Also, what hardware elements would be required in a router to do QoS reliably?"
Easiest answer: (Score:5, Informative)
Re:Easiest answer: (Score:5, Informative)
if you're wondering what all the stink is about, read here: http://wrt54g.serwer.net/
Re:Easiest answer: (Score:4, Informative)
Re:Easiest answer: (Score:5, Informative)
I've used the Sveasoft firmware in the past, but I immediately returned the router. That WRT54g is just not fast enough to deal with my 8mbps internet and do QoS on it at the same time. I went back to using my custom iptables and QoS scripts on my linux box which is an athlon xp 2000+.
That Sveasoft dude is an evil idiot, and needs to be hit on the head with a GPL stick. I wouldn't pay him for it, even if he included the antidote.
Not surprised (Score:2)
A friend of mine bought one, it would crash every 10-15 minutes if you were running WEP with light-moderate WLAN use.
30 minutes or so if WEP were off.
2-3 hours even at moderate-heavy loads if you were only using the wired ports.
Best bet might be some sort of Mini-ITX box.
Re:Not surprised (Score:2)
(I'm actually interested in the results, since I've got a WRT54G I've been meaning to put OpenWRT on for QoS and to use as a firewall/DMZ/public wireless box.
Re:Not surprised (Score:3, Insightful)
A friend of mine bought one...
And if that anecdote were typical a huge community wouldn't have grown up around the unit and Linksys would be buried by the support nightmares.
It could be that your friend got a bad unit -OR- maybe hundreds of thousands of people don't realize that their units are crashing all the time. We'll let Occam's Razor decide that one.
Re:Not surprised (Score:2)
Re:Not surprised (Score:2)
I'm sorry, I didn't notice that a huge community of avid networking hackers and unix gurus had grown up around Windows 95. I didn't even know you could customize your build of Windows 95. I must have been asleep.
Re:Not surprised (Score:2)
I have been running the Sveasoft firmware and thought that it was the problem at first. However, after reverting back to the stock FW I got the same problems without any of the benefits.
For a long itme I thought it was my Xbox causing problems with the network. I only really got steady trouble when I had the Xbox turned on. It took longer than it should have for me to correlate how hot the A
Re:Easiest answer: (Score:2)
Banning people from the forums who've paid $20 and happen to be using the same nick on another forum? Sending people nastygrams for discussing the source? Fuck James.
I've never heard of a purportedly "open-source" developer acting like such a dickweed before...
Re:Easiest answer: (Score:4, Informative)
Try to avoid version 2.2 of this router if you're at all interested in more advanced networking stuff (VLAN, per-port QoS, etc).
Versions 2.2 use an Atmel ethernet bridge chip which supports all sorts of management tricks, many of which are supported in the Sveasoft firmware. This makes some things very easy - you can run an ethernet drop your neighbor's house and give them their own VLAN to keep them out of your network, for example. Or plug your VoIP terminal into its own port, and give that physical port QoS priority over everything else.
It's almost like having a Linux box with five independant ethernet interfaces, plus 802.11g, for $60 (!).
Version 2.2, which is the latest at this time, is essentially the same unit except that it contains a cheap unmanaged Broadcom ethernet bridge. Which works fine, except that your potentially lovely 5-port networking monster just turned into a 2-port model with a built-in dumb 10/100 switch. Which means that you'll need at least two of 'em (or a whole different plan) to split the cable bill with your neighbors, no more per-port QoS, and such.
Otherwise, they'll all run the same firmwares, and are feature- (and cost) identical.
FYI.
Re:Easiest answer: (Score:1)
Version 2.2 contains a cheap unmanaged Broadcom ethernet bridge
I assume you mean "versions prior to 2.2" in the first sentence?
Re:Easiest answer: (Score:2)
Slashdot ate my less-than symbol.
To summarize:
v2.0 and prior versions of the WRT54G are excellent.
v2.2 is also excellent, though less featureful.
And, to be complete:
The WRT54GS v1.0 is excellent, and has twice as much ram as a v2.x WRT54G, along with VLAN abilities.
The WRT54GS v1.1 is also excellent, and also sports extra RAM, but suffers from the same limited Broadcom bridge chip as the v2.2 WRT54G.
Re:Easiest answer: (Score:2)
Anyplace to find out more on what the different revisions have/don't have etc?
Commercial Products are Inadequate (Score:2)
Re:Commercial Products are Inadequate (Score:4, Insightful)
QOS is most freqently needed on upstream data since downstream has higher speeds. Since most ISP's don't support QOS at all, about the only place you have any control is upstream on the local loop.
Linksys WRT54GS w/ Sveasoft (Score:5, Informative)
Then install the Sveasoft firmware. The shipping version is free, access to the beta version & support for it is US$20. Some folks dissaprove of this strategy but the FSF has green-lighted it and it does pay for the project.
QoS, VPN (endpoints), SSH, filtering, upped antennae power, it's all there. They've extended the Linksys web interface to handle most of the expanded functioniality and below that there's a real working Open Source Linux with a happy command line.
Sure it's not an old clunker running something else. It's also small, quiet, stable, wireless if you want to take advantage of that. I dunno about you but being able to replace a 24/7 big noisy hot box in my living space with a smaller quieter cooler one is worth the small premium.
Re:Linksys WRT54GS w/ Sveasoft (Score:5, Informative)
Re:Linksys WRT54GS w/ Sveasoft (Score:2, Interesting)
You can take advantage of it today for free if you use the openwrt.org distribution instead of Sveasoft
I use the openwrt, the S provides quite a bit more space for stuff.
Optimizing ADSL (Score:5, Interesting)
A friend of mine wrote his master thesis about optimizing the usage of asyncrone internet connections (often ADSL connections). He used our dorm as a living experiement, we have 307 people living here, and share one 8196 kbit down / 768 kbit up ADSL connection. All our ports are open and everyone has a puplic ip address (well almost, because we only have a /24).
The results are very very good. The link is actually useable now. SSH connections are quick. people can and does use p2p without trouble. VoIP works most time of the day, but during "rush" hour it is not possible, most likely because we are just too many users for such a small connection. Games might also work at some time during the day, but i dont game so i wouldnt know. I do hear that some people complain that they can not game. The rest is good, SSH, HTML, news, irc/IM and other chats works as well. Try it, and you dont even have to limit your bandwidth.
http://www.adsl-optimizer.dk/ [adsl-optimizer.dk] contains his master thesis.QoS to where? (Score:4, Informative)
Re:QoS to where? (Score:3, Informative)
N
Re:QoS to where? (Score:1)
Re:QoS to where? (Score:1, Informative)
Re:QoS to where? (Score:1)
Re:QoS to where? (Score:2)
QoS has to be supported on the other side... (Score:4, Insightful)
Consider the case of downloading a big file, and trying to do VOIP. The incoming VOIP packets and the incoming download packets hit your ISPs router.
Now, unless the bandwidth between you and your ISP's router is larger than the bandwidth between your ISP's router and the rest of the world, there will be an outstanding queue of packets to be sent from the router to your computer. If the router does not honor the QoS bits of the incoming packets, and send the VOIP packets first, then your VOIP will be choppy, even though your router is sending all outbound VOIP packets out first.
Moreover, even if your ISP supports QoS, if the machine generating those packets does not set the QoS bits correctly, there will be no way for your ISP's router to assign meaningful priorities - so even though you've tweaked your system to set the QoS on outbound packets correctly, if you are talking to Aunt Tillie, and her computer is not setting the QoS bits, then the incoming traffic will not be sorted correctly.
Not necessarily. (Score:5, Interesting)
The big issue with QoS is that your ISP also has to support it, or you don't get the benefit of it.
You don't get the full benefit, but you can still use QoS to shape incoming data streams, at the expense of giving up a portion of your inbound bandwidth.
The way this works is that although your ISP will send whatever packet is at the head of the queue, your router can still reorder the incoming packets before delivering them to your computers. That looks, at first glance, like a silly idea, since the router has the data and there is no bottleneck across your 100Mbit LAN, why shouldn't it just deliver what it gets?
By delaying, or even discarding, inbound packets, your router can use TCP's throttling mechanisms to slow the rate at which the origin server sends data. When the origin server doesn't receive acknoledgement that a packet was recieved, it not only retransmits that packet (after a delay), but it also adjusts the window size. This is a critically-important property of TCP. Without it, every connection that crosses a low-bandwidth link would suffer lots of dropped packets and would have lots delays during which even the slow link is idle. That doesn't happen, because TCP automatically "tunes" every connection to a rate at which the traffic flows smoothly.
When your router drops inbound packets of a download that exceeds the amount of bandwidth the router wants that connection to consume, TCP adjusts the data rate downward until not many packets are dropped.
So, if your router "knows" the total incoming bandwidth, and if it can track all of the incoming data streams, it can dynamically choose a target bandwidth rate for each of those streams, and then enforce that rate by discarding packets whenever the stream exceeds its target rate. Linux QoS capabilities also include "random early detection", which randomly chooses to occasionally discard a packet from a stream that is close to its target bandwidth, to keep it from going over even briefly.
The downside of this QoS is that in order to make it work effectively you have to make sure that the ISP rarely queues packets and hardly ever discards them. To do that, you have to configure your router to divvy up an incoming stream that is slightly smaller than you really have, because this sort of "remote control" of the origin servers' data rates is imperfect and you will get occasional "blips" of over-target incoming data.
Re:Not necessarily. (Score:3, Interesting)
Re:You have no idea what you're talking about (Score:4, Insightful)
Yes, I abused the terminology pretty badly, but I notice you didn't correct my explanation. Would it have been clearer if I'd spent an additional paragraph or two defining the words precisely? I doubt it. And I would have had to, because all of the previous conversation was misusing the terminology. Sometimes to communicate effectively you need to go along with minor errors in order to avoid clouding the main point.
As to your specific comments:
First off, you *can't* shape incoming data - you can *police* it, but you can't shape it (because you've already received it.)
But you can shape the future packet stream by dropping or delaying packets and provoking a reaction from the origin server. You could argue that you're not shaping the traffic so much as convincing the origin server to shape it, but what's the point in drawing that distinction?
Shaping refers to altering the traffic flow by delaying packets. You can't delay something you've already received.
That's a rather funny comment. If your job (as a router) is to pass packets along, of *course* you can delay something you've already received. It's usually simpler and nearly as effective (for TCP) to simply drop it, but you could certainly put it on a queue to be delivered a bit later.
Second of all, QoS does not shape or police data at all - it has to do with assigning priority, which the router uses for advanced queuing. Note that you can *use* QoS to shape your data, but not the other way around.
LOL. The sentence fragment you're disputing is: "you can still use QoS to shape incoming data streams." You contracticted that with: "you can *use* QoS to shape your data". I'm not pointing that out to imply that you're saying I was right but to point out that that *is* a useful way of describing the situation, even if it's not perfectly accurate.
Yes, I understand that QoS is really about prioritization of traffic, but unless you are actually trying to describe the distinct phases of processing in a sophisticated router, splitting this hair serves no purpose.
Also, 'reordering' packets has *nothing* to do with shaping or QoS. Reordering has to do with individual TCP streams.
That's one usage of the word. It also applies in other networking contexts.
Do yourself a favour and go get a *real* book on this stuff, you'll look like a lot less of a moron.
Try reading more than a single book on this stuff and you'll find that the terminology isn't as hard and fast as your narrow experience has led you to believe. Further, spend some time trying to explain complex subjects to non-specialists and you'll discover that perfect accuracy in terminology is not at all the same as effective communication.
Bandwidth (Score:3, Insightful)
offtpc - run bsd server as firewall (pf settings!) (Score:5, Insightful)
...
OpenBSD would be great to learn on as it will definately push you into the documentation and get you used to some of the conventions used (slices v. partitions, startup scripts, etc.). I'd suggest you use an older or spare computer if you've got extra or can pick one up cheap. You could also just set aside space on those 80 gigs you've got. READ UP ON PARTITIONING, USE OF LARGE DRIVES, ETC. BEFORE YOU START ANYTHING!
Once you get some OpenBSD under your belt, put a box in service at your network connection (right behind you cable/DSL connection?) and learn to setup pf (packet filter - built in). Experiment with AltQ and get yourself a good firewall/NAT in place (junk the Linksys). Not too much trouble and the docs at OpenBSD - pf [openbsd.org] [openbsd.org] are quite good. Here you could experiment with adding a web server or MTA (if you don't have tons of boxen to keep your "real" services in some kind of dedicated DMZ). My home OpenBSD box forwards BitTorrent, Freenet, VNC and SSH to a variety of machines in my house. I also prioitize packets in the following order: 1st to tcp_ack_out, [then] Vonage telephone, ssh_interactive, everything else, freenet, and finally ssh_bulk. Keeps my phone line crisp and prevents freenet from destroying my ssh sessions' latency. You can do this with other products but I've had a good time (and have learned quite a bit) constructing my
Then build youself a FreeBSD box. This should be cake. 5.x should install without a problem for you and you've got access to all the ports you could ever imagine. Your experience with OpenBSD will help you understand some of the differences you'll encounter. Makes a great desktop. OpenBSD will work fine as a desktop machine but I've never done it. Same for NetBSD I suppose. Give it a whirl. I'm sure you'll learn a ton and be quite happy with whatever you decide.
Don't short yourself on learning OpenBSD. It is awesome, security aware and has some wonderful features (need encrypted swap case the feds might knock down your door at any minute? check.). It may just serve all your needs and knowing it is surely going to be useful to either yourself or others in the future. Use it for utility and the ability to sleep at night with your data behind it. (still better go with RSA keys on sshd though). Check out http://undeadly.org/ [undeadly.org] [undeadly.org]
Don't short yourself either on checking out FreeBSD. I moved from Linux to "the beast" some 5 years ago and haven't looked back since. The 4.10 machine I use everyday has been up 168 days as of today. I had at shutdown the machine previous to that due to a scheduled power outage. It sits fully exposed on an unprotected IP and runs user apps, a web server and mail. Not a single problem in years. FreeBSD has certainly served me (and some clients of mine) well.
If you're a system developer or like playing with things at the driver level or experimenting with new code, new systems or want to put your toaster on the network, don't deny yourself a NetBSD 2.x install. Wonderful features at the leading edge. Very capable and I hope to get some more experience with it myself one day. (a NetBSD page [starling.us])
Learn OpenBSD. You won't regret it. [FreeBSD and NetBSD will run pf as well]
Here's the juice: (yes - read the docs and modify for your own setup. The various sections need to be in a certain order too (options, normalization, queueing, translation, filtering)
Re:offtpc - run bsd server as firewall (pf setting (Score:2)
Re:offtpc - run bsd server as firewall (pf setting (Score:1, Interesting)
Re:offtpc - run bsd server as firewall (pf setting (Score:2)
That's very similar to what I hope to set up with my OpenBSD bridge. Now to profess my ignorance: You're queueing everything on the external interface (flowing to the Internet) but nothing on the internal*? Is that the recommened practice for a small home/office?
* I can see the mistake I made here. With a bridge I should only try and filter on one (the external) interface.
And you other hardware...? (Score:3, Informative)
Look at your other hardware. If your router can put packets out at 100Mbps, and your cable modem can put out packets at 1.5Mbps, implementing QoS on your router won't get you anywhere--you're router's packet queues are empty. Your cable modem needs to implement QoS too. Cable modems have huge packet queues and can introduce whole seconds of latency--they're usually optimized for throughput only.
You've got, as I see it, three potential solutions:
There's more to designing a network archetecture than just buying the hardware. You have to really understand what each element of your network is actually doing.
Re:And you other hardware...? (Score:2)
You can't go wrong with Cisco (Score:3, Informative)
The 806 is a dual Ethernet router that will do a good job with QoS. It handles Low Latency Queuing for VoIP (essentially priority queuing - whenever it sees a VoIP packet - or any other type you define as high priority - it places it at the head of the output queue. It also supports Committed Access Rate (CAR) for restricting traffic rates for traffic patterns that you define (e.g. by IP address, protocol, mac address, combinations of these). Class-based traffic shaping which smooths the output rate to specified bit rates. CAR polices, shaping controls the actual rate of transmission. It also supports a number of other congestion management features along with a good deal of Cisco's higher end features.
The 831 is similar to the 806, but includes a built-in hardware accelerator for encryption that enables 3DES at rates of 2 Mbps or more.
The 1710 includes all of the above, including the encryption module, and many more features for QoS and general router functionality.
All of the above support a stateful firewall, IDS signature matching, syslog, etc., etc.
If you like/need a web GUI, then the 831 or 1710 are the way to go. Be sure and download Cisco's SDM for greatly improved web-based configuration and management.
Data sheets for the above can be found in the following locations:
806 [cisco.com]
831 [cisco.com]
1710 [cisco.com]
SDM [cisco.com]
If you're using Vonage... (Score:2)
Both are combinaton routers / ATAs in one device, so QOS is quick and seamless.
Only down side that I can see is that they only have three physical ethernet ports each (not counting the WAN port), so if your wired network is more than three nodes, you'll need a switch or some other additional solution.
The firmware even lets you control QOS further, by connection (LAN port 1, 2, 3, etc), by "application" (FTP, HTT