When is buying something that says it's QoS useless for VoIP?
I've been looking for an "easy" way to improve VoIP voice quality on a single broadband pipe that's shared with general Internet use in an office.
In my research I found a $30 and $43 Ethernet switch on Amazon that both call themselves QoS (Quality of Service) switches. Wow. Can these cheap switches be the fix to everybody's VoIP problem?
The idea of a QoS device is that it will give priority to time sensitive packets travelling through it over other packets, which it will slow down or drop. This is normally done by your telling the particular QoS device how big the pipe is (the bandwidth available) so it can slow or drop non-time sensitive packets to the point where the pipe never gets close to being filled.
What QoS does is sometimes called "Traffic Shaping" (referring to IP packets). It's most often used for VoIP and Video Conferencing, but it can be applied to most any type of packet needed by a particular location by a QoS router. Need to get to a specific website over all others? Some routers will let you give a URL priority.
QoS is most often applied to outbound traffic only, where the router is equipped with enough memory to queue the non-priority packets (or drop them).
VoIP packets need a lot of help making it from end to end in the right order - with very few packets lost, and without much delay. So, it sounds like QoS is a no-brainer for giving them the best shot leaving a premise?
I was amazed how cheap these QoS switches were. When I got them and tried them, I realized that I had been ripped off. There's no way these switches can do QoS. They might try to shape the packets to give them some kind of priority, but it's of no help to VoIP.
The biggest problem with these cheap QoS switches? They aren't programmable. For a device to have any chance of prioritizing VoIP packets it has to know how much bandwidth it has to work with. These cheap "QoS" switches have no way of knowing that.
These don't work for VoIP QoS...
On the ZyXel switch the ports are color coded with the green getting the most priority, the yellow getting the next priority, and the gray no priority. It apparently does some traffic shaping, but I couldn't tell in testing.
On the D-Link switch all eight ports are the same. It apparently does some traffic shaping of some kind, but I couldn't tell in testing.
My test was simply to connect them one at a time to a non-QoS router. I plugged in all the VoIP traffic on one patch cord, and all the other traffic on another patch cord. On the ZyXel I plugged the VoIP into a green jack and the other cord into a gray jack. On the D-Link I just used the first two jacks.
I started a VoIP call (on a Polycom phone) and it sounded fine to the person on the other end. I started an FTP upload of a 3-gig file to our server and I sounded terrible to the person on the other end. The bandwidth meter on the PC said it was using the entire ADSL upload bandwidth. Both the ZyXel and D-Link acted the same, which was exactly what happened when I substituted a regular non-QoS switch for either of these. It sounded just as bad.
When I was plugging in the Polycom phone it struck me that maybe they do some traffic shaping on a VoIP phone's internal switch? Nope. Same results. As soon as I did an FTP upload to the Internet from the PC connected to the phone, my voice sounded terrible on the other end.
Note that some routers both with and without QoS may slow down the opposite direction if one way gets filled. It's always a bad idea to get close to filling an Internet broadband pipe if you're using VoIP!
Besides a QoS router, which might help VoIP depending on specific traffic and bandwidth available, you can get a load balancing or bonding router with QoS. That works great for non-time sensitive traffic but bonding and load balancing aren't a good solution for VoIP.
And if the two broadband connections into the router aren't the same speed, that's probably going to make VoIP voice quality worse. If a VoIP packet gets sent out the faster pipe, and one out the slower pipe, they definitely won't arrive at the same time and the call won't sound good.
On some bonding or load balancing routers you may be able to tell it to send all the VoIP packets out just one of the pipes to avoid problems from using two different speed pipes.
If you have a bonding or load balancing router that will use a 3G or 4G USB modem as a backup, VoIP is pretty much unusable on 3G or 4G. You'll have to tell the router not to use the backup for VoIP if you can.
I've tried to use g.711 (a 64K codec) and g.729 (an 8K codec) on both 3G and 4G. It's definitely not consistently usable, and there seems to be more latency (delay) on a g.729 call from transcoding. I think the newer OPUS codec may help, but I can't install the OPUS codec on an asterisk server.
You can go way beyond QoS routers by implementing MPLS (MultiProtocol Label Switching), which puts a label on each packet of data to indicate where it's going. The idea is that with the MPLS label the router simply sends the packet on, instead of inspecting it and deciding what to do with it (and how to combine it with all the other packets on the pipe if you have QoS implemented). That reduces latency because the router doesn't have to think about it much.
MPLS requires you to have a broadband provider who has an MPLS network that understands these labels, rather than regular routers looking at each packet and deciding what to do with it based on the contents of the packet's header.
MPLS itself isn't QoS and may not improve VoIP voice quality at all. QoS can be implemented within a tunnel on MPLS (which may or may not make a difference for VoIP).
A benefit of MPLS is that troubleshooting can be simplified when the router isn't making routing decisions based on IP packet headers. On the other hand, the complexity and cost of MPLS compared to a normal IP network is huge for a regular company (user). The broadband providers may be using it on their own networks to get your packets from one place to another, where it makes sense.
Implementing MPLS for VoIP at a company would be like getting a google self-driving car to go get milk, as opposed to a bicycle. They will both get you there, but one is going to be much more expensive than the other - while requiring a team of engineers to oversee your little errand.
The only sane answer to getting the best VoIP voice quality is to use a totally separate LAN for phones in the office, going to a totally separate broadband connection. With no connection between the networks in the office. That makes troubleshooting very easy! If you didn't our Bulletin about making VoIP calls sound great, take a look at it:
Separate VoIP Networks for Quality of Service
You can spend a lot of money buying and programming QoS stuff, but it's a much better idea to put that money into a dedicated pipe for VoIP. Just because you can do something like QoS or MPLS, doesn't mean it's a good idea. But hey, maybe there's a google self-driving car for errands in your future?