Amarisoft

Testing VoLTE (Voice Over LTE)
version 2024-10-17*
This document is based on the latest test release.
Features may not be present in your current installed software. You may check their availability in your release documentation.
If you require an up to date release, ask for it in a ticket.

Table of Contents

1 Introduction

This application note explains the procedure for testing Voice over LTE (VoLTE) phones using Amarisoft EPC and IMS server. Some configuration changes may apply if you use Amarisoft IMS server with a third party EPC or if you use Amarisoft EPC with an external IMS server. The verification steps could also be different depending on the commands available on third party EPC and IMS servers.

Following sections give you a brief background on IMS followed by an overview of Amarisoft IMS architecture. Next chapter gives some hints to check if your device is VoLTE capable as well as the steps to make your VoLTE call. The last 2 chapters focus on logging and troubleshooting to ease the debug process.

1.1 Background

IMS (IP Multimedia Subsystem) provides the framework for IP based multimedia services in a mobile network. IMS uses IETF protocol SIP (Session Initiation Protocol) to set up and control voice and video calls, as well as instant messaging. The most common application of SIP is the setup and termination of Voice over IP (VoIP) telephone calls. The inconvenience of VoIP is its lack of guarantee for a good quality voice communication. Voice calls typically require less than 150 ms of one-way latency from mouth to ear as per the ITU G.114 standard. This could not be guaranteed when using VoIP calls with voice traffic being transmitted over default bearer in LTE on a best effort basis.

VoLTE (Voice over LTE) is a GSMA (Global System for Mobile Communications Association) initiative proposed by operators for optimum support of voice and SMS over IMS in LTE. VoLTE is the service that enables operators to provide improved QoS over SIP-based VoIP. This is basically done by using dedicated bearers to carry voice traffic. The voice dedicated bearer should have typically a QCI (QoS Class Identifier) of one as per Table Table 6.1.7 of 3GPP TS 23.203. The QCI=1 represents conversational speech with guaranteed bit rate and a packet delay budget of 100 msec.

A user requesting access to the IMS domain requires a new level of registration. To provide the necessary attributes for registration to IMS, an ISIM (IP multimedia Services Identity Module) application was added to the UICC (Universal Integrated Circuit Card).

The ISIM application includes:

If there is no ISIM application, a backward compatibility mechanism is in place to derive the Home Network Domain name from the IMSI as described in the following steps:

  1. Take the first 5 or 6 digits, depending on whether a 2 or 3 digit MNC is used as per 3GPP TS 31.102 and separate them into MCC and MNC; if the MNC is 2 digits then a zero shall be added at the beginning.
  2. Use the MCC and MNC derived in step 1 to create the domain name mnc<MNC>.mcc<MCC>.3gppnetwork.org.
  3. Add the label "ims." to the beginning of the domain.
  4. The result would be in the form of ims.mnc<MNC>.mcc<MCC>.3gppnetwork.org.

In the same way as above and in the absence of ISIM, IMPI could be derived from the IMSI as per 3GPP TS 23.003 clause 13.3:

  1. Use the whole string of IMSI digits as the username part of the private identifier.
  2. Convert the leading digits of the IMSI, i.e. MNC and MCC, into a domain name, as described above.
  3. The result would be in the form of IMSI@ims.mnc<MNC>.mcc<MCC>.3gppnetwork.org.

IMPU can also be derived from the IMSI if UICC does not contain an ISIM. This IMPU takes the format of a SIP URI and is represented by sip:IMPI where IMPI is derived as described above. Note that this does not prevent the user to define other IMPUs.

The following example explains the above rules:

IMSI = 234150999999999
MCC = 234
MNC = 15
Domain Name = ims.mnc015.mcc234.3gppnetwork.org 
IMPI = 234150999999999@ims.mnc015.mcc234.3gppnetwork.org 
IMPU = sip:234150999999999@ims.mnc015.mcc234.3gppnetwork.org 

1.2 Amarisoft IMS Architecture

The main components of an IMS server are as follows:

Amarisoft IMS component, LTEIMS, is an IMS standalone simple server. It has a built-in P-CSCF, I-CSCF, S-CSCF and an internal HSS. It supports precondition and dedicated bearer using Rx interface.

img/ims_arch

The LTEIMS server could only be used for voice calls between 2 UEs registered within the Amarisoft LTE network. It can not be used for voice calls between a UE registered in Amarisoft network and any external UE in other networks. Connection to Circuit Switch networks is also not possible.

2 Making VoLTE Calls

2.1 UE Configuration

There is no generic rule to activate VoLTE in a UE as different phones might have different menus. Below, you can find some useful information for Samsung S5 and OnePlus 3 devices.

For a Samsung S5 device, please go to Settings/More networks/Mobile networks of your handset and check VoLTE Call is ticked:

img/s5-volte

For a OnePlus3 device, the menu is under Settings/SIM & network

img/oneplus3_volte_menu

Note that the availability of the VoLTE menu also depends on the UICC used. The default Amarisoft MME configuration file defines two PDNs that you should add to your device.
On a Samsung S5 device:


On OnePlus3 device:

In order to test VoLTE in IPv6, make sure you set the following parameters in your APN setting:

2.2 Network Configuration

The ims PDN defined in fille mme-ims.cfg allows you to test VoLTE in IPv4 and IPv6. The IP version to be used could be controlled by setting pdn_type to ipv4, ipv6 or ipv4v6 in file mme-ims.cfg.

2.3 Step by Step Volte Call Testing

This section provides instructions for establishing a VoLTE call.

At this step, you can start the VoLTE call. You have the possibility to do

2.4 VoLTE with Test SIM Cards

