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.
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:
- A private ID called IMPI (IP multimedia private identity). IMPI is typically assigned by the home operator and is
used to identify the IMS user’s subscription. Its main role is to support the authentication procedure during
registration. For its syntax, the IMPI shall have the form
username@realm
as specified in clause 2.1 of RFC 4282 in accordance with 3GPP TS 23.003 and 3GPP TS 23.228. - One or more public IDs called IMPU (IP Multimedia Public Identity). IMPU is primarily used for user-to-user communication. The
public identifier serves as a basis for message routing for IMS session-based SIP messages (e.g. INVITE). An IMPU could take the form of either a SIP URI (Uniform Resource Identifier) or a tel URI. A SIP URI is represented by
sip:user@domain
as per 3GPP TS 23.003 or 3GPP TS 23.228 while a tel URI is typically defined as a series of digitstel:+15551234567
. - Home domain ID. The Home Domain ID provides the means by which that IMS routes a users’ registration request to the Home IMS Network.
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:
- 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.
- Use the MCC and MNC derived in step 1 to create the domain name
mnc<MNC>.mcc<MCC>.3gppnetwork.org
. - Add the label "ims." to the beginning of the domain.
- 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:
- Use the whole string of IMSI digits as the username part of the private identifier.
- Convert the leading digits of the IMSI, i.e. MNC and MCC, into a domain name, as described above.
- 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:
- P-CSCF (Proxy-Call Session Control Functions): The P-CSCF is the first point of contact for a user. It is assigned to an IMS terminal before registration, and does not change for the duration of the registration.
- I-CSCF (Interrogating-CSCF): The I-CSCF is the entry contact within an operatorâs network for all connections destined to a subscriber. It also forwards SIP request or response to the S-CSCF.
- Serving-CSCF (S-CSCF): The S-CSCF is basically a SIP server. It is also responsible for handling the registration process and downloading user information and service profiles from the HSS.
- The HSS (Home Subscriber Server) is the user database containing all subscribers information to handle calls.
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.
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:
For a OnePlus3 device, the menu is under Settings
/SIM & network
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:
- Go to
Settings
/More networks
/Mobile networks
- Turn on Data roaming
- Go back to Mobile network.
- Add the first APN with the following parameters:
- Name = Internet
- APN = internet
- APN type = internet,default or APN type = default depending on the UE model
- Save it and select it.
- Add second APN with following parameters:
- Name = IMS
- APN = ims
- APN type = ims
- Save it and do not select it (This APN may not be displayed).
- Reboot your phone
On OnePlus3 device:
- Go to
Settings
/SIM & network
/SIM1
- Turn on Data roaming
- Go to
Settings
/SIM & network
/SIM1
/Access Point Names
- Add the 2 APNs as explained above.
In order to test VoLTE in IPv6, make sure you set the following parameters in your APN setting:
- APN protocol = IPv4/IPv6
- APN roaming protocol = IPv4/IPv6
2.2 Network Configuration
- Edit the file config/ims.cfg to set the address of the SIP interface. You can keep the current config as it is if you use Amarisoft LTEIMS and LTEMME and if they are both running on the same PC.
- Create an entry for your UE in the UE database file config/ue_db-ims.cfg. This file is included in config/mme-ims.cfg and config/ims.cfg. Your UE entry should include
- LTE authentication parameters such as IMSI and authentication algorithm. These parameters should match the ones stored in the UICC of your device.
- IMS authentication parameters IMPI, IMPU and domain name. There are 2 cases:
- - Your device UICC includes an ISIM application.
IMPI, IMPU and domain name in the UE database should match the ISIM parameters of your device. If you do not know your ISIM parameters, you can always retrieve your IMPI by looking at IMS logs inside
REGISTER
request. The IMPI must match the username argument insideAuthorization
header. As for IMPU, you can check theFROM
field of theSIP INVITE
message. - - Your device UICC does not include an ISIM application. IMPI, IMPU and domain name should be derived from your IMSI as explained in section Background (See Background).
- - Your device UICC includes an ISIM application.
IMPI, IMPU and domain name in the UE database should match the ISIM parameters of your device. If you do not know your ISIM parameters, you can always retrieve your IMPI by looking at IMS logs inside
Following is the default configuration for Anritsu UICC, already available in config/ue_db-ims.cfg. This UICC does not contain ISIM application and as you can observe, the IMS related parameters are all derived from the IMSI.
ue_db: [{ sim_algo: "xor", /* USIM authentication algorithm: xor, milenage or tuak */ imsi: "001010123456789", amf: 0x9001, /* Authentication Management Field */ sqn: "000000000000", /* Sequence Number */ K: "00112233445566778899aabbccddeeff", impi: "001010123456789@ims.mnc001.mcc001.3gppnetwork.org", impu: ["001010123456789", "tel:0600000000", "tel:600"], domain: "ims.mnc001.mcc001.3gppnetwork.org", multi_sim: true, /* Experimental */ }
In the above example, you can observe that we have defined 3 IMPUs:
-
001010123456789
corresponds to the SIP mandatory IMPU derived from IMSIsip:001010123456789@ims.mnc001.mcc001.3gppnetwork.org
. Note that SIP URI for IMPU must not include the domain name. If IMPU does not start by a scheme, it is assumed to be a SIP URI. - tel URI
0600000000
which is a number where you can reach your device. - tel URI
600
which is a second phone number of your device.
- Make sure your system is started with the right configuration files. If you are running the system manually, simply make sure that you are using mme-ims.cfg as LTEMME config file and ims.cfg as LTEIMS config file. If you are using an automatic service, the used LTEMME configuration file is mme.cfg. Make sure that mme.cfg is a symbolic link pointing to mme-ims.cfg in your
mme/config
directory.The IMS program should be started as root if you want IPsec support. For manual start up, you can type the following commands:
sudo cd /root/mme sudo ./ltemme config/mme-ims.cfg sudo ./lteims config/ims.cfg sudo cd /root/enb sudo ./lteenb config/enb.cfg
If you have changed anything in configuration files and you are using automatic service, make sure you restart the system
sudo service lte restart
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.
- In the default configuration, the IMS PDN is called
ims
with a range of IPv4 addresses from 192.168.4.2 to 192.168.4.254 and IPv6 prefixes from 2001:468:3000:1:: to 2001:468:3000:ffff::. Make sure your UE is correctly attached to APN "ims" and has obtained an IPv4 and/or IPv6 address. You can typeue
command in LTEMME screen. The ouput should look like below:In this example, the UE has obtained IPv4 address 192.168.4.2 and IPv6 prefix of 2001:468:3000:1::.
- The IMS command line interface is used to monitor the operation of LTEIMS. At the IMS window, check the output of
users
command which lists the user database and registering state of each device. Example belowIf your UE is correctly registered in IMS server, you should see a line starting by
Binding
as shown in the above image.
At this step, you can start the VoLTE call. You have the possibility to do
- MO (Mobile Originated) ECHO test: The echo phone number is specified in file ims.cfg as below
/* Echo phone number */ echo: ["tel:666", "tel:+666"],
You can simply call
666
to have a voice echo test. - MT (Mobile Terminated) call test: You can directly initiate a MT call from the IMS server by typing
mt_call <impi>
in LTEIMS screen.
- End-to-end call test: you can directly originate a call from one device to another. You can use the other device IMPU tel URI to initiate a call. In the default config with Anritsu UICC, you just need to dial
600
to call the other device.
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:
- eNB configuration file
ims_emergency_support
parameter must be set to true. - MME configuration file
ims_vops_eps
andemc_bs
parameters must be set to true. For 5GC,ims_vops_5gs_3gpp
orims_vops_5gs_n3gpp
parameter must be set to true, andemc
parameter must be set to 1 or 3 oremc_n3gpp
must be set to true.One PDN should be defined with the
emergency
parameter set to true (it identifies the PDN used for emergency calls and the associated P-CSCF address). - IMS configuration file
Add one entry to the
echo
list with the following parameters:-
impu
parameter set to "urn:service:sos" or any other specific string you might need. -
anonymous
parameter set to true to allow calls without SIM card. -
authentication
parameter set to false if you want to skip authentication for anonymous calls.
-
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.
Issue | Cause/Correction |
---|---|
Can not initiate VoLTE call |
|
There is no P-CSCF address request in NAS messages |
|
There is a P-CSCF address request in NAS messages but no REGISTER SIP message is sent by the UE |
|
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.