User Tools

Site Tools


features:new-in-4.3.x

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
features:new-in-4.3.x [2015/06/02 14:34]
miconda
features:new-in-4.3.x [2015/06/10 12:04]
miconda [Default Config]
Line 1: Line 1:
 ====== Kamailio SIP Server (SER) - New Features in v4.3.x ====== ====== Kamailio SIP Server (SER) - New Features in v4.3.x ======
  
-**Current stable version is numbered 4.3.x and it was released in June 2015**.+**Current stable version is numbered 4.3.x and it was released in June 10, 2015**.
  
 <fc #0000FF> <fc #0000FF>
Line 15: Line 15:
  
   * API-like shared key peer-to-peer authentication using SHA hashing   * API-like shared key peer-to-peer authentication using SHA hashing
-  * http://kamailio.org/docs/modules/devel/modules/auth_xkeys.html+  * http://kamailio.org/docs/modules/4.3.x/modules/auth_xkeys.html
  
 ==== dmq_usrloc ==== ==== dmq_usrloc ====
  
   * distribute user location (usrloc) records between Kamailio servers using distributed message queue (dmq)   * distribute user location (usrloc) records between Kamailio servers using distributed message queue (dmq)
-  * http://kamailio.org/docs/modules/devel/modules/dmq_usrloc.html+  * http://kamailio.org/docs/modules/4.3.x/modules/dmq_usrloc.html
  
 ==== erlang ==== ==== erlang ====
  
   * connector to Erlang node   * connector to Erlang node
-  * http://kamailio.org/docs/modules/devel/modules/erlang.html+  * http://kamailio.org/docs/modules/4.3.x/modules/erlang.html
  
 ==== geoip2 ==== ==== geoip2 ====
  
   * GeoIP API for configuration file using the new library with support for IPv6   * GeoIP API for configuration file using the new library with support for IPv6
-  * http://kamailio.org/docs/modules/devel/modules/geoip2.html+  * http://kamailio.org/docs/modules/4.3.x/modules/geoip2.html
  
 ==== jansson ==== ==== jansson ====
Line 36: Line 36:
   * JSON document management using Jansson library   * JSON document management using Jansson library
   * it has support for JSON-PATH   * it has support for JSON-PATH
-  * http://kamailio.org/docs/modules/devel/modules/jansson.html+  * http://kamailio.org/docs/modules/4.3.x/modules/jansson.html
  
 ==== janssonrpc-c ==== ==== janssonrpc-c ====
  
   * JSON-RPC over netstrings client using Jansson library   * JSON-RPC over netstrings client using Jansson library
-  * http://kamailio.org/docs/modules/devel/modules/janssonrpc-c.html+  * http://kamailio.org/docs/modules/4.3.x/modules/janssonrpc-c.html
  
 ==== statsd ==== ==== statsd ====
  
   * enables sending data to the statsd framework directly from kamailio.cfg   * enables sending data to the statsd framework directly from kamailio.cfg
-  * http://kamailio.org/docs/modules/devel/modules/statsd.html+  * http://kamailio.org/docs/modules/4.3.x/modules/statsd.html
  
 ==== rtjson ==== ==== rtjson ====
  
   * SIP routing based on JSON API   * SIP routing based on JSON API
-  * http://kamailio.org/docs/modules/devel/modules/rtjson.html+  * http://kamailio.org/docs/modules/4.3.x/modules/rtjson.html
  
 ==== tcpops ==== ==== tcpops ====
  
   * enables control of the TCP options (such as the keepalive mechanism), on demand, and on a per-socket basis   * enables control of the TCP options (such as the keepalive mechanism), on demand, and on a per-socket basis
-  * http://kamailio.org/docs/modules/devel/modules/tcpops.html+  * http://kamailio.org/docs/modules/4.3.x/modules/tcpops.html
  
 ===== New in Old Modules ===== ===== New in Old Modules =====
 +
 +==== acc ====
 +
 +   * new parameter cdr_on_failed to control writing cds for failed dialogs
  
 ==== app_lua ==== ==== app_lua ====
