Update VoLTE document (#333) (#334)

This commit is contained in:
Sukchan Lee 2019-12-18 21:25:46 +09:00
parent 0f0d87d742
commit 428fbffa36

View file

@ -11,6 +11,8 @@ Setup description:
- Oneplus 5 as UE
{: .blue}
OpenStack is not required for VoLTE setup. If you are using one machine without OpenStack, you can start from step 3.
{: .notice--warning}
#### 1. Start from Bionic Ubuntu cloud image
#### 2. Use the following Cloud init config while spawning an instance
@ -59,10 +61,10 @@ $ make cfg
#### 6. Enable MySQL module and all required IMS modules.
Edit `modules.lst` file present at `/usr/local/src/kamailio/src`
Edit modules.lst file present at /usr/local/src/kamailio/src
{: .notice--info}
The contents of modules.lst should be as follows:
The contents of `modules.lst` should be as follows:
```
# this file is autogenerated by make modules-cfg
@ -101,32 +103,36 @@ $ make install | tee make_install.txt
$ ldconfig
```
The binaries and executable scripts are installed in: /usr/local/sbin
The binaries and executable scripts are installed in: `/usr/local/sbin`
```
kamailio - Kamailio SIP server
kamdbctl - script to create and manage the Databases
kamctl - script to manage and control Kamailio SIP server
kamcmd - CLI - command line tool to interface with Kamailio SIP server
```
To be able to use the binaries from command line, make sure that '/usr/local/sbin' is set in PATH environment variable.
You can check that with 'echo $PATH'. If not and you are using 'bash', open '/root/.bash_profile' and at the end add:
To be able to use the binaries from command line, make sure that `/usr/local/sbin` is set in PATH environment variable.
You can check that with `echo $PATH`. If not and you are using `bash`, open `/root/.bash_profile` and at the end add:
```
PATH=$PATH:/usr/local/sbin
export PATH
```
Kamailio modules are installed at:
/usr/local/lib64/kamailio/modules
`/usr/local/lib64/kamailio/modules`
The documentation and readme files are installed at:
/usr/local/share/doc/kamailio/
`/usr/local/share/doc/kamailio`
The configuration files are installed at:
/usr/local/etc/kamailio
`/usr/local/etc/kamailio`
In case you set the PREFIX variable in 'make cfg' command, then replace /usr/local in all paths above with the value of PREFIX in order to locate the files installed.
In case you set the PREFIX variable in `make cfg` command, then replace /usr/local in all paths above with the value of PREFIX in order to locate the files installed.
#### 8. Populate MySQL database using `kamctlrc` command
Edit SIP_DOMAIN and DBENGINE in the /usr/local/etc/kamailio/kamctlrc configuration file (Used by kamctl and kamdbctl tools).
Edit SIP_DOMAIN and DBENGINE in the `/usr/local/etc/kamailio/kamctlrc` configuration file (Used by kamctl and kamdbctl tools).
Set the SIP_DOMAIN to your SIP service domain (or IP address if you don't have a DNS hostname associated with your SIP service).
Set the DBENGINE to be MYSQL and adjust other setting as you want. Finally, uncomment both SIP_DOMAIN and DBENGINE.
@ -189,7 +195,7 @@ $ systemctl restart rtpproxy
#### 10. Edit configuration file to fit your requirements for the VoIP platform:
You have to edit the `/usr/local/etc/kamailio/kamailio.cfg` configuration file.
You have to edit the /usr/local/etc/kamailio/kamailio.cfg configuration file.
{: .notice--info}
Follow the instruction in the comments to enable usage of MySQL. Basically you have to add several lines at the top of config file, like:
@ -230,7 +236,7 @@ $ cp /usr/local/src/kamailio/pkg/kamailio/deb/bionic/kamailio.init /etc/init.d/k
$ chmod 755 /etc/init.d/kamailio
```
then edit the /etc/init.d/kamailio file updating the $DAEMON and $CFGFILE values:
Then edit the /etc/init.d/kamailio file updating the $DAEMON and $CFGFILE values:
```
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
@ -278,7 +284,7 @@ check running processes with: ps axw | egrep kamailio
#### 12. A quick check for the basic working of SIP server can be done as follows:
Create new subscriber accounts. A new account can be added using `kamctl` tool via `kamctl add <username> <password>`
(When asked for entering MySQL password for user 'kamailio@localhost': type 'kamailiorw', as provided in kamailio.cfg)
(When asked for entering MySQL password for user `kamailio@localhost`: type `kamailiorw`, as provided in kamailio.cfg)
```
$ kamctl add test testpasswd
@ -288,8 +294,8 @@ $ kamctl add test2 testpasswd
Setting on OnePlus phones
- Connect to a network through which SIP server is reachable (either Wi-Fi or LTE)
- Goto phone dialer and select the "Settings" in the menu on top right corner
- Then select "Call settings"
- Goto phone dialer and select the **Settings** in the menu on top right corner
- Then select **Call settings**
- Configure SIP accounts in phones as added above using kamctl:
In Phone 1:
@ -322,7 +328,7 @@ Optional Settings:
In Phone 1:
Select "more" option
Select **more** option
```
Name: SIP Contact test2 (Any arbitary name)
@ -333,7 +339,7 @@ Save and exit
In Phone 2:
Select "more" option
Select **more** option
```
Name: SIP Contact test (Any arbitary name)
@ -441,14 +447,14 @@ $ mysql
<mysql> INSERT INTO `s_cscf_capabilities` VALUES (1,1,0),(2,1,1);
```
#### 14. Copy pcscf, icscf and scscf configuration files to `/etc/` folder and edit accordingly
#### 14. Copy pcscf, icscf and scscf configuration files to `/etc` folder and edit accordingly
```
$ cd ~ && git clone https://github.com/herlesupreeth/Kamailio_IMS_Config
$ cd Kamailio_IMS_Config
$ cp -r kamailio_icscf/ /etc/
$ cp -r kamailio_pcscf/ /etc/
$ cp -r kamailio_scscf/ /etc/
$ cp -r kamailio_icscf /etc
$ cp -r kamailio_pcscf /etc
$ cp -r kamailio_scscf /etc
```
#### 15. Setup the DNS for resolving IMS and EPC components names
@ -457,8 +463,7 @@ $ cp -r kamailio_scscf/ /etc/
$ apt install -y bind9
```
Use the below example DNS Zone file to create a DNS Zone file into the bind folder and
edit /etc/bind/named.conf.local, /etc/bind/named.conf.options accordingly:
Use the below example DNS Zone file to create a DNS Zone file into the bind folder and edit `/etc/bind/named.conf.local` and `/etc/bind/named.conf.options` accordingly:
```
$ cd /etc/bind
@ -517,7 +522,7 @@ pcrf 1D IN A 127.0.0.5
```
Edit /etc/bind/named.conf.local file as follows:
Edit `/etc/bind/named.conf.local` file as follows:
```
//
@ -539,7 +544,7 @@ zone "epc.mnc001.mcc001.3gppnetwork.org" {
};
```
Edit /etc/bind/named.conf.options file as follows:
Edit `/etc/bind/named.conf.options` file as follows:
```
options {
@ -652,20 +657,20 @@ $ dpkg -i *.deb
$ cp /etc/rtpengine/rtpengine.sample.conf /etc/rtpengine/rtpengine.conf
```
Edit this file as follows under "[rtpengine]":
Edit this file as follows under **[rtpengine]**:
```
interface = 10.4.128.21!172.24.15.30
```
Port on which rtpengine binds i.e. listen_ng parameter is udp port 2223. This should be updated in kamailio_pcscf.cfg file at modparam(rtpengine ...
Port on which rtpengine binds i.e. listen_ng parameter is udp port 2223. This should be updated in `kamailio_pcscf.cfg` file at **modparam(rtpengine ...)**
```
# ----- rtpproxy params -----
modparam("rtpengine", "rtpengine_sock", "1 == udp:localhost:2223")
```
Edit /etc/default/ngcp-rtpengine-daemon and /etc/default/ngcp-rtpengine-recording-daemon as follows in respective files:
Edit `/etc/default/ngcp-rtpengine-daemon` and `/etc/default/ngcp-rtpengine-recording-daemon` as follows in respective files:
```
RUN_RTPENGINE=yes
```
@ -711,7 +716,7 @@ $ cp /etc/init.d/kamailio /etc/init.d/kamailio_pcscf
$ cp /etc/init.d/kamailio /etc/init.d/kamailio_scscf
```
Changes required in /etc/init.d/kamailio_icscf
Changes required in `/etc/init.d/kamailio_icscf`
```
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
@ -719,7 +724,7 @@ NAME="kamailio_icscf"
CFGFILE=/etc/$NAME/kamailio_icscf.cfg
```
Changes required in /etc/init.d/kamailio_pcscf
Changes required in `/etc/init.d/kamailio_pcscf`
```
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
@ -727,7 +732,7 @@ NAME="kamailio_pcscf"
CFGFILE=/etc/$NAME/kamailio_pcscf.cfg
```
Changes required in /etc/init.d/kamailio_scscf
Changes required in `/etc/init.d/kamailio_scscf`
```
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
@ -742,7 +747,7 @@ $ cp kamailio kamailio_pcscf
$ cp kamailio kamailio_scscf
```
Changes required in /etc/default/kamailio_icscf
Changes required in `/etc/default/kamailio_icscf`
```
CFGFILE=/etc/kamailio_icscf/kamailio_icscf.cfg
@ -750,7 +755,7 @@ CFGFILE=/etc/kamailio_icscf/kamailio_icscf.cfg
RUN_KAMAILIO=yes
```
Changes required in /etc/default/kamailio_pcscf
Changes required in `/etc/default/kamailio_pcscf`
```
CFGFILE=/etc/kamailio_pcscf/kamailio_pcscf.cfg
@ -758,7 +763,7 @@ CFGFILE=/etc/kamailio_pcscf/kamailio_pcscf.cfg
RUN_KAMAILIO=yes
```
Changes required in /etc/default/kamailio_scscf
Changes required in `/etc/default/kamailio_scscf`
```
CFGFILE=/etc/kamailio_scscf/kamailio_scscf.cfg
@ -777,17 +782,13 @@ $ systemctl start kamailio_icscf kamailio_pcscf kamailio_scscf
Please refer to instructions at [https://open5gs.org/open5gs/docs/guide/02-building-open5gs-from-sources/](https://open5gs.org/open5gs/docs/guide/02-building-open5gs-from-sources/)
Installing Open5GS on the same machine is very important because the "frame_ip4_address" in the AAR request via Rx interface takes received IP address and port in ims_qos module, hence, if the Open5GS is on a separate VM/machine, the IP and port received in received_ip and received_port values seen by Kamailio IMS will be the NATed IP of the Open5GS machine resulting in failing of AAR request.
{: .notice--info}
If you are using OpenStack, installing Open5GS and Kamailio IMS on the same machine is very important because the **Framed-IP-Address** in the AAR request via Rx interface takes received IP address and port in ims_qos module, hence, if the Open5GS is on a separate VM/machine, the IP and port received in received_ip and received_port values seen by Kamailio IMS will be the NATed IP of the Open5GS machine resulting in failing of AAR request.
{: .notice--warning}
Install open5gs, with the fixes for forcing UE to PS domain attach, IPV4 usaeg and support for Rx MEDIA TYPE -CONTROL.
Fixes can be found at "hacks" branch at https://github.com/herlesupreeth/open5gs
{: .notice--info}
I made some modifications in order to force UE to PS domain attach and use IPv4. You can refer to the **hacks** branch of [https://github.com/herlesupreeth/open5gs](https://github.com/herlesupreeth/open5gs)
Modify below mentioned parts of configuration files in addition to **Configure Open5GS** section. For reference, look at the configuration files at [https://github.com/herlesupreeth/Open5gs_Config](https://github.com/herlesupreeth/Open5gs_Config])
Modify below mentioned parts of configuration files in addition to `Configure Open5GS` section. For reference, look at the configuration files at:
```
https://github.com/herlesupreeth/Open5gs_Config
```
- Change realm of components to `epc.mnc001.mcc001.3gppnetwork.org`
- Define IP pools for APNs used i.e one for default APN and another for IMS apn
- Define P-CSCF address in the pgw configuration
@ -1056,7 +1057,7 @@ $ mysql
<mysql> quit
```
Import database located at /opt/OpenIMSCore into hss_db
Import database located at `/opt/OpenIMSCore` into hss_db
```
$ cd /opt/OpenIMSCore
$ mysql -u root -p hss_db < FHoSS/scripts/hss_db.sql
@ -1082,13 +1083,13 @@ $ mysql -u hss -p
Prepare script-file, start HSS
Copy startup.sh to hss.sh in root directory
Copy `startup.sh` to `hss.sh` in root directory
```
$ cp /opt/OpenIMSCore/FHoSS/deploy/startup.sh /root/hss.sh
```
And, add the following to hss.sh before echo "Building Classpath"
And, add the following to `hss.sh` before echo **Building Classpath**
```
cd /opt/OpenIMSCore/FHoSS/deploy
@ -1096,22 +1097,22 @@ JAVA_HOME="/usr/lib/jvm/jdk1.7.0_79"
CLASSPATH="/usr/lib/jvm/jdk1.7.0_79/jre/lib/"
```
Start HSS using hss.sh
Start HSS using `hss.sh`
```
$ ./hss.sh
```
Access the web-interface of HSS: http://<IMS_VM_FLOATING_IP>:8080/hss.web.console/
Access the web-interface of HSS: `http://<IMS_VM_FLOATING_IP>:8080/hss.web.console/`
http://172.24.15.30:8080/hss.web.console/
For example, [http://172.24.15.30:8080/hss.web.console/](http://172.24.15.30:8080/hss.web.console/)
```
user: hssAdmin
password: hss
```
Then, edit the /etc/hosts file as follows:
Then, edit the `/etc/hosts` file as follows:
In the below example. epc-ims is the hostname of the machine
@ -1187,9 +1188,8 @@ $ ip r add 10.4.128.21/32 via 172.24.15.30
#### 23. USIM and UE settings
- Make sure to disable SQN check in Sysmocom SIM cards using sysmo-usim-tool tool (https://github.com/herlesupreeth/sysmo-usim-tool)
- Tested with OnePlus 5 - With modfication to enable force IMS registration is a must or else UE will not even attempt to connect to P-CSCF. Need to apply the fix back after each update.
(https://forum.xda-developers.com/oneplus-5t/how-to/guide-volte-vowifi-german-carriers-t3817542)
- Make sure to disable SQN check in Sysmocom SIM cards using sysmo-usim-tool tool [https://github.com/herlesupreeth/sysmo-usim-tool](https://github.com/herlesupreeth/sysmo-usim-tool)
- Tested with OnePlus 5 - With modfication to enable force IMS registration is a must or else UE will not even attempt to connect to P-CSCF. Need to apply the fix back after each update. [https://forum.xda-developers.com/oneplus-5t/how-to/guide-volte-vowifi-german-carriers-t3817542](https://forum.xda-developers.com/oneplus-5t/how-to/guide-volte-vowifi-german-carriers-t3817542)
#### 24. Start IMS components and FoHSS followed by Open5GS and eNB, then try connecting the phones