Amarisoft

LTE VoLTE - PJSIP

 

This tutorial shows how to perform a VoLTE with Amarisoft UEsim and Open source SIP UA PJSIP.

NOTE : In this tutorial, it is assumed that you successfully installed PJSIP which is quite a complicated process. We have a separate tutorial for the installation of PJSIP here.

NOTE : PJSIP is not the product of Amarisoft. So we would not provide any formal technical support for this. This tutorial is just a proof of concept trial showing that user can use a third party SIP client in connection to Amarisoft UEsim.

NOTE : I would suggest you to try with the exact same configurations as in the tutorial (e.g, various IP addresses, sip settings) because those are the configuration we tested on our side. Then you may try changing configurations only after you confirm that it works with the same configuration as in this tutorial.

 

Table of Contents

 

 

Test Setup

Test setup for this tutorial is as shown below.  

 

Key Configuration Parameters

Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.

 

Test 1 : VoLTE with No Precondition

 

Configuration

NOTE : Amarisoft callbox support VoLTE by default setting. So unless you have any specific configurations of your own on device side, VoLTE should work with default settings.

I used the enb-lte-pjsua.cfg which is copied from enb.default.cfg.

I used mme-pjsua.cfg which is copied and modified from mme-ims.cfg and used ims-pjsua.cfg which is copied and modified from ims.default.cfg. Along with this, ue_db-ims-pjsua.cfg is used.

LTE SG SMS Config 03

On UEsim side, ue-pjsua.cfg is used. It is copied and modified from ue.default.cfg

For the configurations for pjsip UAs, pjsua-amarisoft-1.cfg and pjsua-amarisoft-2.cfg are used.

 

eNB Configuration

The eNB configuration enb-lte-pjsua.cfg has no special configuration. It is almost same as the default LTE configuration.

In this tutorial, FDD(TDD 0), 20Mhz BW(N_RB_DL 100) and 2x2 MIMO (N_ANTENNA_DL 2) are configured, but you can configure it in anyway as long as your DUT works with the configuration.

In cell parameter, LTE band 7 is configured but you can configure in any way as long as your DUT support it

\

 

MME Configuration

In mme-pjsua.cfg file, you would notice that ue_db-ims-pjsua.cfg is used as ue db.

pdn setup is important in this configuration. In this tutorial, we will force UE to use ims pdn. so make it sure that configuration for ims is configured as you intended. I just used the default ims configuration.  In addition, be aware that ue_db-ims-pjsua.cfg is used for this tutorial.

LTE SG SMS Config 04

 

UE DB Configuration

In ue_db-ims-pjsua.cfg , we configured two sets of USIM/ISIM profile for the two UEs as follows. Pay attention to imsi, impi,impu,tel parameters for each UE.

LTE SG SMS Config 05

 

IMS Configuration

In ims-pjsua.cfg, be aware that ue_db-ims-pjsua.cfg is used as ue db and precondition is set to off. The loopback phone number is set to 666 which is the default setting.

 

UEsim Configuration

In ue-pjsua.cfg , set multi_ue since we will use more than one UE in this tutorial and you can configure other parameters in cells [ ] block in anyway you like as long as it matches the eNB configuration.

In ue_list, configure two UEs that will be associated with the two PJSIP UAs. Note that apn is explcitly set to "ims" (apn: "ims") and tun interface is enabled(tune_setup_script: "ue-ifup")

 

PJSIP Configuration

In pjsua-amarisoft-1.cfg , set authentication center to Amarisoft authentication center on callbox (realm ims.mnc001.mcc001.3gppnetwork.org) , set registrar to Amarisoft callbox IMS center (sip:192.168.4.1 in this case) and specify UA id for UA1. Keep in mind that the id should match the configuration in ue-db.

