Kamailio-开源SIP软交换平台

中国第一个专注Kamailio SIP 软交换技术分享平台

用户工具

站点工具


ims_icscf_ims_icscf_component_module_released

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

ims_icscf_ims_icscf_component_module_released [2017/09/11 11:33] (当前版本)
james_zhu 创建
行 1: 行 1:
 +====== IMS ICSCF Module ======
  
 +==== Dragos Vingarzan ​ ====
 +
 +FhG Fokus\\ ​
 +
 +''<​[[Dragos.Vingarzan@fokus.fraunhofer.de|Dragos.Vingarzan@fokus.fraunhofer.de]]>''​
 +
 +==== Jason Penton ====
 +
 +Smile Communications\\ ​
 +
 +''<​[[jason.penton@smilecoms.com|jason.penton@smilecoms.com]]>''​
 +
 +==== Richard Good ====
 +
 +Smile Communications\\ ​
 +
 +''<​[[richard.good@smilecoms.com|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 ====
 +
 +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) ====
 +
 +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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf","​route_lir_user_unknown",​ "​lir_term_user_unknown"​)
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf","​route_uar_user_unknown",​ "​uar_term_user_unknown"​)
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf","​scscf_entry_expiry",​ 300)
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf",​ "​cxdx_forced_peer",​ "​hss.ims.smilecoms.com"​)
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf",​ "​cxdx_dest_realm",​ "​ims.smilecoms.com"​)
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf",​ "​use_preferred_scscf_uri",​ 1)
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +modparam("​ims_icscf",​ "​preferred_scscf_uri",​ "​sip:​scscf.ims.smilecoms.com:​6060"​)
 +...
 +</​code>​
 +
 +\\ ===== 4. Functions =====
 +
 +==== 4.1. I_scscf_select(initial) ====
 +
 +This function is used to retrieve the next unused SCSCF from thelist 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**
 +
 +<​code>​
 +...
 +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();​
 +}
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +I_scscf_drop();​
 +...
 +</​code>​
 +
 +\\ .
 +
 +==== 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 succesful return of this message you can get the next available SCSCF by using the I_scscf_select functoin 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**
 +
 +<​code>​
 +...
 +I_perform_user_authorization_request("​REG_UAR_REPLY","​0"​);​ #​0=REG/​DEREG;​ 1=REG+Capabilities
 +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;
 +    }
 +}
 +...
 +</​code>​
 +
 +\\ ==== 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**
 +
 +<​code>​
 +...
 +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;
 +}
 +...
 +</​code>​
 +
 +\\ ===== 5. Statistics =====
 +
 +==== 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.
ims_icscf_ims_icscf_component_module_released.txt · 最后更改: 2017/09/11 11:33 由 james_zhu