|
On March 02, 2009, Kamailio (OpenSER) 1.5.0 has been released. It represents the major version with the biggest new features boost since project was started back in 2005.
Release 1.5.0 comes after a shorter development period than usual - about five months of coding and more than one month of extensive testing, but brings lot of new features and improvements, with special care to stability, performance, security and flexibility. A short summary of what the release brings out:
- configuration file caching system - generic storage engine in memory via htable module allowing to share data between processes and reduce SQL operations by storing results in cache
- execute SQL queries against multiple databases and access the results in a fast and natural fashion
- execute config file route blocks on timer
- send SIP requests from config file
- perform HTTP queries from config file - integration with web service
- dialog info presence support - RFC4235
- support for TLS server_name extension (aka SNI=server name indication)
- support for non-blocking logging
- many enhancements to least cost routing (LCR), load balancing (dispatcher) and carrier routing (carrierroute)
- access in config file to both request or reply during transaction processing
- perl-like regular expression support (PCRE library)
- sanity check of SIP message structure
- protection against SIP reply attack
- twelve new modules
- code restructuring in core - slimmer and less exposed to issues
- default config contains sample for extra accounting and NAT traversal with nathelper and RTPProxy
- web management interface - SIREMIS
See more detailed description of the new features in the "New Features" section of this document.
Download:
You can download the tarball of the released sources at http://www.kamailio.org/pub/kamailio/latest/src/
Binary packages for several distributions you can find at http://www.kamailio.org/pub/kamailio/latest/bin/ http://www.kamailio.org/pub/kamailio/latest/packages/
Packages will be uploaded as soon as they are submitted.
Documentation:
New Features
Survey of new features in the core, modules, additional tools and documentation.
New in core:
New modules:
-
htable
-
Generic hash table container made available to config script
-
Able to deal with many hash tables at same time in config file
-
Ability to load DB table in hash table at startup
-
Auto-expire for hash table values - will be removed automatically (easier to implement caching system)
-
Auto-expire value can be updated from config file
-
-
misc_radius
-
presence_dialoginfo
-
pua_dialoginfo
-
purple
-
Multi-protocol gateway module using Purple (Pidgin/ex-Gaim) library
-
Can connect SIP to GTalk, MSN, …, for IM&P
-
-
pv
-
Module to collect pseudo-variables from core, available in configuration file.
-
-
new pseudo-variable introduced in 1.5.0
-
-
$TS - current time stamp, refreshed upon each call
-
$TF - current time string formatted, refreshed upon each call
-
new transformations introduced in 1.5.0
-
{tobody.abc} - return parts of a To-Body structure - see here
-
regex
-
rtimer
-
execute route blocks on timer basis
-
can deal with multiple timers
-
can create new timer processes
-
each timer can execute multiple route blocks
-
-
siputils
-
sqlops
-
-
Among features:
-
many DB connections - the module
can connect to many databases on different servers using different DB
driver modules at the same time.
-
many DB results - the module can store many results of different SQL queries in separate structures at the same time. Thus is possible to work in parallel with several DB results.
-
access via pseudo-variables - the content of SQL query result is accessible via pseudo-variables.
-
array indexes - fast access to result values via array position: [row,column].
-
persistence in process space - a result can be used many times in same worker process. Query once, use many times.
-
-
utils
-
sanity
New in existing modules:
-
*_radius modules
-
New misc_radius module replaces Kamailio 1.4 modules: avp_radius, group_radius, and uri_radius
-
All misc_module functions now load AVPs from SIP-AVP reply items from RADIUS.
-
All functions send extra attributes to RADIUS if configured to do so by module parameters
-
Replaced avp_load_radius() function
by radius_load_caller_avps() and radius_load_callee_avps() functions
that take user, whose AVPs are loaded, as a string parameter that may
contain pseudo variables.
-
String names of AVPs are not
anymore prefixed with anything when AVPs are loaded (if needed, do
prefixing in your Radius server).
-
acc module
-
auth_radius module
-
Added auth_extra module parameter
that can be used to configure, which extra attributes (if any) are
included in RADIUS queries. One such attribute could, for example, be
Acct-Session-Id with Call-Id as its value.
-
carrierroute module
-
fetch result support, no increase in private memory pool necessary anymore to load larger routing data sets
-
extensive refactoring and cleanup, use standard functions or functions of the core instead of own implementations
-
efficient matching for domains and carriers based on numerical IDs
-
new support for non-numerial prefix matching (standard ascii set), configurable with a module parameter (match_mode)
-
db_mysql module
-
support for BIGINT (8 byte integer) values
-
add group functionality to read content from specified sections of the mysql config, the group can be setup in the db_url
-
db_postgres module
-
db_unixodbc module
-
support for BIGINT (8 byte integer) values
-
fetch_result support, to better support modules like usrloc, carrierroute and dialog with larger data sets
-
dialog module
-
ability to execute a route block when a dialog time-outs
-
exports dialog attributes via pseudo-variable $dlg(…)
-
exports dialog context via pseudo-variable $dlg_ctx(…)
-
dlg_manage() function can be used to handle SIP requests with dialog module, as alternative to Route-header callback
-
dlg_bye() can be used to send BYE to one or both sides in the dialog
-
dialog structure stores flags field that can be managed from config file
-
option to send BYE when dialog expires
-
dlg_bridge() can be used to bridge two SIP users in a call using INVITE(on hold)-REFER-BYE mechanism
-
dlg_transfer() can be used to transfer one side of the dialog to a new SIP address
-
new MI command - dlg_bridge - to
connect two sip users via MI interface - can be used to implement in a
easy manner click-to-dial functionalities
-
dialplan module
-
dispatcher module
-
new algorithm 8 - select first destination in the set
-
priority can be assigned to each destination address
-
better predictability of selected destinations and easier (another) way to implement routing failover
-
-
gflags module
-
lcr module
-
New high-performance implementation
that keeps lcr information in in-memory hash table, whose size can be
given in a new module parameter 'lcr_hash_size'. See lcr/README for lcr
function execution times.
-
New 'weight' field in 'gw' table that can be used to assign a gateway a weight among gateways of its group.
-
New 'hostname' field in 'gw' table that (if not null) is used as Request- URI host part. Like before, request is still forwarded to gateway's IP address.
-
Introduced aliveness checking of
gateways. A gateway is eligible for aliveness check, if value of new
'gw' table field 'ping' has value 1 for the gateway.
-
Support for prefix_mode=1 has been dropped.
-
lcr_dump MI function has been split into lcr_gw_dump and lcr_lcr_dump functions.
-
lcr_reload function is now executed under a lock thus minimizing race conditions.
-
Regular expressions are now Perl 5.x, instead of POSIX, compatible due to use of PCRE regular expression library.
-
load_gws()/next_gw() functions can now be called also from FAILURE_ROUTE.
-
to_gw() function now takes an optional pseudo variable argument that holds the address to be checked.
-
New function to_gw_grp() replaces to_gw() function with group id argument.
-
Enhanced versions of
load_contacts()/next_contacts() functions have been moved to tm module
as t_load_contacts()/t_next_contacts() functions.
-
options module
-
registrar module
-
the registered() function can now load the compared Call-Id from the reg_callid_avp AVP
-
new function: unregister(table, uri) - remove all contacts for uri from table
-
save() accept a new flag 0×04 to store and maintain single contact address per AoR
-
new function:
reg_fetch_contacts(table, uri, profile) - fetch contacts for uri from
table in profile. You can access the attributes for contact via
$ulc(profile⇒attr)
-
new function: reg_freee_contacts(profile) - release profile structure
-
new pseudo-variable: $ulc(profile⇒attr) - access attributes of contact records from profile
-
-
sl module
-
textops module
-
Added set_body(“text”, “content-type”) function - set the body of a SIP request
-
Added set_reply_body(“text”, “content-type”) function - set the body of a SIP reply generated by Kamailio (OpenSER)
-
Added {re.subst,expression} transformation - perform Perl-like substitutions on Pseudo-Variable values: Documentation
-
Added is_present_hf_re(regexp) - match header names by regular expression
-
Added remove_hf_re(regexp) - remove headers by matching the name against regular expression
-
-
tlsops module
-
tm module
-
auto-detection of changes done to From/To/CSeq headers of the INVITE to properly generate CANCEL/ACK
-
New functions
t_load_contacts()/t_next_contacts() that are enhanced versions of
functions load_contacts()/next_contacts() that earlier were in lcr
module.
-
Function load_contacts() can now be called also from FAILURE_ROUTE.
-
t_check_trans() can be used in
default onrely_route to detect if a SIP reply belongs to an existing
transaction. Used together with drop() can vanish replies coming to
proxy but not having a transaction.
-
$T_req(pv) - new pseudo-variable that provides access to request attributes while processing the reply
-
$T_rpl(pv) - new pseudo-variable that provides access to reply attributes while processing the request
-
t_cancel_branches(…) - can be used to cancel current processed branch, the other branches or all branches of the transaction
-
-
userblacklist module
-
uac module
-
uri module
New in additional tools:
- testing suite - now over 40 test cases
- documentation
- addition of man pages for all modules
-
These are not all, there is a big change log that gives more details:http://www.kamailio.org/pub/kamailio/latest/ChangeLog
Kamailio (OpenSER) v1.5.0 marks the end of current stage of project development and beginning of the SIP-Router.org era. SIP-Router.org is already in an advanced integration state. Check more details at http://sip-router.org.
Note: Kamailio is the new name of OpenSER project, name changed on July 28, 2008, due to trademark issues. First version
under Kamailio name was 1.4.0. Older versions will continue to use
OpenSER name. Project site and SVN repository on SourceForge.net still use the old name OpenSER.
|