As mentioned in the previous post, getting endpoints to apply QoS tagging is only half the battle. We also need the PBX to apply tagging on outbound packets.
My current PBX is 3CX version 9, running in a Windows 7 virtual machine.
I initially planned to use 3CX’s native DSCP tagging capability to apply tags. But that didn’t work. According to this 3CX forum thread, this is due to a limitation in Windows 7; the QoS API has been “banned.”
The recommendation is to follow this blog post to set up QoS through Policy. Sure enough, that works fine. I did modify the instructions a bit for my environment:
- I used Group Policy rather than Local Policy, simply restricting the scope to the virtual machine running 3CX.
- To be consistent with my endpoints, I applied DSCP 46 (Expedited Forwarding) rather than 56 as recommended in the blog post.
- Rather than set up one policy covering all traffic from the PBX machine, I set up three policies, each one for a different 3CX executable:
3CXMediaServer.exe covers standard RTP traffic on any port.
3CXPhoneSystem.exe generates the SIP traffic (port 5060 by default).
3CXTunnel.exe is used when tunneling from a 3CX softphone (port 5090).
My Group Policy looks like this:
Now all VoIP traffic inside my network is tagged with DSCP 46.
Next step would be to get calls to and from the VoIP provider to be QoS tagged. Oh, and every Internet switch between me an them to use QoS for prioritizing packets. Yeah, right. At this point, getting QoS to work beyond the firewall seems pretty unlikely for a small business on a standard DSL or cable connection.