Test sim cards usually have the same IMSI which means that there is no way in EPC and IMS server to distinguish between devices using the same test SIM card. Amarisoft feature multi-sim allows you to use the same test SIM card in several devices and yet be able to differentiate UEs with the same IMSI. Note that this is only valid if XOR authentication algorithm is used in the SIM card. To enable this feature, you need to set multi_sim field in ue_db-ims.cfg file to true. In this case, the UEs could be distinguished with their IMEIs (International Mobile Equipment Identity).

As long as you have only 2 phones and you would like to initiate an end to end call between the 2 phones, our default configuration with multi_sim: true in ue_db-ims.cfg is sufficient. You can call other phone by calling 600. For more than 2 phones, it is mandatory to create an IMPU associated to each device IMEI as follows:

impu: [  
        "001010123456789",
        { impu: "tel:0701", imei: "359027072930540" },
        { impu: "tel:0702", imei: "356853053276500" },
        { impu: "tel:0703", imei: "359027072637360" },
],

Of course you have to update the imei fields by the ones for your UEs. The easiest way to find imei of your UEs is to check the output of ue command in LTEMME window. It will show you the IMEISV (IMEI Software Version) of the attached devices. You can also find IMEI directly from your phone. Check settings/more/about device/status in Android and you would see IMEI.

IMEI = IMEISV - last 2 digits + 0

Note that you should always maintain the default IMPU derived from your IMSI in your IMPU list.

2.5 Emergency calls

Emergency calls are supported (with and without SIM card), but might require a few settings in the various configuration files:

You can look at the configuration files delivered for examples.

3 Logging & Wireshark

The Amarisoft IMS server generates a log file /tmp/ims.log that could be used for for further analysis and debugging. There is also the possibility to take a Wireshark log of the interface between LTEMME and LTEIMS. Wireshark is the industry-standard free IP and SIP protocol logging and analysis tool. Wireshark complements our internal IMS logging capability by providing an independent SIP log.

The name of the interface to log with Wireshark could be checked with ifconfig command. If the LTEMME and the LTEIMS run on the same machine, by default the loopback interface is used for their communication. The loopback interface is usually named lo. Assuming lo interface is used, you can take a Wireshark log by running the below command:

tcpdump -i lo -w ims.pcap

Note that you need to deactivate IPsec to be able to visualize SIP messages by replacing

ipsec_ealg_list: ["null", "aes-cbc", "des-cbc", "des-ede3-cbc"],

by

ipsec_ealg_list: ["null"],

4 Troubleshooting

Below are some of the most common issues encountered during testing with recommended actions to address each issue.

IssueCause/Correction
Can not initiate VoLTE call
  • First thing is to check the LTEMME log. There must be a P-CSCF address request in NAS Attach request or NAS PDN connectivity request messages.
    [NAS] UL 0064 ESM: PDN connectivity request
    Protocol discriminator = 0x7 (EPS Mobility Management)
    Security header = 0x2 (Integrity protected and ciphered)
    Auth code = 0x50ad48d0
    Sequence number = 0x04
    Protocol discriminator = 0x2 (EPS Session Management)
    EPS bearer identity = 0
    Procedure transaction identity = 3
    Message type = 0xd0 (PDN connectivity request)
    Request type = 1
    PDN type = 3 (IPv4v6)
    Access point name = "ims"
    Protocol configuration options:
      ext = 1
      configuration protocol = 0
      Protocol ID = 0x8021 (IPCP)
      Data = 01 00 00 10 81 06 00 00 00 00 83 06 00 00 00 00
      Protocol ID = 0x000d (DNS Server IPv4 Address Request)
      Data =
      Protocol ID = 0x0003 (DNS Server IPv6 Address Request)
      Data =
      Protocol ID = 0x0001 (P-CSCF IPv6 Address Request)
      Data =
      Protocol ID = 0x000c (P-CSCF IPv4 Address Request)
      Data =
      Protocol ID = 0x0002 (IM CN Subsystem Signaling Flag)
      Data =
      Protocol ID = 0x000a (IP address allocation via NAS signalling)
      Data =
    
  • Assuming P-CSCF request has been sent, you must check in the Wireshark capture of the interface or the LTEIMS log file that the UE is sending a REGISTER SIP message. This message is generally sent via UDP on port 5060. In some rare cases, TCP is used instead.
There is no P-CSCF address request in NAS messages
  • Check if you see a VoLTE menu in your phone. If you do not see it, it means VoLTE support is not enabled.
  • Sometimes, you need to access hidden menus to activate IMS and VoLTE. On some Android phones, you have the possibility to access these hidden menus by typing *#*#4636#*#*.
  • Some phones require a firmware update before activating IMS and VoLTE. Make sure you accept and install updates on your phone.
  • Some phones only enable VoLTE with certain mobile operators and UICC cards.
There is a P-CSCF address request in NAS messages but no REGISTER SIP message is sent by the UE
  • Some phones require a special name for their IMS APN. Check NAS Attach request or NAS PDN connectivity request messages in the LTEMME log to see which APN names your device is requesting. Change the access_point_name of your PDN in file mme-ims.cfg accordingly.
  • Some phones require an ISIM application in the UICC before enabling VoLTE.
  • Some phones only enable VoLTE with certain mobile operators and UICC cards.

5 Additional Information

This document is copyright (C) 2012-2024 Amarisoft. Its redistribution without authorization is prohibited.

This document is available without any express or implied warranty and is subject to change without notice. In no event will Amarisoft be held liable for any damages arising from the use of this document.

For any technical issue, please raise a ticket from our support site at https://support.amarisoft.com/.
To learn more about our technology and solutions, e-mail us at customer@amarisoft.com or visit https://www.amarisoft.com.