name mode size
..
doc 040000
Makefile 100644 311B
README 100644 10.68kB
cdpeventprocessor.c 100644 12.67kB
cdpeventprocessor.h 100644 3.04kB
ims_qos_stats.c 100644 5.47kB
ims_qos_stats.h 100644 984B
mod.c 100644 46.95kB
mod.h 100644 2.44kB
rx_aar.c 100644 32.42kB
rx_aar.h 100644 4.17kB
rx_asr.c 100644 3.54kB
rx_asr.h 100644 2.15kB
rx_authdata.c 100644 16.37kB
rx_authdata.h 100644 4.27kB
rx_avp.c 100644 30.56kB
rx_avp.h 100644 3.69kB
rx_str.c 100644 5.79kB
rx_str.h 100644 2.22kB
sem.h 100644 2.9kB
stats.c 100644 2.62kB
stats.h 100644 2.33kB
README
The IMS QoS 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> Carsten Bock ng-voice GmbH <carsten@ng-voice.com> Copyright © 2007 FhG FOKUS Copyright © 2012 Smile Communications Copyright © 2015 ng-voice GmbH __________________________________________________________________ Table of Contents 1. Admin Guide 1. Overview 2. Dependencies 2.1. Kamailio Modules 2.2. External Libraries or Applications 3. Parameters 3.1. rx_dest_realm (string) 3.2. rx_forced_peer (string) 3.3. rx_auth_expiry (integer) 3.4. cdp_event_latency (integer) 3.5. cdp_event_threshold (integer) 3.6. cdp_event_latency_log (integer) 3.7. authorize_video_flow (integer) 3.8. cdp_event_list_size_threshold (integer) 3.9. audio_default_bandwidth (integer) 3.10. video_default_bandwidth (integer) 4. Functions 4.1. Rx_AAR_Register(route_block, domain) 4.2. Rx_AAR(route_block, direction, subscription_id, subscription_id_type) 5. Statistics 5.1. AAR Timeouts (aar_timeouts) 5.2. Average AAR Response Time (aar_avg_response_time) List of Examples 1.1. rx_dest_realm parameter usage 1.2. rx_forced_peer parameter usage 1.3. rx_auth_expiry parameter usage 1.4. cdp_event_latency parameter usage 1.5. cdp_event_threshold parameter usage 1.6. cdp_event_latency_log parameter usage 1.7. authorize_video_flow parameter usage 1.8. cdp_event_list_size_threshold parameter usage 1.9. audio_default_bandwidth parameter usage 1.10. video_default_bandwidth parameter usage 1.11. Rx_AAR_Register 1.12. Rx_AAR 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. rx_dest_realm (string) 3.2. rx_forced_peer (string) 3.3. rx_auth_expiry (integer) 3.4. cdp_event_latency (integer) 3.5. cdp_event_threshold (integer) 3.6. cdp_event_latency_log (integer) 3.7. authorize_video_flow (integer) 3.8. cdp_event_list_size_threshold (integer) 3.9. audio_default_bandwidth (integer) 3.10. video_default_bandwidth (integer) 4. Functions 4.1. Rx_AAR_Register(route_block, domain) 4.2. Rx_AAR(route_block, direction, subscription_id, subscription_id_type) 5. Statistics 5.1. AAR Timeouts (aar_timeouts) 5.2. Average AAR Response Time (aar_avg_response_time) 1. Overview This module contains all method related to the IMS policy and charging control functions performed by an Application Function (e.g. P-CSCF) over the Rx interface. This module is dependent on the CDP (C Diameter Peer) modules for communicating with PCRF as specified in 3GPP specification TS 29.214. 2. Dependencies 2.1. Kamailio Modules 2.2. External Libraries or Applications 2.1. Kamailio Modules The Following mouldes must be loaded before this module: * Dialog2 * Usrloc PCSCF * TM - Transaction Manager * CDP - C Diameter Peer * CDP_AVP - CDP AVP Applications 2.2. External Libraries or Applications This modules requires the internal IMS library. 3. Parameters 3.1. rx_dest_realm (string) 3.2. rx_forced_peer (string) 3.3. rx_auth_expiry (integer) 3.4. cdp_event_latency (integer) 3.5. cdp_event_threshold (integer) 3.6. cdp_event_latency_log (integer) 3.7. authorize_video_flow (integer) 3.8. cdp_event_list_size_threshold (integer) 3.9. audio_default_bandwidth (integer) 3.10. video_default_bandwidth (integer) 3.1. rx_dest_realm (string) This is the name of the Diameter realm of the Diameter server (typically a PCRF). Default value is 'ims.smilecoms.com'. Example 1.1. rx_dest_realm parameter usage ... modparam("ims_qos", "rx_dest_realm", "ims.smilecoms.com") ... 3.2. rx_forced_peer (string) FQDN of the Diameter server (typically a PCRF) to communicate with. If not set then realm routing is used. 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.2. rx_forced_peer parameter usage ... modparam("ims_qos", "rx_forced_peer", "pcrf.ims.smilecoms.com") ... 3.3. rx_auth_expiry (integer) This is the expiry length in seconds of the initiated Diameter sessions. Default value is 7200. Example 1.3. rx_auth_expiry parameter usage ... modparam("ims_qos", "rx_auth_expiry", 14400) ... 3.4. cdp_event_latency (integer) This is a flag to determine whether or slow CDP responses should be reported in the log file. 1 is enabled and 0 is disabled. Default value is 1. Example 1.4. cdp_event_latency parameter usage ... modparam("ims_qos", "cdp_event_latency", 1) ... 3.5. cdp_event_threshold (integer) This time in milliseconds is the limit we should report a CDP response as slow. i.e. if a CDP response exceeds this limit it will be reported in the log file. This is only relevant is cdp_event_latency is enabled (set to 0). Default value is 500. Example 1.5. cdp_event_threshold parameter usage ... modparam("ims_qos", "cdp_event_threshold", 500) ... 3.6. cdp_event_latency_log (integer) This time log level at which we should report slow CDP responses. 0 is ERROR, 1 is WARN, 2 is INFO and 3 is DEBUG. This is only relevant is cdp_event_latency is enabled (set to 0) Default value is 0. Example 1.6. cdp_event_latency_log parameter usage ... modparam("ims_qos", "cdp_event_latency_log", 1) ... 3.7. authorize_video_flow (integer) This is a flag that specifies whether or not to authorize video flows. 1 means video flows will be authorized over Rx and 0 means video flows will not be authorized over Rx Default value is 1. Example 1.7. authorize_video_flow parameter usage ... modparam("ims_qos", "authorize_video_flow", 0) ... 3.8. cdp_event_list_size_threshold (integer) This is a threshold on the size of the cdp event list. Once the queue exceeds this length a warning is logged. 0 disables this feature Default value is 0. Example 1.8. cdp_event_list_size_threshold parameter usage ... modparam("ims_qos", "cdp_event_list_size_threshold", 10) ... 3.9. audio_default_bandwidth (integer) This parameters defines the default bandwidth for Audio, if no "b=AS"-Parameter is found in the SDP. Default value is 64 (64 kBit) Example 1.9. audio_default_bandwidth parameter usage ... modparam("ims_qos", "audio_default_bandwidth", 32) ... 3.10. video_default_bandwidth (integer) This parameters defines the default bandwidth for Video, if no "b=AS"-Parameter is found in the SDP. Default value is 128 (128 kBit) Example 1.10. video_default_bandwidth parameter usage ... modparam("ims_qos", "video_default_bandwidth", 256) ... 4. Functions 4.1. Rx_AAR_Register(route_block, domain) 4.2. Rx_AAR(route_block, direction, subscription_id, subscription_id_type) 4.1. Rx_AAR_Register(route_block, domain) Perform a AAR on Diameter RX interface to subscribe to signalling status. This purpose of this is tell a Diameter server (typically a PCRF) to inform the requesting Diameter client on changes to the status of signalling bearer for the same framed IP address. For more details see 3GGP TS 29.214. Meaning of the parameters is as follows: * Route block to resume after async UAR Diameter reply. * domain that usrloc_pcscf uses to store user information. Return codes: * -1 - error: There was an error, so we must either ignore it (no subscription) or send 403 (depends on behaviour you want) 0 - Success: AAR-Request sent, reply is processed asynchronously. 1 - Success: No need to send AAR-Request, as a subscription still exists (continue as normal) 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. Rx_AAR_Register ... if(Rx_AAR_Register("REG_AAR_REPLY","location")==0){ exit; } ... route[REG_AAR_REPLY] { switch ($avp(s:aar_return_code)) { case 1: xlog("L_DBG", "Diameter: AAR success on subscription to signalling\n "); break; default: xlog("L_ERR", "Diameter: AAR failed on subscription to signalling\n" ); t_reply("403", "Can't register to QoS for signalling"); exit; } ... 4.2. Rx_AAR(route_block, direction, subscription_id, subscription_id_type) Perform a AAR on Diameter RX interface to request resource authorisation from a Diameter server (typically a PCRF). For more details see 3GGP TS 29.214. Meaning of the parameters is as follows: * Route block to resume after async UAR Diameter reply. * direction of this message - orig, term, etc. * subscription_id to hard code subscription ID for AAR. Used for some broken PCRFs. Leave blank to use default * subscription_id_type to hard code subscription ID type for AAR. Only applicable if subscription_id is set. Set to -1 to use default. This is as per RFC 4006: END_USER_E164 0, END_USER_IMSI 1, END_USER_SIP_URI 2, END_USER_NAI 3, END_USER_PRIVATE 4 This function can be used from REQUEST_ROUTE or ONREPLY_ROUTE. p.s. this is executed asynchronously. See example on how to retrieve return value Example 1.12. Rx_AAR ... if(Rx_AAR("ORIG_SESSION_AAR_REPLY","orig","",-1)==0){ exit; } ... route[ORIGN_SESSION_AAR_REPLY] { if ($avp(s:aar_return_code) != 1) { xlog("L_ERR", "IMS: AAR failed Orig\n"); dlg_terminate("all", "Sorry no QoS available"); } else { xlog("L_DBG", "Diameter: Orig AAR success on media authorization\n"); } } ... 5. Statistics 5.1. AAR Timeouts (aar_timeouts) 5.2. Average AAR Response Time (aar_avg_response_time) 5.1. AAR Timeouts (aar_timeouts) The number of timeouts on sending a AAR. i.e. no response to AAR. 5.2. Average AAR Response Time (aar_avg_response_time) The average response time in milliseconds for AAR-AAA transaction.