Menu Close

Installing additional serving S-CSCF server into Kamailio IMS environment

This atricle describes step-by-step procedure for installing and integrating additional serving SIP S-SCSCF server into Kamailio IMS platform environment. Main installaton guide for Kamailio IMS platform (located here) provides only the base IMS platform with single SIP server for each role (Proxy, Interrogating, Serving). When you have many subscribers in your IMS domain, or when you want to provide better hardware for users with registered some subset of SIP capabilities there is need for installing next S-CSCF server. Our platform extended with additional SCSCF server allows  association of clients with different serving CSCF servers.

In our case the second serving server is named scscf2.test1.local

DNS records

First step is to provide new DNS records for IMS domain:

scscf2           IN      A       158.193.139.39
_sip.scscf2      IN      SRV 0 0 5060 scscf2
_sip._udp.scscf2 IN      SRV 0 0 5060 scscf2
_sip._tcp.scscf2 IN      SRV 0 0 5060 scscf2

Machine and network configuration

Now, make a copy of virtual machine that serves the main S-CSCF role in IMS, or create another one from scratch by steps described in our IMS installation guide. Change the IP network configuration according your topology and scscf2 DNS record.

Kamailio S-CSCF configuration

  • Edit /etc/kamailio/kamailio.cfg (copied or renamed from scscf.cfg) according new S-CSCF domain name. Be carefull, the name needs to be changed also in (two) modparam* lines!
  • Edit /etc/kamailio/scscf.xml (for diameter Cx interface toward HSS) and also change all parameters for supporting new scscf name. (FQDN attribute in DiameterPeer and bind value in Acceptor tag)
  • Restart kamailio:

    • /etc/init.d/kamailio restart

Modify HSS configuration

  • Edit /etc/fhoss/DiameterPeerHSS.xml and append following line:

    • <Peer FQDN="scscf2.test1.local" Realm="test1.local" port="3870" />
  • Restart HSS daemon:

    • /etc/init.d/openimscore-fhoss restart
  • Navigate through web browser to HSS management web interface on http://hss.test1.local:8080

    • Go to Network-Configuration -> Preferred S-CSCF Sets -> Create

      • Name: scscf2
      • S-CSCF Name: scscf2.test1.local
    • Go to User Identities -> IMS Subscription -> Search

      • Select some user and change the Preferred S-CSCF to scscf2 from selectbox as preferred serving server

Now you can try to connect with modifed user to IMS. After registration you can check in HSS web interface if your user had assigned desired serving server (User Identities -> IMS Subscription -> Search -> click on search, column "S-CSCF Name").

 

 Testing

Call flow diagram

    
158.193.139.192   158.193.139.40    158.193.139.39    158.193.139.41    158.193.139.42    158.193.139.235
Client1             PCSCF             SCSCF2            ICSCF             SCSCF           Client2
    |                 |                 |                 |                 |                 |
1 : |U-----INVITE---->|                 |                 |                 |                 |
2 : |<-100 trying ---U|                 |                 |                 |                 |
3 : |                 |U-----INVITE---->|                 |                 |                 |
4 : |                 |<-100 trying ---U|                 |                 |                 |
5 : |                 |                 |U-----INVITE---->|                 |                 |
6 : |                 |                 |<-100 trying ---U|                 |                 |
7 : |                 |                 |                 |U-----INVITE---->|                 |
8 : |                 |                 |                 |<-100 trying ---U|                 |
9 : |                 |<----------------+------INVITE-----+----------------U|                 |
10: |                 |U-100 trying -- your call is important to us/INVITE->|                 |
11: |                 |U----------------+---------------INVITE--------------+---------------->|
12: |                 |<----------------+---183 Session in|Progress/INVITE--+----------------U|
13: |                 |U-----------183 Session in Progress/INVITE---------->|                 |
14: |                 |                 |                 |<-183 Session i-U|                 |
15: |                 |                 |<-183 Session i-U|                 |                 |
16: |                 |<-183 Session i-U|                 |                 |                 |
17: |<-183 Session i-U|                 |                 |                 |                 |
18: |U-----PRACK----->|                 |                 |                 |                 |
19: |                 |U-----PRACK----->|                 |                 |                 |
20: |                 |                 |U--------------PRACK-------------->|                 |
21: |                 |<----------------+------PRACK------+----------------U|                 |
22: |                 |U----------------+---------------PRACK---------------+---------------->|
23: |                 |<----------------+------------200 OK/PRACK-----------+----------------U|
24: |                 |<----------------+---------180 Ringing/INVITE--------+----------------U|
25: |                 |U----------------+---200 OK/PRACK--+---------------->|                 |
26: |                 |                 |<-----------200 OK/PRACK----------U|                 |
27: |                 |<--200 OK/PRACK-U|                 |                 |                 |
28: |<--200 OK/PRACK-U|                 |                 |                 |                 |
29: |                 |U----------------+180 Ringing/INVITE---------------->|                 |
30: |                 |                 |                 |<-180 Ringing/I-U|                 |
31: |                 |                 |<-180 Ringing/I-U|                 |                 |
32: |                 |<-180 Ringing/I-U|                 |                 |                 |
33: |<-180 Ringing/I-U|                 |                 |                 |                 |
34: |U-----PRACK----->|                 |                 |                 |                 |
35: |                 |U-----PRACK----->|                 |                 |                 |
36: |                 |                 |U--------------PRACK-------------->|                 |
37: |                 |<----------------+------PRACK------+----------------U|                 |
38: |                 |U----------------+---------------PRACK---------------+---------------->|
39: |                 |<----------------+------------200 OK/PRACK-----------+----------------U|
40: |                 |U----------------+---200 OK/PRACK--+---------------->|                 |
41: |                 |                 |<-----------200 OK/PRACK----------U|                 |
42: |                 |<--200 OK/PRACK-U|                 |                 |                 |
43: |<--200 OK/PRACK-U|                 |                 |                 |                 |
44: |                 |<----------------+-----------200 OK/INVITE-----------+----------------U|
45: |                 |U----------------+--200 OK/INVITE--+---------------->|                 |
46: |                 |                 |                 |<-200 OK/INVITE-U|                 |
47: |                 |                 |<-200 OK/INVITE-U|                 |                 |
48: |                 |<-200 OK/INVITE-U|                 |                 |                 |
49: |<-200 OK/INVITE-U|                 |                 |                 |                 |
50: |U------ACK------>|                 |                 |                 |                 |
51: |                 |U------ACK------>|                 |                 |                 |
52: |                 |                 |U---------------ACK--------------->|                 |
53: |                 |<----------------+-------ACK-------+----------------U|                 |
54: |                 |U----------------+----------------ACK----------------+---------------->|
55: |U------BYE------>|                 |                 |                 |                 |
56: |                 |U------BYE------>|                 |                 |                 |
57: |                 |                 |U---------------BYE--------------->|                 |
58: |                 |<----------------+-------BYE-------+----------------U|                 |
59: |                 |U----------------+----------------BYE----------------+---------------->|
60: |                 |<----------------+-------------200 OK/BYE------------+----------------U|
61: |                 |U----------------+----200 OK/BYE---+---------------->|                 |
62: |                 |                 |<------------200 OK/BYE-----------U|                 |
63: |                 |<---200 OK/BYE--U|                 |                 |                 |
64: |<---200 OK/BYE--U|                 |                 |                 |                 |

 

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.