While I was working for NetSapiens, I wrote a blog called Maximizing VoIP Quality Over Wireless Links with Codec Selection that explained how a service provider might improve VoIP QoS by using the iLBC codec.
Now, with the availability of the SkySwitch Mobile VoIP solution, I am happy to say that we are putting theory into practice. One way we do this, is by using our Always Available geo-diverse architecture to anchor media at the switch that is geographically closest to the end user.
But the most important strategy we employ to maximize QoS for users of the PBX Fone app is to leverage iLBC, the best available codec for callers over WiFi, 3G and 4G wireless networks.
The term codec refers to the sampling rate and compression scheme used to digitize an audio stream and, as might be expected, codecs with higher fidelity require more bandwidth. The table below (borrowed from Broadcom) shows the perceived speech quality and bit rates of ten different codecs across different languages. In a VoIP call, the goal is to use the codec which results in the best possible user experience. But because packet loss and delay reduce voice quality, a trade-off must always be made between codec fidelity and bandwidth consumption.
Most service providers consider G.711 and G.729 as the “standards” because virtually all of their existing vendors (SIP carriers and trunk providers) and equipment providers (SIP CPE and gateways) support these codecs – and therefore compatibility issues are less likely to arise. As reflected in the bandwidth calculation chart below (borrowed from Cisco), including overhead, G.711 requires nearly three times more bandwidth than G.729 (87.2 Kbps vs. 31.2 Kbps). It’s obvious then, that G.729 is a better choice than G.711 when bandwidth is an issue.
But, bandwidth consumption is not the whole story. There is another factor to consider when choosing a codec as a service provider: loss concealment. (Software developers often argue about the merits of a codec based on license cost, computational requirements, whether it is open source or encumbered by patents, and other such things. These issues, though interesting, are immaterial to the typical service provider and will be ignored in this discussion.)
In many wireless last mile situations (including WiFi and cellular data 3G/4G), bandwidth is subject to packet loss and/or unpredictable drop-outs due to ambient conditions. In these cases, after all the factors are taken into consideration the iLBC codec is the better choice because:
- among the narrowband codecs, it has similar payload size and fidelity to G.729
- it is supported by many SIP CPE/handset vendors (e.g. Linksys, Polycom, Apple iOS, Android, and many others); and
- it performs well in lossy conditions (referred to as robustness).
While there are other codecs with smaller payload size, or greater robustness, they are generally not supported by commonly available SIP Phones, and are therefore impractical choices.
The diagram below, taken from COMPARISONS OF FEC AND CODEC ROBUSTNESS ON VOIP QUALITY AND BANDWIDTH EFFICIENCY, illustrates that the call quality (referred to as MOS) of G.729 at 8% packet loss is equivalent to the call quality of iLBC at 15% packet loss – a nearly 100% improvement – in a typical WISP deployment scenario (by “typical” I mean a network segment where UDP packet loss is anticipated, but packet delay is not an overt problem). And, in real world usage, I have found that it is possible to carry on a reasonable conversation with packet loss approaching 30%, when using iLBC.
SkySwitch utilizes iLBC transcoders to allow calls from the SkySwitch mobilty app to accommodate the often lossy conditions of WiFi, 3G and 4G networks. Give it a try for yourself and see the difference that strategic codec selection makes.