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
-
Go to Network-Configuration -> Preferred S-CSCF Sets -> Create
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| | | | |