features:new-in-4.3.x
This is an old revision of the document!
Table of Contents
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.
Previous version was 4.2.x (released on October 16, 2014), see what was new in that release at:
This is a draft of new features added in 4.3 version, manually updated, thus not always synchronized with what is new in source code repository.
New Modules
auth_xkeys
- API-like shared key peer-to-peer authentication using SHA hashing
dmq_usrloc
- distribute user location (usrloc) records between Kamailio servers using distributed message queue (dmq)
erlang
- connector to Erlang node
geoip2
- GeoIP API for configuration file using the new library with support for IPv6
jansson
- JSON document management using Jansson library
- it has support for JSON-PATH
janssonrpc-c
- JSON-RPC over netstrings client using Jansson library
statsd
- enables sending data to the statsd framework directly from kamailio.cfg
rtjson
- SIP routing based on JSON API
tcpops
- enables control of the TCP options (such as the keepalive mechanism), on demand, and on a per-socket basis
New in Old Modules
app_lua
- exported additional tm functions
- sr.tm.t_load_contacts
- sr.tm.t_next_contatcs
- sr.tm.t_on_branch_failure
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
- 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
- added support for incoming and outgoing trunk-group AVPs
cfgutils
- rpc commands for gflags management
cnxcc
- added Redis support for distributed cnxcc nodes
db_mysql
- 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
db_postgres
- new module parameters “timeout” and “tcp_keepalive”
db_text
- added affected rows capability
- support for OP_NEQ
dialog
- option to add custom headers for local requests to callee
dialog_ng
- added support for active and early dialog stats
dialplan
- new RPC command: dialplan.dump
- list all entries in the dialplan
- support $(avp(“key”)[+]) notation on dynamic match/subst rules:
- ^(00|\+)?$(avp(s:pbx_cli)[+])([0-9]{3})$ will check every value of $(avp(s:pbx_cli) in the match one by one.
- See https://github.com/kamailio/kamailio/issues/5 for more details
- option to allow variables in match and substitution expressions - new parameter: match_dynamic to enable this feature
dispatcher
- new function ds_list_exist() to check if a dispatcher set exists
- added per gateway and global send socket configuration
geoip
- return continent id via contid attribute
ims_charging
- added realtime DB support for Ro sessions
- 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
ims_icscf
- 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
ims_registrar_scscf
- use dedicated process to send notifies
- 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 parameter notification_list_size_threshold
- new function term_impu_has_contact - use this function to check if an IMPU has a valid contact
ims_qos
- 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
ims_usrloc_pcscf
- added new parameter to contact match using only URI host and port
ims_usrloc_scscf
- added database support for subscriptions
- callback when contact is deleted/removed
jsonrpc-s
- 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
nathelper
- add append_sdp_oldmediaip parameter
- use always contact to build ruri and received field if available to send the ping
ndb_redis
- Redis authentication is now supported:
modparam("ndb_redis", "server", "name=srvX;addr=127.0.0.2;port=6379;db=4;pass=mypassword")
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
pua
- 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
- new variable type: $vn() that can hold a $NULL value. The existing $var() can not have a $NULL value.
- similar to $var(name) and able to hold $null
- default value is $null
$vn(x) = 0; $vn(x) = “abc”; $vn(x) = $null;
- $vz(name) aliased to $var(name)
- $sut - new variable that returns full uri for source address
- added 7Bit encoding/decoding transformations
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
- new variable class $rdir(key)
- return the direction of the request within dialog
- $rdir(id) - returns integer 1 for downstream and 2 for upstream
- $rdir(name) - returns the strings 'downstream' or 'upstream'
- new config variables $fti and $tti
- $fti - from tag as in initial INVITE
- $tti - to tag as in the response to the initial INVITE
rtpengine
- rtpengine_tout is now rtpengine_tout_ms
- 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 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
sdpops
- new function sdp_with_active_media
- 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”
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
- new function t_is_retr_async_reply to check if a reply being processed is part of a transaction currently suspended
- 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
tmx
- $T_branch(uri) - return uri of the branch when processing a reply in tm onreply_route
tsilo
- new MI and RPC commands
uac
- counters for active, disabled and total number of registrations
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
xlog
- xlog: new log function xlogm(…) - logs with method filtering
- same as xlog(level, message), fitering on methods
- 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
New in Core
Code
- execute onsend_route for replies before sending out
- control execution of onsend_route block for replies via parameter onsend_route_reply
- default tcp read buffer size set to 16kB
- pv print default buffer size set to 8kB
- default size for shared memory is 64MB
- new parameter - max_branches
- the maximum number of uac branches can be set via config
- default value is 12 (old static value for MAX_BRNACHES)
- 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
TLSF Memory Manager
- Two Level Segregated Fit memory allocator
- bounded-time performance memory manager
- malloc and free operations always done in O(1)
- build with
MEMMNG=2
option to activate TLSF
Default Config
Tools
Kamctl
- support of fnmatch operator for dialplan
- do not reload rules in memory after each change in database to allow batch updates. Reload command has to be done explicitely
- parameters of addrule after match expression are optional
Build Process
Support reproducible builds adding compile options to skip compile date or set a particular value
- default is current behaviour, date and time included in version string
- compile with no date and time:
make CC_EXTRA_OPTS="-DVERSION_NODATE"
- compile with a specific date and time:
make CC_EXTRA_OPTS='"-DVERSION_DATE=\"19:30:40 Feb 8 2015\""'
features/new-in-4.3.x.1433453579.txt.gz · Last modified: 2015/06/04 21:32 by miconda