Line 66: Line 70:
     * sr.tm.t_next_contatcs     * sr.tm.t_next_contatcs
     * sr.tm.t_on_branch_failure     * sr.tm.t_on_branch_failure
 +  * exported the APIs from uac and ndb_mongodb modules
 +
 +==== auth_radius ====
 +
 +  * added modparam radius_avps_mode parameter (int, true if not null)
 +  * reading all RADIUS AV-pairs to kamailio avp (not only SIP-AVP, if radius_avps_mode set to true)
  
 ==== cdp ==== ==== cdp ====
  
   * added support for incoming and outgoing trunk-group AVPs   * added support for incoming and outgoing trunk-group AVPs
 +  * new module parameter: workerq_length_threshold_percentage
 +  * added custom AVP to transport Call-ID in diameter request
 +  * added new counter(stat) for worker queue lenght - this will give an indication that workers are not keeping up with load if it gets too big
 +  * added stickiness to loadbalancing of diameter peers
  
 ==== cdpavp ==== ==== cdpavp ====
  
   * added support for incoming and outgoing trunk-group AVPs   * added support for incoming and outgoing trunk-group AVPs
 +
 +==== cfgutils ====
 +
 +  * rpc commands for gflags management
  
 ==== cnxcc ==== ==== cnxcc ====
  
   * added Redis support for distributed cnxcc nodes   * added Redis support for distributed cnxcc nodes
 +
 +==== ctl ====
 +
 +  * default path for ctl socket file is: /var/run/kamailio/kamailio_ctl
  
 ==== db_mysql ==== ==== db_mysql ====
Line 83: Line 105:
   * added parameter to change affected rows value for UPDATE queries   * added parameter to change affected rows value for UPDATE queries
     * when enabled will return the number of matched/foudn rows as opposed to the number of updated rows     * when enabled will return the number of matched/foudn rows as opposed to the number of updated rows
 +  * set back tick as quoting char for table and column names
 +
 +==== db_postgres ====
 +
 +  * new module parameters "timeout" and "tcp_keepalive"
 +
 +==== db_text ====
 +
 +  * added affected rows capability
 +  * support for OP_NEQ
 +  * simple raw query support for select operation
 +
 +==== dialog ====
 +
 +  * option to add custom headers for local requests to callee
 +  * don't send keepalive if dialog not in confirmed state
 +
 +==== dialog_ng ====
 +
 +  * added support for active and early dialog stats
  
 ==== dialplan ==== ==== dialplan ====
Line 98: Line 140:
   * new function ds_list_exist() to check if a dispatcher set exists   * new function ds_list_exist() to check if a dispatcher set exists
   * added per gateway and global send socket configuration   * added per gateway and global send socket configuration
 +
 +==== dmq ====
 +
 +  * resolve multiple IPv4/IPv6 addresses for a single notification address    
 +    * optionally enabled by new parameter "multi_notify"
 +    * includes addresses from DNS SRV records, A and AAAA records
 +
 +==== geoip ====
 +
 +  * return continent id via contid attribute
  
 ==== ims_charging ==== ==== ims_charging ====
Line 103: Line 155:
   * added realtime DB support for Ro sessions   * added realtime DB support for Ro sessions
   * added support for trunk ID in Ro CCR   * added support for trunk ID in Ro CCR
 +  * added access-network-information data to CCR - allows OCS to know location of UE when charge was made
 +  * added extra statistic: replies received for CCRs
  
 ==== ims_icscf ==== ==== ims_icscf ====
  
   * new module param use_preferred_scscf_uri - allows ICSCF to have a preferred S-CSCF is HSS returns a list   * new module param use_preferred_scscf_uri - allows ICSCF to have a preferred S-CSCF is HSS returns a list
 +
 +==== ims_registrar-pcscf ====
 +
 +  * use separate process to manage reginfo subscribes and publishes
 +  * new pseude-variable to get username of Contact that was used during registration
 +  * added optinal extra parameter for lookup_transport - allows avp,pv,etc to be used as URI in search for lookup_transport
  
 ==== ims_registrar_scscf ==== ==== ims_registrar_scscf ====
