This install guide is based on the official install guide from http://www.openimscore.org/installation_guide.
This guide describes the base component installation only. The platform is using four virtual machines, one for each IMS component (PCSCF, SCSCF, ICSCF, HSS).
Deployment OS is debian squeeze, 32 bit.
Prerequsities
Prepare IP adressing
We are using public IP adresses for our components:
158.193.139.30 pcscf 158.193.139.31 icscf 158.193.139.32 scscf 158.193.139.33 hss
Prepare DNS
Prepare and configure your DNS server correctly, prepare records and reverse records.
$ORIGIN ims2.sip.uniza.sk @ NAPTR 10 100 "S" "SIP+D2U" "" _sip._udp.pcscf @ NAPTR 20 100 "S" "SIP+D2T" "" _sip._tcp.pcscf pcscf IN A 158.193.139.30 _sip.pcscf IN SRV 0 0 5060 pcscf _sip._udp.pcscf IN SRV 0 0 5060 pcscf _sip._tcp.pcscf IN SRV 0 0 5060 pcscf icscf IN A 158.193.139.31 _sip IN SRV 0 0 5060 icscf _sip._udp IN SRV 0 0 5060 icscf _sip._tcp IN SRV 0 0 5060 icscf scscf IN A 158.193.139.32 _sip.scscf IN SRV 0 0 5060 scscf _sip._udp.scscf IN SRV 0 0 5060 scscf _sip._tcp.scscf IN SRV 0 0 5060 scscf hss IN A 158.193.139.33 presence IN CNAME hss
NAPTR records are not explicitly required, but som clients, as for example boghe require it.
Zone records “_sip._udp” and “_sip._tcp” have to point out to the ICSCF as the first contact point fo your IMS domain.
Prepare installation packages
- Prepare installation packages as we describe in http://nil.uniza.sk/ngnims/openimscore/building-debian-packages-openimscore
- Prepare Mysql on the machine dedicated to run ICSCF and HSS.
Installing P-CSCF
dpkg -i openimscore-pcscf_1064_i386.deb openimscore_1064_i386.deb
during the installation we are asked to provide correct information as the dns name, then IP address of the machine, the IP address of the dns server, debug level (leave default 1), and if we like to automatically start it.
The PCSCF server startup failed … So open the log file
vim /var/log/OpenIMSCore/pcscf.log
and the problem is with missing emerg_info.xml
[00mI/O warning : failed to load external entity "/usr/lib/ser/modules/emerg_info.xml"
0(23380) ^[[01;33mERR:P-CSCF:Failed to parse /usr/lib/ser/modules/emerg_info.xml
^[[00m 0(23380) ^[[01;33mERR:P-CSCF:mod_init: error on init_emergency_cntxt()
^[[00m 0(23380) ^[[01;33minit_mod(): Error while initializing module pcscf
so locate if the file is in your svn dump
cd /root/openimscore find . -type f -name "emerg_info.xml"
the solution is to make a copy of it to the required destination
cp /root/openimscore/modules/pcscf/emerg_info.xml /usr/lib/ser/modules/emerg_info.xml
and start the pcscf service
/etc/init.d/openimscore-pcscf start
should run.
Configuration of the PCSCF
No we will do some configuration modification ,caused that our CSCF servers will run on separated machines. So open pcscf.cfg
vim /etc/openimscore/pcscf.cfg
and change ports from 4060 to 5060
port=5060 alias="pcscf.ims2.sip.uniza.sk":5060
and modify modparam from
modparam("pcscf","name","sip:pcscf.ims2.sip.uniza.sk:4060")
to
modparam("pcscf","name","sip:pcscf.ims2.sip.uniza.sk:5060")
change also ports for IPsec
modparam("pcscf","ipsec_port_c",5060) modparam("pcscf","ipsec_port_s",5060)
finaly restart the service
/etc/init.d/openimscore-pcscf restart
Installing I-CSCF
First install packages on which icscf depends
apt-get install mysql-server mysql-client libcurl3-gnutls libmysqlclient16
We have som problem with IPv6, because debian tried to connect secure debian site using IPv6, so we disable IPv6. And run apt again.
then you may run
dpkg -i openimscore_1064_i386.deb openimscore-icscf_1064_i386.deb
package will ask you for some parameters so provide them correctly for your installation, in our case:
domain name: ims2.sip.uniza.sk public IP address for this machine: 158.193.139.31 IP address for your Domain Name Server: 158.193.152.2 Do you want to configure MySQL: yes What is the MySQL password for root: .... What debug level do you want: default Do you want to start I-CSCF automatically? yes
and run the service
/etc/init.d/openimscore-icscf start
Configuration of the ICSCF
We do not need it as was done for PCSCF.
Modify the MySql
Default icscf.sql script is used to inject data into the Mysql and it define the destination port of the serving CSCF to 6060, so we will modify it to use default 5060 as it is usual for SIP. So login to the icscf database and modify the entry
mysql -uroot -p icscf UPDATE `icscf`.`s_cscf` SET `s_cscf_uri` = 'sip:scscf.ims2.sip.uniza.sk:5060' WHERE `s_cscf`.`id` =1;
and restart the icscf service.
Installing S-CSCF
Solve the dependences and install:
apt-get install libcurl3-gnutls libmysqlclient16 mysql-common
then install main openimscore packages:
dpkg -i openimscore_1064_i386.deb openimscore-scscf_1064_i386.deb
package will ask you for some parameters so provide them correctly for your installation, in our case:
domain name: ims2.sip.uniza.sk public IP address for this machine: 158.193.139.32 IP address for your Domain Name Server: 158.193.152.2 What debug level do you want: default Do you want to start I-CSCF automatically? yes
now open the cscf.cfg in /etc/openimscore/ and change port numbers from 6060 to 5060
and run the service
/etc/init.d/openimscore-scscf start
Installing HSS
Enable in your sources.list non-free packages to allow java installation (edit your sources.list), in my case:
deb http://ftp.antik.sk/debian/ squeeze main non-free deb-src http://ftp.antik.sk/debian/ squeeze main non-free
Solve the dependences and install:
apt-get install sun-java6-jre mysql-server mysql-client mysql-common
then we are able to install main hss packages:
apt-get install openimscore-fhoss
During the installation of the package we are asked to provide some parameters so provide them correctly for your installation, in our case:
What is the domain name ? What is the IP address for this domain name ? 158.193.139.33 What is the public IP address for your Domain Name Server ? 158.193.152.2 Do you want to configure MySQL ? yes You can add user to the HSS database. If no more user to add, left empty. Separate different users by <space>. Users name ? palo timeos What is the MySQL password for root ? Do you want to start HSS automatically yes
make the HSS configuration dir as is usual in linux, in /etc/
ln -s /usr/share/java/fhoss-0.2 /etc/fhoss
and start the HSS service
/etc/init.d/openimscore-fhoss start
Configuration of the HSS
HSS tricks
Look at the article about kamailio IMS, part about the HSS tricks.
Notes
Log files are located in /var/log/OpenIMSCore automatically after the packages installation.
Test
Connect your preferred IMS client to your OpenIMSCore platform. I will use Boghe
Registration
Client (158.193.139.235), PCSCF (158.193.139.30), ICSCF (158.193.139.31), SCSCF (158.193.139.32)
158.193.139.235 158.193.139.30 158.193.139.31 158.193.139.32 | | | | 1 : |U-----REGISTER---->| | | 2 : | |U-----REGISTER---->| | 3 : | | |U-----REGISTER---->| 4 : | | |<-401 Unauthorize-U| 5 : | |<-401 Unauthorize-U| | 6 : |<-401 Unauthorize-U| | | 7 : |U-----REGISTER---->| | | 8 : | |U-----REGISTER---->| | 9 : | | |U-----REGISTER---->| 10: | | |<-200 OK - SAR su-U| 11: | |<-200 OK - SAR su-U| | 12: |<-200 OK - SAR su-U| | |
Audio call
The final call flow when one PCSCF (158.193.139.30) and SCSCF (158.193.139.32) are deployed, clients are associated with PCSCF and served SCSCF should look like:
158.193.139.235 158.193.139.30 158.193.139.32 158.193.139.192 | | | | 1 : |U------INVITE----->| | | 2 : |<-100 trying -- y-U| | | 3 : | |U------INVITE----->| | 4 : | |<-100 trying -- y-U| | 5 : | |<------INVITE-----U| | 6 : | |U-100 trying -- y->| | 7 : | |U----------------INVITE--------------->| 8 : | |<----183 Session in|Progress/INVITE---U| 9 : | |U-183 Session in ->| | 10: | |<-183 Session in -U| | 11: |<-183 Session in -U| | | 12: |U------PRACK------>| | | 13: | |U------PRACK------>| | 14: | |<------PRACK------U| | 15: | |U----------------PRACK---------------->| 16: | |<-------------200 OK/PRACK------------U| 17: | |<----------180 Ringing/INVITE---------U| 18: | |U---200 OK/PRACK-->| | 19: | |U-180 Ringing/INV->| | 20: | |<---200 OK/PRACK--U| | 21: | |<-180 Ringing/INV-U| | 22: |<---200 OK/PRACK--U| | | 23: |<-180 Ringing/INV-U| | | 24: |U------PRACK------>| | | 25: | |U------PRACK------>| | 26: | |<------PRACK------U| | 27: | |U----------------PRACK---------------->| 28: | |<-------------200 OK/PRACK------------U| 29: | |U---200 OK/PRACK-->| | 30: | |<---200 OK/PRACK--U| | 31: |<---200 OK/PRACK--U| | | 32: | |<------------200 OK/INVITE------------U| 33: | |U--200 OK/INVITE-->| | 34: | |<--200 OK/INVITE--U| | 35: |<--200 OK/INVITE--U| | | 36: |U-------ACK------->| | | 37: | |U-------ACK------->| | 38: | |<-------ACK-------U| | 39: | |U-----------------ACK----------------->| 40: |U-------BYE------->| | | 41: | |U-------BYE------->| | 42: | |<-------BYE-------U| | 43: | |U-----------------BYE----------------->| 44: | |<--------------200 OK/BYE-------------U| 45: | |U----200 OK/BYE--->| | 46: | |<----200 OK/BYE---U| | 47: |<----200 OK/BYE---U| | |