In pjsua-amarisoft-2.cfg , set authentication center to Amarisoft authentication center on callbox (realm ims.mnc001.mcc001.3gppnetwork.org) , set registrar to Amarisoft callbox IMS center (sip:192.168.4.1 in this case) and specify UA id for UA1. Keep in mind that the id should match the configuration in ue-db.

 

Perform the test

In this test, I will show you how to do VoLTE loopback call and end-to-end call between two different UAs.

 

SubTest 1 : VoLTE Loopback

In this test, I will use only one PJSIP UA and make a looback call.

First run eNB and check if the cell configuration is configured as intended.

Now power on UEs on UEsim. I powered on all UEs using 'power_on *' command, but you can power on only one UE with 'power_on' if you want.

Wait until UE complete the initial attach.

After the initial attach, switch to (mme) screen and make it sure the connected UEs are properly registered and assigned with 'ims/ip'.

Now switch to (ims) screen and check out the result of 'users' command. Here you see the impi for the attached UEs as configured in ue-db file.

Now switch to UEsim. Open up a new command terminal or ssh session in addition to the ue software screen.

Move the the directory where pjsip executable is located (/root/siptrunk/pjproject-2.14.1/pjsip-apps/bin) and ensure that you need configuration file ready for the UA that you will use.

Run a pjsip ua within a ue1 name space(ip netns exec ue1 ./pjsua-x86_64-unknown-linux-gnu  --config-file=pjsua-amarisoft-1.cfg)

then you will get long and scrolling text as below. You would see SIP 'REGISTER' message is sent out from PJSIP UA.

After the registration is completed, go to (ims) screen on Callbox (eNB) and check 'users' there. Now you see the UE1 is bound with PJSIP UA.

At this point, open up another terminal or ssh session on UEsim and can check out the details of pdn (tun interface) that is associated with the UE with the command 'ip netns list' and 'ip netns exec ue1 ifconfig'

Now you are ready to make a call.

Before making a call, you may want to give high priority for the specific codec that you want to use (In this tutorial, I decided to put AMR/8000/1 at the highest priority so that the UA use that codec by default).

For this, switch to pjsip command screen and run 'Cp' command and set the priority 200 to AMR/8000/1 200 by typing in 'AMR/8000/1 200' at the command prompt : Codec name("*" for all) and priority.

Now you can confirm that 'AMR/8000/1' is at the top of the codec list

Now you can initiate a call with 'm' command.  Type in 'm' and enter, and then type in 'sip:666@192.168.4.1' at the prompt 'Make call'.

Then you see the sequence of call setup SIP message sequences starting from INVITE message.

You can check and analyze full details of SIP message transactions RTP/RTCP traffics in WebGUI.

Sample Log

 

SubTest 2 : End to End Call

In this test, I will use only one PJSIP UA and make an end to end call (Call From UA1 to UA2 in this tutorial).

First run eNB and check if the cell configuration is configured as intended.

Now power on UEs on UEsim. I powered on all UEs using 'power_on *' command

Wait until UE complete the initial attach.

After the initial attach, switch to (mme) screen and make it sure the connected UEs are properly registered and assigned with 'ims/ip'.

Now switch to (ims) screen and check out the result of 'users' command. Here you see the impi for the attached UEs as configured in ue-db file.

Now switch to UEsim. Open up a new command terminal or a new ssh session in addition to the ue software screen.

Move the the directory where pjsip executable is located (/root/siptrunk/pjproject-2.14.1/pjsip-apps/bin) and ensure that you need configuration file ready for the UA that you will use.

Run a pjsip ua within a ue1 name space(ip netns exec ue1 ./pjsua-x86_64-unknown-linux-gnu  --config-file=pjsua-amarisoft-1.cfg)

Run a pjsip ua within a ue2 name space(ip netns exec ue1 ./pjsua-x86_64-unknown-linux-gnu  --config-file=pjsua-amarisoft-2.cfg)

After the registration is completed, go to (ims) screen on Callbox (eNB) and check 'users' there. Now you see both UE1 and UE2 are bound with PJSIP UAs.