Line 113: Line 173:
   * new parameter user_data_always - if set S-CSCF always requests user data from HSS   * new parameter user_data_always - if set S-CSCF always requests user data from HSS
   * new mod_param subscription_expires_range - if set this parameter randomises the subscription expiry   * new mod_param subscription_expires_range - if set this parameter randomises the subscription expiry
 +  * new parameter notification_list_size_threshold
 +  * new function term_impu_has_contact - use this function to check if an IMPU has a valid contact
 +  * added support to receive RTR on Cx/Dx interface
  
 ==== ims_qos ==== ==== ims_qos ====
  
-  * Rx_reg use received IP for framed_ip_address AVP+  * Rx_reg use received IP for framed_ip_address AVP 
 +  * Rx_AAR - new parameters that let you set sub-id and sub-id-type 
 +  * new parameter cdp_event_list_size_threshold 
 +  * added stats framework and basic stats 
 +  * added new statistic aar_replies_received
  
 ==== ims_usrloc_pcscf ==== ==== ims_usrloc_pcscf ====
Line 126: Line 193:
   * added database support for subscriptions   * added database support for subscriptions
   * callback when contact is deleted/removed   * callback when contact is deleted/removed
 +
 +==== ipops ====
 +
 +  * added function to perform dns srv query in config
 +  * new config variable $srvquery(key) gives access to result
  
 ==== jsonrpc-s ==== ==== jsonrpc-s ====
  
   * support to receive RPC commands via FIFO file   * support to receive RPC commands via FIFO file
 +    * JSON-RPC commands can be sent now via a FIFO file, as alternative to (or together with) HTTP/S
 +
 +==== mi_fifo ====
 +
 +  * default path to fifo file is /var/run/kamailio/kamailio_fifo
 +
 +==== msilo ====
 +
 +  * new parameter skip_notification_flag
 +    * set to a flag value to be used to mark when the notification back to sender shouldn't be sent
 +
 +==== nathelper ====
 +
 +  * add append_sdp_oldmediaip parameter
 +  * use always contact to build ruri and received field if available to send the ping
 +
 +==== ndb_mongodb ====
 +
 +  * added mongodb_find_one()
 +    * find first matching document and return it
 +    * faster when knowing it is supposed to be only one, or needing only one
  
 ==== ndb_redis ==== ==== ndb_redis ====
  
   * Redis authentication is now supported:   * Redis authentication is now supported:
 +    * modparam("ndb_redis", "server", "name=srvX;addr=127.0.0.2;port=6379;db=4;pass=mypassword")
 +  * optionally allow starting without a connection to Redis server
 +
 +==== pipelimit ====
 +
 +  * take in consideration number of cpus for load
 +
 +==== presence ====
 +
 +  * configurable matching criteria to remove subscriptions from memory
 +  * added min_expires parameter
 +  * added min_expires_action parameter - action to take when min_expires > 0, possible values are:
 +    * 1 - RC compliant, return "423 Interval Too Brief"
 +    * 2 - force min_expires in the subscription
 +  * option to set priority for presentity documents
 +    * xavp_cfg - new parameter to specify the name of xavp use to store attributes for publish processing
 +    * priority can be set inside xavp_cfg with $xavp(xavp_cfg=>priority)
 +    * priority is stored in a new column inside database table presentity for each publish that has the xavp set
 +    * retrieve_order - new parameter to specify the order to retrieve the records from database. Default value is 0 (retrieve by received_time like so far). If set to 1, retrieve by priority value
 +    * if xavp_cfg parameter is set but priority field inside it is not, then inside the database is stored a value based on timestamp so the newest records will have a higher value, preserving the old behaviour even the retrieve_order=1
 +  * added sip_uri_match module parameter
 +    * 0 - case sensitive (default)
 +    * 1 - case insensitive
 +  * added $subs(uri) - retrieve subscription uri, useful when handling subscribe updates
  
