name mode size
..
doc 040000
Makefile 100644 521B
README 100644 10.85kB
cxdx_avp.c 100644 27.03kB
cxdx_avp.h 100644 10.02kB
cxdx_lir.c 100644 9.53kB
cxdx_lir.h 100644 2.72kB
cxdx_uar.c 100644 11.88kB
cxdx_uar.h 100644 3.07kB
db.c 100644 10.44kB
db.h 100644 2.6kB
ims_icscf_mod.c 100644 9.16kB
ims_icscf_mod.h 100644 2.98kB
location.c 100644 6.21kB
location.h 100644 2.43kB
nds.c 100644 6.86kB
nds.h 100644 2.58kB
registration.c 100644 8.62kB
registration.h 100644 2.5kB
scscf_list.c 100644 19.38kB
scscf_list.h 100644 6.37kB
sip_messages.h 100644 3.79kB
stats.c 100644 3.05kB
stats.h 100644 2.37kB
README
IMS ICSCF Module Dragos Vingarzan FhG Fokus <Dragos.Vingarzan@fokus.fraunhofer.de> Jason Penton Smile Communications <jason.penton@smilecoms.com> Richard Good Smile Communications <richard.good@smilecoms.com> Copyright © 2007 FhG FOKUS Copyright © 2012 Smile Communications __________________________________________________________________ Table of Contents 1. Admin Guide 1. Overview 2. Dependencies 2.1. Kamailio Modules 2.2. External Libraries or Applications 3. Parameters 3.1. route_lir_user_unknown (string) 3.2. route_uar_user_unknown (string) 3.3. scscf_entry_expiry (integer) 3.4. cxdx_forced_peer (string) 3.5. cxdx_dest_realm (string) 3.6. use_preferred_scscf_uri (int) 3.7. preferred_scscf_uri (string) 4. Functions 4.1. I_scscf_select(initial) 4.2. I_scscf_drop() 4.3. I_perform_user_authorization_request(route_block, capabalities) 4.4. I_perform_location_information_request(route_block) 5. Statistics 5.1. Average UAR Response Time (uar_avg_response_time) 5.2. UAR Timeouts (uar_timeouts) 5.3. Average LIR Response Time (lir_avg_response_time) 5.4. LIR Timeouts (lir_timeouts) List of Examples 1.1. route_lir_user_unknown parameter usage 1.2. route_uar_user_unknown parameter usage 1.3. scscf_entry_expiry parameter usage 1.4. cxdx_forced_peer parameter usage 1.5. cxdx_dest_realm parameter usage 1.6. use_preferred_scscf_uri parameter usage 1.7. preferred_scscf_uri parameter usage 1.8. I_scscf_select usage 1.9. I_scscf_drop usage 1.10. I_perform_user_authorization_request usage 1.11. I_perform_location_information_request Chapter 1. Admin Guide Table of Contents 1. Overview 2. Dependencies 2.1. Kamailio Modules 2.2. External Libraries or Applications 3. Parameters 3.1. route_lir_user_unknown (string) 3.2. route_uar_user_unknown (string) 3.3. scscf_entry_expiry (integer) 3.4. cxdx_forced_peer (string) 3.5. cxdx_dest_realm (string) 3.6. use_preferred_scscf_uri (int) 3.7. preferred_scscf_uri (string) 4. Functions 4.1. I_scscf_select(initial) 4.2. I_scscf_drop() 4.3. I_perform_user_authorization_request(route_block, capabalities) 4.4. I_perform_location_information_request(route_block) 5. Statistics 5.1. Average UAR Response Time (uar_avg_response_time) 5.2. UAR Timeouts (uar_timeouts) 5.3. Average LIR Response Time (lir_avg_response_time) 5.4. LIR Timeouts (lir_timeouts) 1. Overview This module provides all functionality to build an IMS ICSCF. 2. Dependencies 2.1. Kamailio Modules 2.2. External Libraries or Applications 2.1. Kamailio Modules The Following modules must be loaded before this module: * TM - Transaction Manager * SL - Stateless Reply * CDP - C Diameter Peer * CDP_AVP - CDP AVP Applications 2.2. External Libraries or Applications This modules requires the Kamailio internal IMS library. 3. Parameters 3.1. route_lir_user_unknown (string) 3.2. route_uar_user_unknown (string) 3.3. scscf_entry_expiry (integer) 3.4. cxdx_forced_peer (string) 3.5. cxdx_dest_realm (string) 3.6. use_preferred_scscf_uri (int) 3.7. preferred_scscf_uri (string) 3.1. route_lir_user_unknown (string) This is the route which is executed if HSS returns "user unknown" in LIR Default value is ''. Example 1.1. route_lir_user_unknown parameter usage ... modparam("ims_icscf","route_lir_user_unknown", "lir_term_user_unknown") ... 3.2. route_uar_user_unknown (string) This is the route which is executed if HSS returns "user unknown" in UAR. Default value is ''. Example 1.2. route_uar_user_unknown parameter usage ... modparam("ims_icscf","route_uar_user_unknown", "uar_term_user_unknown") ... 3.3. scscf_entry_expiry (integer) This is the time in s after which S-CSCF entries in the I-CSCF's SCSCF list will expire. Default value is 300. Example 1.3. scscf_entry_expiry parameter usage ... modparam("ims_icscf","scscf_entry_expiry", 300) ... 3.4. cxdx_forced_peer (string) FQDN of Diameter Peer (HSS) to use for communication (UAR, LIR). If you use this, the routing defined in your diameter xml configuration file (CDP) will be ignored and as a result you will lose the benefits of load balancing and failover. Default value is "". Example 1.4. cxdx_forced_peer parameter usage ... modparam("ims_icscf", "cxdx_forced_peer", "hss.ims.smilecoms.com") ... 3.5. cxdx_dest_realm (string) Destination realm to be used in Diameter messags to HSS Default value is "ims.smilecoms.com". Example 1.5. cxdx_dest_realm parameter usage ... modparam("ims_icscf", "cxdx_dest_realm", "ims.smilecoms.com") ... 3.6. use_preferred_scscf_uri (int) Whether or not this ICSCF has a preferred S-CSCF to use when the HSS returns a list of SCSCFs. 0 means this I-CSCF has no preferred SCSCF. 1 means it has a preferred S-CSCF. Default value is 0. Example 1.6. use_preferred_scscf_uri parameter usage ... modparam("ims_icscf", "use_preferred_scscf_uri", 1) ... 3.7. preferred_scscf_uri (string) If use_preferred_scscf_uri is set then this is the URI of the preferred SCSCF. Default value is "". Example 1.7. preferred_scscf_uri parameter usage ... modparam("ims_icscf", "preferred_scscf_uri", "sip:scscf.ims.smilecoms.com:6060") ... 4. Functions 4.1. I_scscf_select(initial) 4.2. I_scscf_drop() 4.3. I_perform_user_authorization_request(route_block, capabalities) 4.4. I_perform_location_information_request(route_block) 4.1. I_scscf_select(initial) This function is used to retrieve the next unused SCSCF from the list for this request (based on callid). A positive return code (1) means an SCSCF was found and is armed for routing. Meaning of the parameters is as follows: * initial - Signal whether or not this is an original or subsequent. This function can be used from REQUEST_ROUTE | FAILURE_ROUTE. Example 1.8. I_scscf_select usage ... if (I_scscf_select("0")) { #there is an S-CSCF list - no need to do a UAR t_on_reply("register_reply"); t_on_failure("register_failure"); t_relay(); } ... 4.2. I_scscf_drop() Drop the list of SCSCFs for this request (based on callid). This function can be used from REQUEST_ROUTE | FAILURE_ROUTE | REPLY_ROUTE Example 1.9. I_scscf_drop usage ... I_scscf_drop(); ... . 4.3. I_perform_user_authorization_request(route_block, capabalities) Perform a UAR on Diameter CXDX interface. This function will build a list of SCSCFs to be used and populate the SCSCF list for the request. On a successful return of this message you can get the next available SCSCF by using the I_scscf_select function in 4.1. * Route block to resume after async UAR Diameter reply. * capabilities - whether to request capabilities or not "1" - with capabilities, "0" - no capabilities. This function can be used from REQUEST_ROUTE. p.s. this is executed asynchronously. See example on how to retrieve return value Example 1.10. I_perform_user_authorization_request usage ... I_perform_user_authorization_request("REG_UAR_REPLY","0"); #0=REG/DEREG; 1=REG+C apabilities exit; ... route[REG_UAR_REPLY] { #this is async so to know status we have to check the reply avp switch ($avp(s:uaa_return_code)){ case 1: #success if (I_scscf_select("0")){ t_on_failure("register_failure"); t_on_reply("register_reply"); #now relay to appropriate SCSCF if (!t_relay()) { t_reply("500", "Error forwarding to SCSCF"); } } else {#select failed I_scscf_drop(); t_reply("500", "Server error on SCSCF Select (UAR)") ; } break; case -1: #failure xlog("L_ERR", "UAR failure - error response sent from module \n"); break; case -2: #error xlog("L_ERR", "UAR error - sending error response now\n"); t_reply("500", "UAR failed"); break; default: xlog("L_ERR", "Unknown return code from UAR, value is [$avp( s:uaa_return_code)]\n"); t_reply("500", "Unknown response code from UAR"); break; } } ... 4.4. I_perform_location_information_request(route_block) Perform a LIR on Diameter CXDX interface. * Route block to resume after async LIR Diameter reply. This function can be used from REQUEST_ROUTE. p.s. this is executed asynchronously. See example on how to retrieve return value Example 1.11. I_perform_location_information_request ... I_perform_location_information_request("SESSION_LIR_REPLY","0"); exit; ... route[SESSION_LIR_REPLY] { if ($avp(lia_return_code) == 1) { if (I_scscf_select("0")) { append_branch(); t_on_reply("initial_request_reply"); t_on_failure("initial_request_failure"); if (!t_relay()) { t_reply("500","Error forwarding towards S-CSCF"); break; } break; } else { xlog("L_DBG", "dropping scscf list on initial request\n"); I_scscf_drop(); t_reply("500", "Server error on LIR select S-CSCF"); break; } } else { t_reply("500", "Server error on LIR"); break; } break; } ... 5. Statistics 5.1. Average UAR Response Time (uar_avg_response_time) 5.2. UAR Timeouts (uar_timeouts) 5.3. Average LIR Response Time (lir_avg_response_time) 5.4. LIR Timeouts (lir_timeouts) 5.1. Average UAR Response Time (uar_avg_response_time) The average response time in milliseconds for UAR-UAA transaction. 5.2. UAR Timeouts (uar_timeouts) The number of UAR timeouts. 5.3. Average LIR Response Time (lir_avg_response_time) The average response time in milliseconds for LIR-LIA transaction. 5.4. LIR Timeouts (lir_timeouts) The number of LIR timeouts.