On October 18, 2011, Kamailio (OpenSER) SIP Server v3.2.0 has been released – this is a major release that includes a large number of improvements and new features, as a result of development from Kamailio (OpenSER) and SIP Express Router (SER) teams.
Here is a summary of new features in v3.2.0 (for more details see this wiki page):
- refactored default configuration file with new VoIP services provided out of the box
- new SIP server functionalities added, such as: speed dial, routing to voice mail, blocking redirect replies, etc.
- enabling the new functionalities can be done easily using config file pre-processor directives
- twelve new modules: async, db_sqlite, dmq, ipops, json, jsonrpc-c, ndb_redis, p_usrloc, presence_reginfo, pua_reginfo, sdpops, sipcapture
- Scalability
- asynchronous execution of request routing blocks from configuration file (via async module)
- distributed and partitioned user location service, with ability to connect to many database servers (via p_usrloc module)
- handling subscription to user location records from other SIP server instances (via presence_reginfo module)
- publishing of user location records to notify other SIP server instances about changes (via pua_reginfo module)
- suspend execution of SIP requests directly from configuration file and resume execution later, meanwhile other SIP traffic can be routed
- caching with database fallback mode for SIMPLE presence server implementation
- distributed SIP-based message queue for communication between SIP server instances (via dmq module)
- communication from configuration file with key-based-indexed (no SQL) Redis database that is straightforward to replicate and scale for large number of data records
- Call Stateful Proxy
- dialog module can store custom attributes for each VoIP call – they are saved to database and restored in case of SIP server restart
- ability to write full CDR at once via dialog and acc modules, as opposite to the two records for start and stop of each call
- detection of SIP spirals
- IPv6
- specific functions for handling IPv6 addresses in configuration file (via ipops module)
- auto-detection of local IPv6 interfaces and binding to them to listen for SIP traffic
- SIP SIMPLE Presence Services
- embedded XCAP server (xcap_server module) has support for conditions If-Match and If-Not-Match
- embedded XCAP server has support for OMA user-profile and pres-content (avatar)
- support for splitting large RLS NOTIFY requests into multiple NOTIFY requests
- support for resource-list indices – resource lists that contain references other resource lists
- support for XPath within rl-services documents
- support for OMA extensions across presence modules
- implementation of RFC3680 for distribution among many SIP server instances of user location records via PUBLISH-SUBSCRIBE-NOTIFY
- existing extensions provide first open source SIP server able to act alone as full presence server, with modules to aggregate presence states and notify watches as well as embedded XCAP server for management of user profiles and buddy lists
- Flexibility
- new configuration file pre-processor directives. e.g., import_file – include content of a file but don’t throw error if the file does not exist; trydef – define an ID if not defined yet; redefine – define an ID even if defined already; …
- new configuration file variables, e.g., $T(name) – attributes of SIP transaction; $timef(format) – print time in a specific format; …
- new configuration file transformations, e.g., {s.sql} – make the value ready for SQL query (good protection against SQL injections); {s.prefixes,len} – create a list of prefixes from input value; …
- many internal functions exported to be used natively in embedded Lua scripts – complex SIP routing logic can be written now completely in Lua (e.g., authentication, stateful forwarding, record-routing, a.s.o.)
- specific functions to handle IPv4 and IPv6 addresses in configuration file
- functions to manage SDP bodies in configuration file (e.g., remove specific codecs or keep only a set of codecs)
- functions to access content of JSON documents
- support for sending JSONRPC requests over netstrings, with processing done asynchronously
- connector to SQLite databases
- connector to Redis No-SQL databases
- SIP Traffic Mirroring and Capturing
- siptrace module is able to mirror SIP traffic adding extra headers with details about source address and time of receiving
- siptrace module is able to mirror SIP traffic in HEP format (Homer Encapsulation Packet)
- new sipcapture module is able to turn Kamailio into a SIP capturing server of high volum of traffic – receive and store mirrored traffic from other SIP server instances, received in HEP or IPIP format as well as from port mirroring
- web interface for analyzing stored SIP traffic is provided by Homer project
- IMS Extensions
- they are not packaged in v3.2.0, but a lot of efforts have been done to implement IMS extensions during this development cycle and they are available to test and use based on guidelines provided in this page.
- about 10 new modules are available offering IMS functionalities such as: I-CSCF, P-CSCF, E-CSCF, S-CSCF, LRF, MGCF and Diameter peering
- work is in progress to get IMS extensions fully compliant and expected to be included in official distribution with the next major release
More details about what is new are collected in New in 3.2.x Wiki Page
Project achievements:
- about one month and a half ago, the project celebrated 10 years of existence with a conference event in Berlin
- during the development cycle of version 3.2.0, 6 new people joined officially the development team, resulting on over 30 registered active developers in the past year and over 90 since the project started
- there are by now over 180 modules (not counting IMS extensions) in our source code repository
- community based survey showed that about 35 companies responding to our questions are using the project to route over 4 billions of VoIP call minutes per month
- estimated development effort so far is about 9 millions USD, equivalent of 162 person-years (Ohloh statistics)
Important note:
- when compiling from sources downloaded from GIT repository, you have to run first: “make FLAVOUR=kamailio cfg“
- it is needed to set the build profile to kamailio, since there is a single stable branch used for Kamailio and SER. There is no difference in terms of source code, it is only about application name and what modules are used with the default configuration file
- A step by step installation tutorial is available at:
Download:
You can download the tarball of the released sources at:
Binary packages for several distributions can be found at:
- https://www.kamailio.org/pub/kamailio/latest/bin/
- https://www.kamailio.org/pub/kamailio/latest/packages/
- https://www.kamailio.org/wiki/packages/debs
- https://www.kamailio.org/wiki/packages/rpms
Packages will be uploaded as soon as they are built by developers (Debian and Ubuntu debs as well as RPMs for Centos, RedHat, Fedora and OpenSUSE) or submitted by community for other operating systems.
Documentation:
- modules’ documentation: https://www.kamailio.org/docs/modules/3.2.x/
- cookbooks and more wiki docs: https://www.kamailio.org/dokuwiki/
- migration guide: https://www.kamailio.org/wiki/install/upgrade/3.1.x-to-3.2.0
- alphabetic indexes: for modules’ functions, parameters and control commands
Useful links:
- Install and maintain Kamailio 3.2.0 from GIT repository
- Commit ChangeLog for Kamailio 3.2.0
- Kamailio 3.1.x Release Notes – the previous major release
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. Source code since release 3.0.0 (when the merge of Kamailio and SER was completed) is hosted on GIT repository at http://sip-router.org.