- modparam("ndb_redis", "server", "name=srvX;addr=127.0.0.2;port=6379;db=4;pass=mypassword") 
  
 ==== pua ==== ==== pua ====
  
   * added outbound_proxy for publishing info   * added outbound_proxy for publishing info
 +  * new parameter db_table_lock_write: enable (=1) or disable (=0) the locks for table during an transaction
 +
 +==== pua_dialoginfo ====
 +
 +  * load dialogs for dialoginfo event upon restart
 +  * store pubruri for caller and callee in dlg vars
  
 ==== pv ==== ==== pv ====
Line 150: Line 272:
   * $sut - new variable that returns full uri for source address   * $sut - new variable that returns full uri for source address
   * added 7Bit encoding/decoding transformations   * added 7Bit encoding/decoding transformations
 +  * new function xavp_params_explode(p, x)
 +    * convert a string formatted as SIP params in xavp attribute
 +    * e.g., xavp_params_explode("a=b;c=d;e=d", "x") results in:
 +<code c>
 +      $xavp(x=>a) = "b";
 +      $xavp(x=>c) = "d";
 +      $xavp(x=>e) = "f";
 +</code>
 +  * new config var - $sbranch(key)
 +    * a static branch structure that can be used for config operations
 +    * the key can be like for $branch(key)
 +    * the static branch is not used for outbound routing, it is just a local container
 +  * functions to manage ruri and branches using $sbranch(key)
 +    * sbranch_set_ruri() -- use the $sbranch(key) attributes to update first branch fields (corresponding to r-uri)
 +    * sbranch_append() -- use the $sbranch(key) attributes to append a branch (alternative to append_branch() which is not affecting r-uri branch)
 +    * sbranch_reset() -- reset the attributes of $sbranch(key)
 +
 +
 +==== registrar ====
 +
 +  * add optional check for local path during lookup()
 +    * when performing a lookup the Path (if present) is evaluated and if the first hop is local we skip it to avoid looping
 +  * add optional params to registered function
 +    * 3rd parameter as flag is used to optionally restrict contacts when searching values are:
 +      * 1 - match_callid
 +      * 2 - match_received
 +      * 3 - match_contact
 +    * 4th parameter as flag to optionally perform action on positive match values are:
 +      * 1 - set xavp_rcd with value from matched contact
  
 ==== rr ==== ==== rr ====
Line 166: Line 317:
        * rtpengine tout param is now expressed in milliseconds and renamed        * rtpengine tout param is now expressed in milliseconds and renamed
    * new ''write_sdp_pv'' parameter, to return the new SDP in a $var() or $avp() instead of message body    * new ''write_sdp_pv'' parameter, to return the new SDP in a $var() or $avp() instead of message body
 +   * new modparam force_send_interface
 +   * rtp_inst_pvar: pseudo variable to store the chosen RTP engine address
 +   * added queried_nodes_limit parameter - configure the total number of nodes inside a set to be tried before giving up selecting a rtpengine
 +   * support for IPv6 force_send_interface
  
 ==== sdpops ==== ==== sdpops ====
Line 172: Line 327:
     * return true of the SDP has 'media=type ...' line and the media is active.     * return true of the SDP has 'media=type ...' line and the media is active.
     * active media means the port is non-zero and the direction is not "inactive"     * active media means the port is non-zero and the direction is not "inactive"
 +
 +==== siputils ====
 +
 +  * new function is_tel_number(val)
 +    * returns true if the parameter is a telephone number (optional leading + followed by digits)
 +  * new function is_numeric(val)
 +
 +==== tls ====
 +
 +  * options to set TLS versions lower limit
 +    * example: if method is set to TLSv1.1+, then the connection must be TLSv1.1 or newer
 +  * reintroduced server side SNI support
 +  * added server_name to module parameter
 +  * set SNI for outbound connections via xavp
 +  * new parameter: xavp_cfg to set the name of the xavp that holds attributes for tls connections
 +    * server_name attribute can be used to specify SNI for outbound connections
  
 ==== tm ==== ==== tm ====