At this point, open up another terminal or ssh session on UEsim and can check out the details of pdn (tun interface) that is associated with the UE with the command 'ip netns list' and 'ip netns exec ue1 ifconfig' and do the same thing with ue2.

Now you are ready to make a call.

Before making a call, you may want to give high priority for the specific codec that you want to use (In this tutorial, I decided to put AMR/8000/1 at the highest priority so that the UA use that codec by default).

For UA1, switch to pjsip command screen and run 'Cp' command and set the priority 200 to AMR/8000/1 200 by typing in 'AMR/8000/1 200' at the command prompt : Codec name("*" for all) and priority.

For UA2, switch to pjsip command screen and run 'Cp' command and set the priority 200 to AMR/8000/1 200 by typing in 'AMR/8000/1 200' at the command prompt : Codec name("*" for all) and priority.

Now you can initiate a call from UA1 with 'm' command.  Type in 'm' and enter, and then type in 'sip:602@192.168.4.1' at the prompt 'Make call'.

Then you see the sequence of call setup SIP message sequences starting from INVITE message.

Answer from UA2 with the command 'a' and codec '200'

If you want to stop (hang up) the call, run the command 'h' in any UA.

You can check and analyze full details of SIP message transactions RTP/RTCP traffics in WebGUI.

Sample Log

 

 

Test 2 : VoLTE with Silent Precondition

 

Configuration

NOTE : Amarisoft callbox support VoLTE by default setting. So unless you have any specific configurations of your own on device side, VoLTE should work with default settings.

I used the enb-lte-pjsua.cfg which is copied from enb.default.cfg.

I used mme-pjsua.cfg which is copied and modified from mme-ims.cfg and used ims-pjsua.cfg which is copied and modified from ims.default.cfg. Along with this, ue_db-ims-pjsua.cfg is used.

LTE SG SMS Config 03

On UEsim side, ue-pjsua.cfg is used. It is copied and modified from ue.default.cfg

For the configurations for pjsip UAs, pjsua-amarisoft-1.cfg and pjsua-amarisoft-2.cfg are used.

 

eNB Configuration

The eNB configuration enb-lte-pjsua.cfg has no special configuration. It is almost same as the default LTE configuration.

In this tutorial, FDD(TDD 0), 20Mhz BW(N_RB_DL 100) and 2x2 MIMO (N_ANTENNA_DL 2) are configured, but you can configure it in anyway as long as your DUT works with the configuration.

In cell parameter, LTE band 7 is configured but you can configure in any way as long as your DUT support it

\

 

MME Configuration

In mme-pjsua-silent-precondition.cfg file, you would notice that ue_db-ims-pjsua-silent-precondition.cfg is used as ue db.

pdn setup is important in this configuration. In this tutorial, we will force UE to use ims pdn. so make it sure that configuration for ims is configured as you intended. I just used the default ims configuration.  In addition, be aware that ue_db-ims-pjsua-silent-precondition.cfg is used for this tutorial.

In addition, not the qos settings in rx interface parameter. In case of precondition off, this parameter is not important. But in precondition or silent precondition, this setting is used to assign QCI for the dedicated bearer.

LTE SG SMS Config 04

 

UE DB Configuration

In ue_db-ims-pjsua-silent-precondition.cfg , we configured two sets of USIM/ISIM profile for the two UEs as follows. Pay attention to imsi, impi,impu,tel parameters for each UE. To apply the silent precondition, "precondition:silent" is added to impu parameter of each UE.

LTE SG SMS Config 05

 

IMS Configuration

In ims-pjsua-silent-precondition.cfg, be aware that ue_db-ims-pjsua-silent-precondition.cfg is used as ue db and precondition is set to off. and precondition parameter is set to 'silent' (precondition:"silent") The loopback phone number is set to 666 which is the default setting.

 

UEsim Configuration

