VoLTE – Some Thoughts On Bandwidth Negotiation

In the previous blog post on VoLTE I discussed how speech codecs are negotiated during connection establishment. VoLTE uses the AMR and WB-AMR codecs that are adaptive and can encode the voice stream in several data rates and qualities. In the case of WB-AMR, voice streams can be sent with data rates between 6.6 and 23.65 kbit/s. In practice, many networks limit the codec rate to 12.65 kbit/s in the case of WB-AMR and to 12.2 kbit/s for the narrowband AMR codec. Let’s have a closer look how that is done in practice.

Why Limit Bandwidth for VoLTE?

In practice some networks limit the data rate to 12.65 kbit/s as speech quality improves only little with even higher data rates. Thus, network operators save capacity in the network and are also compatible to legacy networks that also only support 12.2 kbit/s for AMR and 12.65 in case they also support WB-AMR.

How is it done?

In practice the originator signals his speech codec bandwidth capabilities in the SDP part of the SIP INVITE message. Here’s an example:


the “b=” in the line stands for ‘bandwidth information’, ‘AS’ stands for ‘application specific (maximum)’ and the limit is 49 kbit/s. You might wonder why the maximum is 49 kbit/s when the WB-AMR codec is limited to 23.85 kbit/s!? The reason is that the 49 kbit/s includes the IP, UDP and RTP protocol overhead. In this case the bit rate was calculated for IPv6 as a transport protocol. In VoLTE networks that are not quite state of the art and still using IPv4, 41 kbit/s is signaled as the limit. Quite a difference but probably not that much in practice as Robust Header Compression (RoHC) is used on the air interface.

3GPP TS 26.114 contains tables with bandwidth requirements for different codecs and modes that also show where all the overhead comes from. Have a look at table K.6 for example which shows bandwidth requirements for different WB-AMR codec rates based on IPv6 transport in bandwidth efficient mode (not octet-aligned) and a frame length of 20 ms per IP packet.

During call establishment the network then assigns an LTE dedicated bearer with this or a lower maximum bandwidth (see also my post on VoLTE preconditions). In case the network wants to limit the speech bandwidth to 12.65 kbit/s, it only assigns a maximum bit rate of around 40 kbit/s for the dedicated bearer. This is sufficient for WB-AMR with 12.65 kbit/s which requires at least 38 kbit/s including IPv6, UDP and RTP overhead. Here’s how this looks like in the LTE Establish Dedicated Bearer NAS message:

Quality of Service Class Identifier (QCI): QCI 1 (1)
Maximum bit rate for the uplink: 40 kbps
Maximum bit rate for the downlink: 40 kbps
Guaranteed bit rate for the uplink: 40 kbps
Guaranteed bit rate for the downlink: 40 kbps

The originating mobile then sends a SIP UPDATE message after the preconditions are fullfilled (i.e. the dedicated bearer has been established) with a ‘b=AS:38‘ to indicate to the other end that this is the maximum speed that can be used. The other end performs the same actions on its end and finally the smallest value signaled has to be used.