Line 178: Line 349:
    * handle r-uri alias parameter for local generated requests within a dialog    * handle r-uri alias parameter for local generated requests within a dialog
    * default value for failure_reply_mode set to 3 - discard previous replies if a new serial forking step is done    * default value for failure_reply_mode set to 3 - discard previous replies if a new serial forking step is done
 +
 +==== tmx ====
 +
 +  * $T_branch(uri) - return uri of the branch when processing a reply in tm onreply_route
  
 ==== tsilo ==== ==== tsilo ====
  
   * new MI and RPC commands   * new MI and RPC commands
 +  * use use_domain inherited from usrloc
  
-==== usrloc ====+==== uac ====
  
-  * new parameter''close_expired_tcp''. When set to 1, usrloc will close the corresponding TCP connection for expired entries.+  * counters for active, disabled and total number of registrations 
 +  * new fields in $uac_req() to allow execution of event route on reply 
 +    * attributes: 
 +      * evroute - set to 1 to enable execution of event route 
 +      * evparam - generic string value that will be available in event route 
 +      * evcode - sip reply code, available in event route 
 +      * evtype - type of the reply - received or local generated (e.g., timeout) 
 +  * option to execute event_route[uac:reply] for uac_req_send() replies 
 +    * $uac(evroute) has to be set to 1 and event_route[uac:reply] defined 
 +      * inside event_route[uac_reply] the $uac_req(...) variable is restored back as before uac_req_send(), having the values from that time, excepting: 
 +        * $uac_req(evcode) is set to the reply code 
 +        * $uac_req(evtype) is set to 1 if the reply was received or to 2 if the reply was self generated (e.g., case of transmission timeout) 
 +    * if $uac_req(evtype)==1, the message processed inside the event route is the received reply, otherwise is a faked request with no relation to the request sent out by uac_req_send() 
 + 
 + 
 +==== userblacklist ==== 
 + 
 +  * adding new fifo commands 
 +    * dump_blacklist, check_blacklist, check_whitelist, check_userblacklist, check_userwhitelist commands 
 + 
 +==== usrloc ====
  
 +  * new parameter: ''close_expired_tcp''. When set to 1, usrloc will close the corresponding TCP connection for expired entries
 +  * store server_id, connection id and keepalive values for location records
 +  * fetching of records for nat keepalives in db only is done using new partition column
  
 ==== xlog ==== ==== xlog ====
Line 194: Line 393:
   * new parameter methods_filter - a bitmask with internal sip method ids to be skipped from printing logs. Default -1 (skip all)   * new parameter methods_filter - a bitmask with internal sip method ids to be skipped from printing logs. Default -1 (skip all)
   * parameter can be set at runtime via cfg reload framework kamcmd cfg.set_now_int xlog methods_filter 15   * parameter can be set at runtime via cfg reload framework kamcmd cfg.set_now_int xlog methods_filter 15
-  * alternative implementation of FS#81 
  
 ===== New in Core ===== ===== New in Core =====
Line 209: Line 407:
     * default value is 12 (old static value for MAX_BRNACHES)     * default value is 12 (old static value for MAX_BRNACHES)
     * the upper limit is 31, it has to be at least 1     * the upper limit is 31, it has to be at least 1
 +  * preprocessor subst rules are applied to pv names
 +  * add support for per-TCP connection lifetime
 +  * libsrdb1: mechanism to be able to quote table and column names
  
 === TLSF Memory Manager === === TLSF Memory Manager ===
Line 220: Line 421:
 ==== Default Config ==== ==== Default Config ====
  
 +  * parameters with the paths to fifo and unixsocket control file are pointing to /var/run/kamailio/
 ===== Tools ===== ===== Tools =====
  
features/new-in-4.3.x.txt · Last modified: 2016/05/12 15:28 by mslehto