In ue-pjsua.cfg , set multi_ue since we will use more than one UE in this tutorial and you can configure other parameters in cells [ ] block in anyway you like as long as it matches the eNB configuration.

In ue_list, configure two UEs that will be associated with the two PJSIP UAs. Note that apn is explcitly set to "ims" (apn: "ims") and tun interface is enabled(tune_setup_script: "ue-ifup")

 

PJSIP Configuration

In pjsua-amarisoft-1.cfg , set authentication center to Amarisoft authentication center on callbox (realm ims.mnc001.mcc001.3gppnetwork.org) , set registrar to Amarisoft callbox IMS center (sip:192.168.4.1 in this case) and specify UA id for UA1. Keep in mind that the id should match the configuration in ue-db.

In pjsua-amarisoft-2.cfg , set authentication center to Amarisoft authentication center on callbox (realm ims.mnc001.mcc001.3gppnetwork.org) , set registrar to Amarisoft callbox IMS center (sip:192.168.4.1 in this case) and specify UA id for UA1. Keep in mind that the id should match the configuration in ue-db.

 

Perform the test

In this test, I will show you how to do VoLTE loopback call and end-to-end call between two different UAs.

 

SubTest 1 : VoLTE Loopback

In this test, I will use only one PJSIP UA and make a looback call.

First run eNB and check if the cell configuration is configured as intended.

Now power on UEs on UEsim. I powered on all UEs using 'power_on *' command, but you can power on only one UE with 'power_on' if you want.

Wait until UE complete the initial attach.

After the initial attach, switch to (mme) screen and make it sure the connected UEs are properly registered and assigned with 'ims/ip'.

Now switch to (ims) screen and check out the result of 'users' command. Here you see the impi for the attached UEs as configured in ue-db file.

Now switch to UEsim. Open up a new command terminal or ssh session in addition to the ue software screen.

Move the the directory where pjsip executable is located (/root/siptrunk/pjproject-2.14.1/pjsip-apps/bin) and ensure that you need configuration file ready for the UA that you will use.

Run a pjsip ua within a ue1 name space(ip netns exec ue1 ./pjsua-x86_64-unknown-linux-gnu  --config-file=pjsua-amarisoft-1.cfg)

then you will get long and scrolling text as below. You would see SIP 'REGISTER' message is sent out from PJSIP UA.

After the registration is completed, go to (ims) screen on Callbox (eNB) and check 'users' there. Now you see the UE1 is bound with PJSIP UA.

At this point, open up another terminal or ssh session on UEsim and can check out the details of pdn (tun interface) that is associated with the UE with the command 'ip netns list' and 'ip netns exec ue1 ifconfig'

Now you are ready to make a call.

Before making a call, you may want to give high priority for the specific codec that you want to use (In this tutorial, I decided to put AMR/8000/1 at the highest priority so that the UA use that codec by default).

For this, switch to pjsip command screen and run 'Cp' command and set the priority 200 to AMR/8000/1 200 by typing in 'AMR/8000/1 200' at the command prompt : Codec name("*" for all) and priority.

Now you can confirm that 'AMR/8000/1' is at the top of the codec list

Now you can initiate a call with 'm' command.  Type in 'm' and enter, and then type in 'sip:666@192.168.4.1' at the prompt 'Make call'.

Then you see the sequence of call setup SIP message sequences starting from INVITE message.

You can check and analyze full details of SIP message transactions RTP/RTCP traffics in WebGUI.

Sample Log

As shown below, at the time of Attach Accept ACI=5 is assigned and this will apply to the default bearer.

Here UE perform IMS registeration. The SIP signaling goes through the default bearer with QCI 5.

Now UE is establishing Voice call by sending SIP INVITE.

With the trigger of INVITE, the gNB/MME establish a dedicated bearer with QCI 1. From this on, SIP signaling will go through the default bearer with QCI 5 and MEDIA traffic will go through the dedicated bearer with QCI 5.