Tuesday, September 8, 2015

IRC Devel Meeting, Sep 16, 2015

Kamailio project considering to organize the next IRC devel meeting to sync on the plans for Kamailio short term evolution. A wiki page has been created to keep track of what should be discussed there. Feel free to add your suggestions there:
First proposed date is next week on Wednesday, September 16, at 14:00 UTC (15:00 London, 16:00 Berlin, …). The date can be changed based on availability of people willing to attend — add your preferred date and time to the wiki.
Anyone can attend, no matter it proposed or not topics to discuss!

    Looking forward to irc-ing about Kamailio next week!

    Monday, September 7, 2015

    Async SIP Routing with Kamailio and Node.js

    One of the interesting modules added in Kamailio v4.3 is rtjson – in short, it defines a JSON document format that can be used to specify and push destination addresses when routing a SIP request. It is very handy when the attributes for routing are decided by an external application.
    A tutorial about using a Node.js application to decide the routing for a SIP request has been published at:
    The next diagram shows the relation between SIP, Kamailio and Node.js application.
    The relevant components used inside Kamailio are:
    • evapi module – to asynchronously send/receive data to/from Node.js (i.e., don’t block Kamailio, allow to handle other traffic meanwhile)
    • rtjson module – to fill in the internal fields corresponding to the routing attributes returned by the Node.js application
    • jansson module – to access the rtjson document in kamailio.cfg for additional processing
    Using this architecture, one can built external SIP routing decision engines for Kamailio that suits better various contexts. For example, do least cost routing or load balancing selection, access control policy, fraud protection, etc. inside the external application, instead of using the existing modules.
    Depending on the needs, using such architecture could fit better, especially when dealing with lots of SIP server nodes. Of course, Node.js platform can be replaced by any other application, standalone or on top of a framework.
    Read the content of the tutorial at:

    Thursday, September 3, 2015

    SIP Security – Analyze SIP HA1 Values

    WWW-Digest authentication (RFC 2617), the same used to authenticate users in SIP, requires that both server and user share and store the same secret. Storing the password in clear text is really bad, unfortunately the only alternative is to store the so called HA1 string, which is the result of MD5 hashing over username, authentication realm and password — this has become the default lately. 
    Kamailio, as well as other SIP server side applications such as Asterisk or FreeSwitch, can work with clear text passwords as well as HA1 values (no need to repeat that you should use them with the second option!).
    Each SIP service that allows customers to set the passwords must have a system in place to test if the passwords are strong enough to offer a fair protection against dictionary attacks. However, not all of them had such system from the moment they started to get customers.
    To become safe, the options are:
    1. force a reset of the passwords, so the new values are tested to see if they are strong
    2. try to audit the existing HA1 values in subscriber database and detect the ones using weak values
    The option a) is the best, but not easy to implement if the service provider doesn’t control the devices of the customer (CPE), especially when the customer has no IT/technical background.
    The option b) means more or less that the SIP provider performs a dictionary attack against itself. Tools like sipsak, sipp or sipvicious can be used for such task, but they have the drawback of doing quite some processing: build and parsing of SIP messages, plus network communication. The SIP servers with all subscriber accounts have to replicated on different machines, not to overload the production instances.
    But, unlike the attacker, the service provider has access to HA1 strings, knows the usernames and realsm, therefore it can skip a lot of processing done by SIP scanning tools and that can save a lot of resources and time.
    Not finding quickly an existing implementation for such needs, a tool named md5ha1 has been developed and published on Github, targeting to help doing audits over HA1 values, it is available at:
    It has options to load passwords from a file (e.g., 101, 123, …), generate passwords using templates (e.g., %u123 – replace %u with username) from a file or generate passwords using a set of characters with minimum and maximum length (e.g., passwords using only digits with length between 3 and 6). The readme of the project has more details about how md5ha1 can be used.
    Hopefully the tool is going to be useful for Kamailio community! Improvements to it are welcome, use Github platform for issues and contributions.

    Kamailio – The 15th Year Ahead

    Another development year for Kamailio is gone, the project enters its 15th full season of writing code. Back in 2001, on the 3rd of September, the first commit was made for the project, at that time called SIP Express Router (aka SER), done by Andrei Pelinescu-Onciul at Fraunhofer FOKUS research institute in Berlin, Germany, respectively:
     commit 512dcd9838f5aeb0bfccd02cfc156067b7f02b71
     Author: Andrei Pelinescu-Onciul 
     Date:   Mon Sep 3 21:27:11 2001 +0000
         Initial revision
    Next year we are preparing to celebrate with a special edition of Kamailio World Conference – be sure you keep it in your plans for 2016.
    Since September 2014, Kamailio has released two major versions, 4.2 (Oct 2014) and 4.3 (Jun 2015). Now, after the summer holidays, we are speeding up to get new stuff for next major release, planned to be numbered 4.4 — keep an eye on sr-dev mailing list to stay up to date with what is going to be new and interesting!

      A fruitful rest of the year for all Kamailians out there and prepare for the party in 2016!

      Tuesday, August 25, 2015

      Kamailio Advanced Training, Sep 28-30, 2015, in Berlin

      Next European edition of Kamailio Advanced Training will take place in Berlin, Germany, during September 28-30, 2015.
      The content will be based on latest stable series of Kamailio 4.3.x, released in June 2015, the major version that brought a large set of new features.
      The class in Berlin is organized by Asipto  and will be taught by Daniel-Constantin Mierla, co-founder and core developer of Kamailio SIP Server project.
      Read more details about the class and registration process at:
      Looking forward to coordinating the training session in Berlin!

      Monday, August 24, 2015

      Kamailio and Docker

      Containers have become rather popular lately and Docker is the technology leader. Containers make it easy to prototype and test, but many see them as a way to scale on demand, therefore pushing towards production deployments.
      Searching the web about Kamailio and Docker reveals plenty of resources, from bare dockerfiles to detailed blog articles to combine Docker, Kamailio and other VoIP applications such as Asterisk.
      Here are links to such resources:
      Some Docker resources exist for Siremis, the web management interface for Kamailio:
      Note that we haven’t explicitly tested those resources, it is up to you to select one, adjust and test as you need. This post has the role to provide a starting point for using Kamailio with Docker.
      If you are aware of other resources relevant for Kamailio and Docker, write to mailing list  to get them listed here.

      Tuesday, August 18, 2015

      ClueCon Follow Up

      Another edition of Cluecon conference ended recently in Chicago, a good crowd of VoIP developers spent time together to share what is new around the world for real time communications.
      I had a presentation about Kamailio and API driven SIP routing (slideshare– pdf).
      Erik Davidson and Gary Kramlich from Corvisa presented a scalable VoIP platform architecture (pdf) relying on Kamailio and FreeSwitch, announcing also the intent of publishing two new modules for Kamailio.
      Guys at Kazoo (contributors of kazoo module in Kamailio) gave an update about their open source cloud PBX system.
      Hopefully, the video recording of the sessions will be available soon, there were plenty of other sessions referring to Kamailio, which shared interesting concepts for use with real time communication services.

      Thursday, July 30, 2015

      Kamailio v4.2.6 Released

      Kamailio SIP Server v4.2.6 stable is out! This is a minor release including fixes in code and documentation since v4.2.5.
      Kamailio (former OpenSER) v4.2.6 is based on the latest version of GIT branch 4.2, therefore those running previous 4.2.x versions are advised to upgrade to 4.2.6 (or to 4.3.x series). If you upgrade from older 4.2.x to 4.2.6, there is no change that has to be done to configuration file or database structure comparing with older v4.2.x.
      Resources for Kamailio version 4.2.6
      Source tarballs are available at:
      Detailed changelog:
      Download via GIT:
       # git clone git://git.kamailio.org/kamailio kamailio
       # cd kamailio
       # git checkout -b 4.2 origin/4.2
      Binaries and packages will be uploaded at:
      Modules’ documentation:
      What is new in 4.2.x release series is summarized in the announcement of v4.2.0:
      Note: the branch 4.2 is the previous stable branch. The latest stable branch is 4.3, at this time with v4.3.1 being released out of it. The project is officially maintaining the last two stable branches, these are 4.3 and 4.2. Therefore an alternative is to upgrade to latest 4.3.x – be aware that you may need to change the configuration file from 4.2.x to 4.3.x. See more details about it at:

      Tuesday, July 28, 2015

      About new variables in Kamailio v4.3

      Each new major version of Kamailio brings a new set of configuration file variables, which adds to the existing long list (see Pseudo-Variables Cookbook), enabling more flexibility or making easier to approach some specific needs.

      v4.3 introduced as well several new variables, here we touch few of them.

      $var(name) is an old variable, storing the value in private memory, being persistent per process. It is very fast when used in operations (no looking needed), therefore popular across config files. One of its property is that the initial value is 0 (no need to initialize it explicitly) and setting it to $null results in resetting it to value 0.

      Requested by community, a new variable class $vn(name) was introduced in v4.3 by pv module, which has the properties of $var(name), but it holds ‘null’. Setting it to 0 requires explicit assignment ‘$vn(name) = 0′ and setting it to ‘$null’ no longer resets the value to 0, but to ‘null’.

      The pv module added $sbranch(key), a class of variables that allows to manage all the attributes of outgoing branches, including the first branch corresponding to request URI. It is like a temporary container where to store the attributes before pushing them to the branches. A set of three functions come to help in these operations: sbranch_set_ruri(), sbranch_append() and sbranch_reset(). An use case that is possible now can be setting the Path of a branch (next hops till final destination), including the one for R-URI branch.

      Related to XAVP variables, a function named xavp_explode_params() can be now used to take the names and values of a parameters string and add them as XAVPs.

      The rr module introduced variables to get the direction of the request – $rdir(name) will return ‘downstream’ if request is from caller to callee and ‘upstream’ if the request is from callee to caller.$rdir(id) is the variant to return 1 for ‘downstream’ and 2 for ‘upstream’. From the same module come $fti and $tti – the From and To tags as for the initial INVITE transaction, no matter of direction for the request. For example, using in config (e.g., as htable key) the dialog 3-tuple identifier (call-id, from-tag, to-tag) is now simpler, no need to care anymore about the direction of the request.

      Presence or other IMS modules are among the components introducing new variables, you can see the full list of variables available for Kamailio v4.3 at:
      What is new in v4.3 is summarized at:
      Enjoy the summer!

      Monday, July 20, 2015

      Kamailio v4.3.1 Released

      Kamailio SIP Server v4.3.1 stable is out – a minor release including fixes in code and documentation since v4.3.0 – configuration file and database compatibility is preserved.
      Kamailio (former OpenSER) v4.3.1 is based on the latest version of GIT branch 4.3, therefore those running previous 4.3.x versions are advised to upgrade. There is no change that has to be done to configuration file or database structure comparing with older v4.3.x.
      Resources for Kamailio version 4.3.1
      Source tarballs are available at:
      Detailed changelog:
      Download via GIT:
       # git clone git://git.kamailio.org/kamailio kamailio
       # cd kamailio
       # git checkout -b 4.3 origin/4.3
      Binaries and packages will be uploaded at:
      Modules’ documentation:
      What is new in 4.3.x release series is summarized in the announcement of v4.3.0:

      Wednesday, July 15, 2015

      Cluecon 2015

      During August 3-6, 2015, takes place a new edition of Cluecon Conference, in Chicago, USA. Backed up mainly by the developers of FreeSwitch project, the topics at the event cover many other open source real time communication projects as well as open discussion round tables.
      I will present about Kamailio on Tuesday, August 4, 2015.
      Cluecon is a place gathering lots of VoIP folks around the word, many from Kamailio community, it is one of those events that one should not miss.
      If you are at the event or around Chicago area during that time and want to meet to discuss about Kamailio, get in touch via sr-dev mailing list. If there are many interested, we can have some ad-hoc sessions and group meetings (e.g., dinner) to approach various topics about Kamailio.
      For private discussions, you can contact me directly (email to miconda at gmail dot com).

      Thursday, June 25, 2015

      Kamailio - TLSF – High Performance Memory Manager

      Kamailio v4.3.0, Camille Oudout from Orange/Libon, France, pushed a new memory manager (named tlsf) focused on high performances on handling memory operations.
      It is well known that Kamailio (from its very beginning as SER project back in 2001) has its own memory manager. That simplifies especially the handling of shared memory on different oeprating systems. There were two available, that can be enabled at compile time, so  called:
      • f_malloc (aka fast malloc) – the one mostly used as default for stable releases
      • q_malloc (aka quick malloc) – the one more suitable for memory operations troubleshooting
      While these two memory managers were designed to be fast for multi-process applications such as Kamailio (e.g., avoid thread locking for private memory) as well as dealing with the patterns of routing SIP traffic, few special cases could result in slowing down — one of this is when needing to free a lot of allocated chucks of same size.
      Worth to mention that system memory manager could be (and can still be) enabled to be used for private memory needs. Some other attempts to add new memory managers were not yet completed, therefore not being ready for use (e.g., the Doug Lea allocator or Lock Less allocator — you can check the source code tree, inside mem/ folder, for more details).
      Camille implemented the Two Level Segregated Fit (TLSF) memory allocator, know to be O(1) for both malloc() and free() operations (no worse case behavior). It has a 4 byte block overhead, but hardware memory it cheap these days. You can read more about it at:
      It is not enabled by default, being rather young code now, but it is a good candidate to become in the near future. To enable it, you have to install Kamailio from sources and compile using:
      make MEMDBG=1 MEMMNG=2 cfg
      make all
      make install
      It will enable the debugging mechanism as well, that can be disabled by using MEMDBG=0.
      If you start using it, do provide us feedback about how it performs, because it helps to assert its relevance and stability. Also, do not hesitate to start a discussion if you have questions or suggestions via the sr-dev mailing list.
      Have a great summer!

      Tuesday, June 23, 2015

      Kamailio Server Maintenance – Wed-Thu Night

      During the night between Wed (June 24, 2015) and Thu (June 25, 2015), planned to start not early than 00:00 GMT+1, there will be some schedule maintenance work to the infrastructure that is hosting some of the kamailio.org servers.
      The main affected services will be:
      • main website (www.kamailio.org)
      • wiki portals
      • mailing lists (lists.sip-router.org)
      • git mirror (git.kamailio.org)
      It is expected to have short downtimes of few minutes.

      Wednesday, June 10, 2015

      Kamailio v4.3.0 Released

      June 10, 2015Kamailio v4.3.0 is out –  a new major release, collecting new features and improvements added during about six months of development and one and a half month of testing.
      In short, this major release brings 9 new modules and enhancements to more than 50 existing modules, plus components of the core and internal libraries. Detailed release notes are available at:
      Development for next major release, 4.4.0 (expected to be out in the first part of 2016) has started already, even a new module is already present in master branch: smsops. Watch the project’s web site closely for further updates and news about evolution of Kamailio.
      Enjoy SIP routing in a secure, flexible and easier way with Kamailio v4.3.0!
      Thank you for flying Kamailio!

      Thursday, June 4, 2015

      Kamcli – command line control tool

      Recently a new command line tool for Kamailio management was published by Asipto, named kamcli, available at:
      It is written in Python and at this stage it is more an attempt to see if the community finds it useful and worth to get it developed further as part of Kamailio project.
      • Short about the benefits/flexibility:
      • python is by default installed on OSes (including Mac OS X) (as opposite to Lua, for example)
      • became rather fast since Google invested in it
      • lot more knowledge base and developers out there (as opposite to Lua or Perl), along with tons of extensions
      • implementation is based on a CLI framework (Click) that makes it extremely easy to add new commands in a plugin-like fashion, therefore is easy to have custom commands when having specific needs (e.g., managing a custom database table used in kamailio.cfg via sqlops => add a new cmd_xyz.py in commands subfolder, without touching other files, not even the config)
      • help message is embedded in the command code file, making it easier to document commands
      • easy to validate parameters as well as format the output
      • handling kamcli configuration file options is also easy (ini format)
      One of the reasons of pushing this out was in the perspective of deprecating MI and working with JSONRPC fifo from command line — there is not an easy ways to manage json docs with shell and common tools (e.g., cat, echo, grep, awk) only. Kamcli has implemented the JSONRPC over fifo command (see also jsonrpc-s kamailio module). Still, given the old initial implementation, at this moment, kamcli is relying on MI via fifo (mi_fifo) for some of the commands (e.g., dumping usrloc records from memory).
      So far, couple of commands were implemented when comparing with kamctl:
      • subscriber management (kamctl add/rm/passwd…)
      • user location management (kamctl ul …)
      • database querying (kamctl db …)
      • statistics (kamctl stats …)
      • mi commands (kamctl mi …)
      • jsonrpc commands (not in kamctl)
      If there is enough interest in developing this tool further, it can be migrated to Kamailio organization on Github to have all developers able to work on it.
      For further discussions about this tool, email to development mailing list .

      Tuesday, June 2, 2015

      Releasing Kamailio v4.3.0

      Next major version of Kamailio (v4.3.0) is planned to be out on Wednesday (June 10) or Thursday (June 11). The pool of things to fix is minor, deb packaging for 4.3 is ready, thanks to Victor Seva. Some bits are still left to do: add docs for 4.3 series in wiki, prepare RPM packaging and build
      proper ‘what is new’ list of features.
      Testing didn’t reveal new issues in the recent past as we run in two servers with live traffic. If you have issues with 4.3 branch, be sure you report them on Github tracker:
      Meanwhile, contributions to enhance the related pages on the wiki are very appreciated:
      Stay tuned for updates!

      Tuesday, May 26, 2015

      Branch for Kamailio 4.3 Has Been Created

      The next release of Kamailio will be 4.3 – a release with new module and many new functions! The GIT branch for the coming release 4.3 has been created. This branch  will host the release series 4.3.x. To help the developers, please download this branch and test it before the release!
      To get this branch from GIT, you can use:
       git clone https://github.com/kamailio/kamailio.git kamailio
       cd kamailio
       git checkout -b 4.3 origin/4.3
      Notes about installing Kamailio from this branch are available at:
      Hopefully in about two weeks or so the full release of 4.3.0 will be out.
      The master branch is again ready for new features, to be part of the next future release, expected to be numbered 4.4.

      Wednesday, May 20, 2015

      Kamailio World 2015 – One Week Before

      One week before and we are ready to welcome the guests of the 3rd edition of Kamailio World Conference & Exhibition.
      The content is filled with excellent technical tutorials in the first day and vast range of hot topics covered during the two conference days — Kamailio, SIP, WebRTC, Asterisk, Sems, JsSIP, Performance and Traffic Monitoring, OpenStack, Kazoo, Erlang, Cloud PBX, OTT or VoLTE are among them.
      We are honoured to have an impressive list of speakers, from those that are involved in building the communications, able to share their expertise from deep technical aspects to market needs and business perspectives.
      Over all, the event has grown continuously from its first edition, special thanks to our sponsors : FhG Fokus, FhG Forum, Asipto, Sipwise, sipgate, Simwood, Obihai, Matrix, Digium, Tyntec, NG Voice, CoreNetDynamics, Pascom, VoiceTel, 2600hz and VUC. They made possible to host the event at a very nice location in the city center of Berlin and be able to bring a consistent number of experienced speakers.
      Looking forward to meeting many of you next week in Berlin!

      Tuesday, May 19, 2015

      Kamailio v4.2.5 Released

      Kamailio SIP Server v4.2.5 stable is out! This is a minor release including fixes in code and documentation since v4.2.4. Don’t worry about upgrading – the configuration file and database compatibility is preserved.
      Kamailio (former OpenSER) v4.2.5 is based on the latest version of GIT branch 4.2, therefore those running previous 4.2.x versions are advised to upgrade. There is no change that has to be done to configuration file or database structure comparing with older v4.2.x.
      Resources for Kamailio version 4.2.5
      Source tarballs are available at:
      Detailed changelog:
      Download via GIT:
       # git clone git://git.kamailio.org/kamailio kamailio
       # cd kamailio
       # git checkout -b 4.2 origin/4.2
      Binaries and packages will be uploaded at:
      Modules’ documentation:
      What is new in 4.2.x release series is summarized in the announcement of v4.2.0:
      Looking forward to meeting many of you at Kamailio World 2015 next week!

      Monday, May 11, 2015

      New Kamailio Module: Erlang

      Before freezing the development for next major release – Kamailio v4.3.0 – several modules and other relevant additions were pushed in a rather short period of time to git repository. Now, we are trying to look briefly at few of them in a series of posts in order to let everyone know about them.
      First to talk about it is the erlang module, contributed by Seudin Kasumovic of Bicom Systems. Erlang is a functional programming language tightly related to telecom environment, with built-in support for concurrency, distribution and fault tolerance
      The module enables interaction of Kamailio with Erlang nodes, allowing to send and receive Erlang messages as well as RPC calls between each other. You can read more about it at:
      Seudin will also present at Kamailio World Conference how this module can be used and its benefits for scalability and reliability.