Wednesday, December 14, 2011

Siremis v3.2.0 Released

Siremis v3.2.0 is out – the web management interface for Kamailio SIP Server (former Openser) and SIP Express Router (SER). This is a major release, compatible with Kamailio v3.2.x.
This release brings a large set of new features. Among them:
  • SQL-based CDR rating engine for billing purposes
    • stored procedure to compute the costs of calls
  • Management of billing rates
    • longest prefix rate selections
    • rating rules can be grouped to allow many sets of values
    • time unit is configurable per rating rule
  • Management of remote registration records (uacreg table)
  • Managment of mtree module (mtree and mtrees tables)
  • Management of dialog variables table
  • Update of LCR and SIP Trace views for compatibility with Kamailio 3.2.x
  • Tools to generate new database table views in a wizard fashion
    • create new views to database table with a command line tool in 5 steps
  • Charts drawing statistics of accounting records
    • graphics to show the evolution of accounting records during the past hours
    • graphics to show the types of INVITEs (call setup) during the past hours
  • Tables presenting summary of accounting records
    • count the number of INVITEs and BYEs in the past hours
    • present the top activity of accounting records – e.g., top 5 caller and callee
    • more can be added from configuration file
  • More SIP server activity charts (e.g., SIP requests traffic load)
    • e.g., default chart presents how many requests are received in intervals of 10 minutes
  • Buttons to switch to command pannel to reload Dispatcher or PDT records in SIP server cache
    • once new records are added, in two clicks they get in the cache of SIP server
  • Views for managing global black lists table
  • Many improvements to user interface
    • selection of local domain is done via select box or picker form (e.g., in aliases, user preferences, pdt, …)
    • selection of local username is done via picker form (e.g., user black lists, user preferences, aliases, …)
    • group names can be set in config file and selected from a list box
    • many static values are given as option to select from a list box (e.g., dispatcher flags, lcr options)
  • More targets in Makefile to make administration easier
Step by step installation tutorial, screenshots and demo are available on the web at:
Siremis is used during Kamailio Advanced Training classes for management of SIP server, a good oportunity to learn about Siremis itself, check for next locations at:

Friday, December 2, 2011

Migrating project from BerliOS to GitHub

BerliOS, the open source software forge, announced ending of its life by Dec 31, 2011. Although some time later, there was another announcement that the service will continue, to be operated by a non-profit foundation, I thought anyhow of copying two projects I had there to GitHub.

The two small projects I wrote long time ago, while being a researcher at Franhofer Fokus, were not really maintained, but anyhow it would be a pity to lose the code, parts of it may be useful in the future. If anyone wanders, here is short the description of these projects:
  • pocketsipmsg - this project was used a lot durin 2002-2005 to make demos of SIP instant messaging using iPaq running Windows CE. It is basically a SIP user agent capable of sending and receiving text messages, developed in Visual C for Windows CE
  • tmrec - this project offers a C library and command line tool for matching time recurrences defined by iCal RFC2445. The code is actually used, being embedded in cpl-c module of Kamailio SIP Server
Initially they were stored in CVS repository of BerliOS, but I switched them to SVN some time ago. Therefore, I was looking how to migrate SVN repository from BerliOS to a GIT repository on GitHub.

Googling gave lot of useful tutorials about migrating SVN to GIT, I am writing here just to show the specific case of migration from BerliOS to GitHub - it could save time for some people interested in same kind of operation.

Personally I used a Mac OS X, so first I installed git-svn from ports:

# port -v -d install git-core +svn

On a Debian/Ubuntu, the command should be:

# apt-get install git-svn

You have to create a file to map BerliOS username (used for SVN commits) to name and email address (to be used by Git). I named it authors.txt, the content:

dcm = Daniel-Constantin Mierla <me@xyz.com>
(no author) = Daniel-Constantin Mierla <me@xyz.com>
root = Daniel-Constantin Mierla <me@xyz.com>

For some reasons, which I didn't want to spend time to investigate why, there were two other authors appearing to have committed in SVN: root and (no author) -- so simply I mapped them to myself as well.

Next step I used git svn to clone the berlios project - here is the command used for pocketsipmsg project:

# git svn clone http://svn.berlios.de/svnroot/repos/pocketsipmsg --no-metadata -A authors.txt -t tags -b branches -T trunk pocketsipmsg

You will have to replace pocketsipmsg with your project ID on BerliOS.

I wanted to get the tags and branches from SVN. In the cloned directory, pocketsipmsg, you can list the branches with:

# git branch -r

You will notice that the SVN tags are now branches, to get them back to tags, you have to execute for each tag (named next as $tagname):

# git tag $tagname tags/$tagname
# git branch -r -d tags/$tagname

On GitHub you have to create the repository for storing the project - see http://help.github.com/create-a-repo/ to learn how to do it, if you haven't done it yet. In my case, I named it also pocketsipmsg.

Then add GitHub as remote repository and push to it:

# git remote add origin git@github.com:miconda/pocketsipmsg.git
# git push origin master --tags

That's all, your project is now stored on GitHub!

In summary, if git-svn is installed, your project does not have tags, you created authors file and added the repository $PROJECTNAME on GitHub under user $USERID, the commands you have to run for migration of $PROJECTNAME from BerliOS to GitHub are:

# git svn clone http://svn.berlios.de/svnroot/repos/$PROJECTNAME --no-metadata -A authors.txt -t tags -b branches -T trunk $PROJECTNAME
# cd $PROJECTNAME
# git remote add origin git@github.com:$USERID/$PROJECTNAME.git
# git push origin master

Enjoy!

Thursday, December 1, 2011

Kamailio v3.2.1 Released

Kamailio SIP Server v3.2.1 stable is out – a minor release including fixes in code and documentation since v3.2.0 – configuration file and database compatibility is preserved.

Kamailio (former OpenSER) 3.2.1 is based on the latest version of GIT branch 3.2, therefore those running previous 3.2.0 versions are advised to upgrade. There is no change that has to be done to configuration file or database structure comparing with v3.2.0.

Resources for Kamailio version 3.2.1

Source tarballs are available at:

Detailed changelog:

Download via GIT:

 # git clone –depth 1 git://git.sip-router.org/sip-router kamailio  # cd kamailio  # git checkout -b 3.2 origin/3.2  # make FLAVOUR=kamailio cfg

Binaries and packages will be uploaded at:

Modules’ documentation:

What is new in 3.2.x release series is summarized in the announcement of v3.2.0:

Tuesday, November 29, 2011

Kamailio v3.2.0 Developer Guide

Development guide for Kamailio SIP Server has been updated for v3.2.0 – it goes through internal components, presenting the APIs for pkg/shm memory, locking/synchronization, config file interpreter, database connectors, a.s.o., as well as guiding how to write a new module.

There is a section trying to collect hints about upgrading a module developed for old versions 1.x to newer architecture and APIs in versions 3.x.

The tutorial is available online at:

A mirror is hosted at:

Looking forward to your contributions to Kamailio SIP Server!

Thursday, November 24, 2011

Kamailio Advanced Training, Dec 5-8, 2011, Berlin

Next Kamailio SIP Server Advanced Training will take place in Berlin, Germany, Dec 5-8, 2011.

Last Kamailio stable series is 3.2.x (Oct 18, 2011, see release notes), continues the work done within SIP-Router.org project. Offering a big lot of brand new features in v3.2.0, starting with an older major version, 3.0.0, you can run mixed Kamailio (OpenSER) and SIP Express Router (SER) modules in the same SIP server instance, giving you the most powerful tools to build stable, very performant and features rich VoIP and Unified Communication platforms.

The class is organized by Asipto and will be taught by Daniel-Constantin Mierla, founder and core developer of Kamailio SIP Server project.

Read more details about the class and registration at:

Wednesday, November 23, 2011

Siremis v2.1.0 Released

Siremis v2.1.0 has been released – this is an update to previous release v2.0.0, bringing several enhancements and new web pages to manage PUA and RLS. It is still compatible with Kamailio v3.1.x, the last of this kind, next one to be out in the near future will be compatible with Kamailio v3.2.x.

You can find the news about this release, including links to download, screenshots and demos, at:

Alternative download site (tarball or git pull) is from sourceforge project:

Siremis v2.1.0 is working for most of the components with Kamailio 3.2.0, just the few that changed the database structure may not be fully functional (e.g., the modules with tables that have new columns, see http://www.kamailio.org/wiki/install/upgrade/3.1.x-to-3.2.0#sql_commands).

Saturday, November 19, 2011

New module - get UA config via presence service

Kamailio SIP Server has now a new module named presence_profile - the module extends presence server implementation with ability of handling ua-profile event. When an user agent subscribes to ua-profile event for its own AoR, it will retrieve profile data document via body of NOTIFY request.

The profile data document format is usually specific per user agent, such documents have to be built and added to presentity table by the admin or a third party application.

Read more about SIP user agent configuration framework in RFC6080:

Tuesday, November 15, 2011

New module – execute control commands over HTTP

The development repository of Kamailio SIP Server includes a new module, named xhttp_rpc, that allows execution of RPC control commands via HTTP(S). Just for example, you can list active TCP connections, dump user location records from memory, reload the records for LCR or load balancing rules.

The module reuse existing xhttp module, therefore it has no external library dependencies and the processing rate matches the performances of processing SIP requests.

You can read more about this module, see an example of how to use, at:
To use it, once you load the module, point your browser to http://yoursipserverip:5060/rpc and you are ready to go.

Tuesday, November 1, 2011

VoIP and Kamailio Social Networking Event in Cape Town

Tuesday, November 8, 2011, it is planned an open dinner in Cape Town, South Africa for people interested in SIP, VoIP, Kamailio or other open source VoIP projects. Everyone is welcome to join, see more details at:

Tuesday, October 18, 2011

Kamailio v3.2.0 Released

Kamailio (OpenSER) v3.2.0 is out – a major release with a very large number of new features and improvements.

On October 18, 2011, Kamailio (OpenSER) 3.2.0 has been released – this release is a result of more than 10 months of development and 2 months of testing from the teams of Kamailio (OpenSER) and SIP Express Router (SER) projects.

In the year of the 10th celebration of our project, this version comes with 12 brand new modules in addition to a lot of fresh features in core and old modules. Continue reading full release notes at:

Enjoy SIP routing in a more flexible and easier way with Kamailio v3.2.0!

Monday, October 3, 2011

Kamailio Developer Seminar, San Francisco, Oct 24-25, 2011

I (Daniel-Constantin Mierla), co-founder of Kamailio SIP Server project, will provide Kamailio Developer Seminar for one day and a half, Oct 24-25, 2011, in San Mateo, south of San Francisco, California.

Among topics to be approached:

  • internal architecture of Kamailio/SER SIP server
  • SIP parser
  • memory manager
  • locking manager
  • database API
  • configuration file language structure and interpreter
  • RPC/MI control interface
  • pseudo-variables and transformations framework
  • module interface
  • how to write your own extensions in C as module
  • inter-module APIs – transaction management, SIP SIMPLE Presence, asynchronous processing, a.s.o.
  • working with embedded interpreters for high level programming languages: Lua, Perl, Python

Who should attend:

  • VoIP/Telecom developers intending to write own extensions to Kamailio SIP Server
  • VoIP/Telecom administrators interested to learn about the internals of Kamailio SIP Server in order to know how to optimize the SIP routing and build proper configuration file
  • VoIP/Telecom professionals interested to learn about Kamailio SIP Server, how and where can it be used, its current features and future development

The event is a good place for networking with other professionals from VoIP/Telecom and Real Time Communications fields, past similar events having dozens of attendees.

The price per attendee is 250 USD.

Number of seats is limited and access will be granted in first come first served fashion.

Registration or requests for more details can be done via:

Thursday, September 22, 2011

Presentations from 10 Years SER Conference

The slides presented during 10 Years SER Conference, Berlin, September 2, 2011, are made available at:

The summary of usage statistics is available in this presentation. Thank you all that submitted data, we counted over 4 billions of routed call minutes and 500 millions calls per month, from about 35 reports.

Another interesting part of the event was the 10 Years SER Awards, see in these slides who was awarded.

The event was fully booked, everyone is looking forward to the next anniversary. Some pictures from the conference and evening’s social event will be published soon.

Wednesday, September 14, 2011

Kamailio v3.1.5 Released

Kamailio SIP Server v3.1.5 stable is out – a minor release including fixes in code and documentation since v3.1.4 – configuration file and database compatibility is preserved.

Kamailio (former OpenSER) 3.1.5 is based on the latest version of GIT branch 3.1, therefore those running previous 3.1.x versions are advised to upgrade. There is no change done to configuration file or database structure.

Resources for Kamailio version 3.1.5

Source tarballs are available at:

Detailed changelog:

Download via GIT:

 # git clone –depth 1 git://git.sip-router.org/sip-router kamailio
# cd kamailio
# git checkout -b 3.1 origin/3.1
# make FLAVOUR=kamailio cfg

Binaries and packages will be uploaded at:

Modules’ documentation:

What is new in 3.1.x release series is summarized in the announcement of v3.1.0:

If you want to see what is new in development version (to become the next major release v3.2.0 in few weeks), visit the web page:

Friday, August 26, 2011

SEMS v1.4.2 Released

The SIP Express Media Server (SEMS) version 1.4.2 is available. Users of SEMS 1.4 versions and anyone else is recommended to upgrade to that version. Please find below the relevant changelog, the source tarball is available at:

Debian/Ubuntu packages:

Changelog for SEMS 1.4.2 release:
* auth’ed BYE (wait_for_bye_transaction)
* fixes SIP auth for qop header format
* xmlrpc: fix busyloop with keep-alive
* a few minor SST issues
* builds on Ubuntu 11.4 (build-deps)
* ivr: release GIL on blocking file I/O
* SBC: fix codec filter for unnamed payloads<96
* fixed DSM variables to outgoing call
* some examples and documentation added

This release introduces a new configuration option wait_for_bye_transaction=yes which enables authentication of BYE requests sent by SEMS, which is disabled by default. If this option is not enabled, SEMS behaves like in 1.4.1.

Monday, August 8, 2011

Freezing development for Kamailio v3.2.0

Based on the last development IRC meeting, the next major release Kamailio v.3.2.0 should happen sometime by end of September, therefore the code should be frozen and go into testing phase about one month before.

The date proposed for freezing is Monday, August 22. By then, every developer has to push to master branch what he/she wants to have in 3.2.0.

The very good side of 3.2.0 is that we didn’t need to touch much the core and main modules, meaning we have a solid tested foundation, further testing should be focused on the new modules and the other enhancements.

What is new in devel version at this time (to be part of v3.2.0) is summarized at:

Thursday, August 4, 2011

Kamailio at Cluecon 2011

ClueCon is an annual 3-Day Telephony User and Developer Conference bringing together the entire spectrum of Telephony from TDM circuits to VoIP and everything in between. The location is Chicago, USA, between August 9-11, 2011.

Kamailio project will be touched in at least three presentations:

  • Daniel-Constantin Mierla, Asipto, co-founder of Kamailio – presenting latest news about development of Kamailio project and how to use it to enable strong security for large VoIP systems
  • Stefan Wintermeyer, Amooma – presenting Gemeinschaft 4, an IP PBX system built with Kamailio and FreeSWITCH
  • Alexandr Dubovikov – presenting Homer project, a Kamailio-based SIP capturing system for massive signaling traffic

If you are around Chicago and want to meet, drop a message on our mailing lists.

Tuesday, August 2, 2011

Kamailio and SER Usage Statistics

In order to present at 10 years SER conference in Berlin, I (Daniel-Constantin Mierla) am looking to get some statistics about usage of SER-based applications (e.g., SER, OpenSER, Kamailio, OpenIMSCore, …). Everything is going to be like a combined report, not individual listing. Therefore, if you want to participate, your name or company won’t be mentioned.

Here are some stats I thought of:

  • type of usage: production, evaluation (testing), research
  • number of subscribers (phone lines)
  • percentage of phones behind NAT
  • number of calls per month
  • number of call minutes per month

I am not looking for exact numbers, but rough estimation (e.g., about 10 000 phone lines, …). Of course, some of the metrics don’t apply always (e.g., if you do termination routed through SIP server, you don’t have subscribers, but just calls traffic). Those doing deployments, can make one summary of statistics for all instances. You may send other statistics you think they worth publishing.

Again, this is voluntary, naming is not required. I hope only those giving real number will write back — I will try anyhow to figure out if someone is just dumping fantasy numbers. If privacy is really a big concern, from case to case, everything can be done under NDA.

Send the statistics or contact me for further details per email at: <daniel [at] kamailio.org>. Many thanks in advance to those that are going to participate in this survey!

Monday, August 1, 2011

10 years SER Conference – Sep 2, 2011, Berlin, Germany

We are organizing an open conference to celebrate 10 years since the first line of code in SER and Kamailio SIP servers. The event is hosted by FhG Fokus Research Institute in Berlin, Germany, the place where SER project was started. The web page for the event with details about location and program is available at:

There is no participation fee for the conference day, registration can be done via web form. At this moment there are about 20 special guests and 14 speakers, with participants from 15 countries.

If you use SER-based applications (like ser, openser, kamailio, openimscore, …) and want to present about it or you want to sponsor the event in exchange of advertising through project channels, contact us via event registration form.

Thursday, July 28, 2011

3 years of Kamailio

Three years ago, OpenSER project had to choose a new name due to trademark infringements claims by an US company and Kamailio was the winner name.

Shortly after, the project faced a new hit, from inside this time, losing the old web domain. The sourceforge.net OpenSER project (where the source code was hosted) was the one showing the relation between the old name and new name, and the truth about whole thing.

Practically, from that moment Kamailio had to build a new brand from scratch, all the old web references being lost at that time. Despite the pessimism of many people and fighting FUD spread by cowards, I believe we succeeded to continue developing a great application, delivering a rock solid open source SIP server, withing a collaborative environment and open community.

I had no doubt about the success, just read (or google) about who is involved in management of the project or where are the people with relevant impact in the development of the project over the year (config file, database API, variables framework ... more to come soon on this blog).

Note that in present time the devel team is completed by the folks at SER project, Kamailio and SER are effectively same application right now, development being done together since autumn 2008 within sip-router.org development framework. To fully complete this picture, we are celebrating soon 10 years since the first line of code, where the major contributors to the project are among the special guests.

Apart of working to remove duplicates (and clarify better the relation and usage of two names Kamailio - SER -- briefly exposed here), the ongoing development of new features blossoms:
  • IMS extensions being worked to be integrated in main repository
  • Rich Communication Services enhancements (SIMPLE/OMA/RCS IM & Presence, embedded XCAP server)
  • embedded interpreters for high level programming languages (such as Lua)
  • distributed location service and message queues
  • config file pre-processing
  • asynchronous processing and more ...
All these facts are visible on the statistics offered by Ohloh service - few stats presented in the next graph.

If you are interested in the achievements of past releases since Kamailio name, see the release notes for versions 1.5.x, 3.0.0 and 3.1.x. Next major release, 3.2.0 is planned sometime by mid of autumn 2011.

Right now Kamailio is sitting now on a solid foundation, with a completely re-tailored architecture since OperSER time, suitable for current and future needs of real time communications, sustained by an increasing development team and backed up by major companies in the market. Its evolution is safer than ever.

My greetings to all Kamailians and thank you for your support over the last years! I am looking forward to meeting as many of you as possible at 10 years SER conference in Berlin, September 3, 2011.

Wednesday, July 20, 2011

ClueCon 2011

I am going to speak at Cluecon conference in Chicago, USA, Aug 9-11, 2011.

The speech focuses on how to build strong security for large VoIP operators, a topic where Asipto has broad expertise accumulated over the past 10 years. Some of our experiences were already shared via knowledge base site.

If you attend the conference or you are in Chicago area during these days and want to meet, do not hesitate to drop me a message via contact form.

Sunday, July 3, 2011

10yearsSER - things done right - variables

The veteran users of this project probably remember that day in the summer of 2003 when xlog module was introduced in SIP Express Router (SER) by Elena-Ramona Modroiu.

Starting with that moment, the SER config files were invaded by many xlog(...) and xdbg(...) lines - it was a big step forward to allow SER administrators understand what is going internally during processing of SIP traffic.

Little 'bugs' starting with '%' (named at that time 'specifiers') present all over the config were replaced dynamically at runtime with values taken from SIP traffic or runtime environment, giving back meaningful information about current processing.

Driven by their popularity, the specifiers implemented inside xlog module were moved to core, the marker sign '%' was replaced by '$' and since then they were named 'variables' (aka pseudo-variables). (Note: this evolution happened initially through Kamailio (OpenSER) branch).

The 'little bugs' became free to fly everywhere inside configuration file, in expressions, in assignment operations, module parameters or function parameters. And they did so!

For example, adding the prefix 0049 to dialed number became as simple as:

$rU = "0049" + $rU;

Testing if the dialed number starts with 0049? Here it is:

if($rU =~ "^0049") { ... }

Looking over several configuration files I have these days running on production systems, the operations with variables have the leading role in defining the routing logic. Without them, none of these configs would have been possible, without them, many ideas of new services would have been impossible to implement.

In the year of 10th anniversary, it is the time of sending kudos to Elena-Ramona for her contributions to this project.

PS: to clarify, the terminology 'pseudo-variables' was used due to the fact that SER's configuration language variables concept is different than classic variables. For example: some are read only, some have the value in private memory or shared memory, some are single-value some are multi-value.

Saturday, July 2, 2011

10yearsSER - things done right - database api

Besides throwing a party and being happy about it, a celebration remembers you how old you are. Same applies to SIP Express Router (aka SER) project. It started 10 years ago and the world was so different at that time (imagine: no twitter, no facebook!!!).

Targeting large IP telephony deployments with even millions of subscriber on same instance, using text files to store user profiles was out of discussion. Natural choice by year 2001: SQL database. Which one? Several options out there, so choosing one could have been proven wrong over the years.

The solution was on implement an abstract layer that allows to switch to a different database system without affecting the rest of the code. ODBC is something similar and UnixODBC is one open source implementation of it. The decision not to use unixodbc had to do with the target of going beyond SQL-like database, complexity of the ODBC system and willingness to control the component completely considering that database interaction is a critical factor for performance.

Jan Janak designed and implemented the internal DB API, which exists currently in two versions: v1 implemented mainly in Kamailio-specific modules and v2 implemented mainly in SER-specific modules.

Unlike ODBC, the internal DB API is looking to offer a limited set of features to interact with database, only those required from SER point of view.

These days, the list of database API connectors includes a significant number of implementations:
  • MySQL
  • PostgreSQL
  • SQLite
  • UnixODBC
  • DBText
  • BerkeleyDB
  • Oracle
  • LDAP
  • Flatstore
Practically, SER modules are not affected by what type of database connector you want. Besides that, different modules can connect to different database systems.

The abstract database API was a component that attracted many users to SER over the time. In the year of 10th anniversary, it is the time of sending kudos to Jan for his work.

Friday, July 1, 2011

10yearsSER - things done right - configuration file

Looking back over the past 10 years since SIP Express Router (aka SER) is developed, I found several things that made it famous. First such thing to talk about is the configuration file.

SER's configuration file is completely different than one may expect, like typical .ini file or, common in telephony, the prefix based routing rules (e.g., Asterisk's dialplan).

SIP promises included flexibility, extensibility and ability to route calls on IP/DNS based networks, with telephony just a subset of its capabilities. Based on that, going for prefix based routing seemed inappropriate for long term goals.

Initially designed by Andrei Pelinescu-Onciul, the structure of SER's configuration file ended to be very like a programming language. That succeeded to get over the time a lot of people to dislike SER itself, mainly those coming from legacy telephony products, very used in routing telephone numbers, based on prefixes.

Summarizing the evolution and comparing with what happened to other IP telephony projects, I can definitely conclude that the decision was the right one. Here is a short example of routing SIP INVITE requests to 10.0.0.1 and the other request types to 10.0.0.2:
route {
if(method=="INVITE") {
t_relay_to("udp:10.0.0.1:5060");
} else {
t_relay_to("udp:10.0.0.2:5060");
}
}
For example, Asterisk and Freeswitch, although they have their own call routing config language, text or xml based, in most of the cases the routing is decided using programming languages such as Lua, PHP, Perl a.s.o, through embedded interpreters or control interfaces such as AGI.

Probably SER came too early with this idea, at that time there was no fast scripting language that could have been used to match our performance goals, being necessary to define a new one. No matter how many hated it so far, several order or magnitudes more loved it, resulting over the time in a well defined SIP routing language, optimized to be fast for handling SIP traffic. With the power of a logical language in hands, people could easily build their ideas of new services on top of it.

At this moment SER and Kamailio (forked from SER in 2005 and back together since 2008) have embedded interpreters for Lua, Perl or Python, so you can route SIP using applications written in such programming languages, but still the default config language is the internal one.

It is no way I can be sure or claim that using a logical language for configuration file of telephony engines was invented in SER, but for sure it contributed substantially to show the power of such concept in building new and advanced telephony services.

In the year of 10th anniversary, it is the time of sending kudos to Andrei for such idea and his work to implement it.

Tuesday, June 28, 2011

Maketing - interaction between developers

[This is part of Maketing blog posts series]

The most important asset for an open source project is without doubt its team of developers. While in a company the monthly income may define the level of loyalty, in open source is about passion in most of the cases.

As a leader of the project, it is critical to find the way to keep the developers motivated and inside the project for long time. There will be many coming in and many going out quickly, if you don't succeed to create a loyal core team which stays in for several good year, you are lost.

At some point, when the project is big, you cannot care about it alone. Physically, you will not be able to handle alone the management, development, advertising and community interaction. Remember that you have also a private life. Therefore you need experienced people to help others coming on board.

How to get new developers? Be open enough. Open enough means not to be very restrictive and not very open. Being very restrictive in accepting contributions induce the false impression that the high quality is protected. Well, indeed, no line of code means no bug as well as nothing to use. On the other hand, accepting everything tha is submitted it is going to create a jungle.

Finding the right solution is a matter of the application. In Kamailio/SER, the design allowed to split in components which are very independent in influencing the quality of the others. Core and main modules are been exigently taken care. New ideas and young code can be very easy just added as independent module, which, if not used has no impact to your running instance.

This modularity solves another potential issue with developers: coding conflicts. One problem may have many solutions, some developers can have different opinions about what is the best one. That is good, allow them to contribute separate modules and users will have the liberty to choose the one they like more.

What about keeping the developers loyal and passionate about the project? First, bring the developers to be part of project's evolution. Involve them in discussions beyond writing code: planning, management, new releases or events a.s.o., everyone will fill safer if they know what is going to happen.

Be aware of language barriers and mentalities. Everyone thinks in mother tongue, writing the thoughts in English may look odd or impolite sometimes. Try to understand beyond words, contact the person privately and figure out more details before judging to sentence.

Don't forget that human interaction make relations stronger. Whenever you have a chance to meet in person a developer, don't hesitate to go out for a drink. An open source project is an social entity.

When you are still leading the project and the other developers (which are not paid by you) contribute substantially more than you to project, then you are succeeded to set the development on the right track and have a self-sustainable evolution.

Tuesday, June 21, 2011

Ukulele Kamailio Jingle

Javi Beltran, an open source musician and good friend of Kamailio SIP Server project, recorded a short composition for Kamailio playing Ukulele (Hawaiian instrument, aka Ukelele).

You can listen or download the jingle from:

Feel free to use the jingle as you wish in relation with Kamailio project. You can see more of Javi’s open sourced compositions on his web page.

Tuesday, June 14, 2011

10yearsSER - the 15000th commit

In the year celebrating 10th anniversary of SIP Express Router (aka SER) project (from where Kamailio (former OpenSER) forked in 2005 and merged back in 2008), the development branch encountered the 15000th commit in GIT repository.

It was done by the same developer that started the project and committed the 1st one, Andrei Pelinescu-Onciul:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --reverse | head -1

512dcd9 Andrei Pelinescu-Onciul Mon Sep 3 21:27:11 2001 +0000 Initial revision
The 15000th one is:
git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --reverse | head -15000 | tail -1

8a90dd3 Andrei Pelinescu-Onciul Sat Jun 11 11:24:05 2011 +0200 core: remove unused variables + coding style
This number of commits is counted only for development branch (GIT master), thus it does not take in consideration the branches of stable releases. That will make the number of commits in the project far more higher, but the target was to show only the main stream development evolution, not the fixes in stable branches.

Note that there are personal developer branches holding code commits done in the past and to be merged in GIT master branch in the near future, so the number 15000th commit may be different when checking again later. However, as a marker in the history of the project, Andrei's commit is the first in master branch to hit the 15000. The link to the commit via web GIT viewer is here.
You can also check the history of SER/Kamailio commits tracked by Ohloh here.

Be ready to party with us in September at the 10th project anniversary and watch us for the 20 000th commit!

Wednesday, June 8, 2011

Run your own SIP VoIP service on both IPv4 and IPv6


Today is World IPv6 Day - since Kamailio SIP server has support for IPv6 since 2002, I thought to contribute to today's celebration showing how to use it to provide a SIP-based VoIP service on both IPv4 and IPv6 networks, also bridging between them, with the same SIP server instance. Following VoIP communication scenarios are possible:
  • call from IPv4 to IPv4
  • call from IPv6 to IPv6
  • call from IPv4 to IPv6
  • call from IPv6 to IPv4
I used Jitsi SIP softphone to make the calls, Kamailio development version for SIP server and RTPProxy to help bridging the media streams between IPv4 and IPv6.

The How-To do it tutorial is available on the wiki at:
Happy IPv6 Day Everyone!!!

Tuesday, June 7, 2011

A look at SIP:Provider CE v2.2

SIP:Provider Community Edition (SPCE) has recently released the version 2.2. The out-of-the-box VoIP service operating platform added in this version a lot of interesting new stuff.

First is about the upgrade of the operating system to Debian Squeeze. Also Kamailio SIP Server and SIP Express Media Server (SEMS) are integrated with their latest stable branches.

From this point of view, having the latest Kamailio opens the doors to add by yourself any of its features in version 3.1.x directly in the configuration file, such as SIP/SIMPLE presence or secure communication over TLS.

In terms of architecture, the platform was re-sketched from grounds. It runs an instance of Kamailio to guard the other SIP applications, namely the SIP registrar and proxy (another Kamailio instance), the voicemail server (Asterisk) and the back-to-back user agent (SEMS). Besides the role of entry and exit point in the platform, the first instance of Kamailio acts as a load balancer, meaning, for example, that you can add new SIP proxy/registrar servers as you need.

Talking about security, only the Kamailio load balancer is running on public IP, all the rests can run on an internal one, for example 127.0.0.1, making impossible to be accessed from outside, avoiding DoS attacks on them. The load balancer is not using any SQL database, thus is able to absorb impressive amount of SIP traffic, being easy to deal with any kind of attacks. In addition, all the calls are routed through SEMS for SIP signaling topology hiding, protecting the coordinates of core components and the end points.

Caring about security had high priority in this SPCE release, besides those listed above, there are configurable options to protect against scanning and flooding attacks.

A brand new component of the platform is the ngcp-mediaproxy-ng (some notes about it here) which replaces RTPProxy for NAT traversal. The main benefits are in terms of QoS, ngcp-mediaproxy-ng using a kernel module to relay the media packets. The application has been developed in-house, used for many years in production and now released open source under GPLv3 for SPCE.

The web interface got also some fresh air, in particular the administration portal makes more use of web2.0 technologies, improving the user experience.

I am migrating one of the public VoIP services that run Kamailio to SPCE -- then it would be easy to try & feel it quickly. The plan is to go beyond the standard distribution, very likely will have SIP presence and few more features - the targets to be included in the new version of SPCE.

If you want to give it a try by yourself, choose between the APT repository or one of the provided virtual machines images for VMWare of VirtualBox, see details at:
Stay tuned for more updates!

Wednesday, June 1, 2011

The race to the new and world wide telco

Globalization is everywhere. Still one of the most crumbled markets is the telecom world (classic telephony or mobile). But we are tired of changing SIM cards as we land, we are tired of remembering to redirect numbers when we leave the office, we are tired to memorize all our phone numbers, someone's gonna fix it ... lots of money still there and the seat of a world wide telco is yet free.

The race (could be called war as well) started: Apple, Facebook, Google and Microsoft moved troops, stroke and changed the strategies. We know who is top search engine, top gadget maker, top social networking platform or top operating system vendor, but who is going to win the top world-wide telco crown? Time will decide, first for now just a quick look at top fighters.

Microsoft

Being still hot, let's look first at Microsoft and its acquisition Skype.

Deal was agreed, but it is going to take some time to get approved by authorities. This period is a big waste of time. Besides that, the whole eco-system is a mixture, fitting pieces (i.e., Microsoft applications with Skype communication) together to build a puzzle that was not designed for this goal from the beginning it is going to cost more time and quite some money in development and deployment.

Another weak point for this team is poor presence among end user mobile terminals. Windows 7 for mobiles is at its very young age, iOS and Android have far more third addons that significantly balance the end user decisions of what to buy. Moreover Microsoft does not have a branded hardware yet that attracts customers. Buying Nokia can bring them the infrastructure, the knowledge to build mobile hardware and more distribution channels, still the 'device' is not there since Nokia does not have it either. Therefore more lost time.

Many presented their friendly relation with Telecoms as a strong point, I see it completely different, we talk here about taking parts of telecom cake, so it can turn against rather than help them. I expect Telecoms reducing Microsoft's revenue on other channels (desktop and server OS, productivity applications, a.s.o.) once it starts direct competition.

Apple

The company is lone rider. Does cool stuff, good looking devices and rich user experience that everyone want, but for the other companies is hard to do business with them. Apple has a 'good' reputation of changing the rules in the middle of the game as they like.

They are well positioned regarding mobile devices with iPhone and I would count even iPad and iPod Touch. The upcoming iCloud can provide the needed infrastructure to run telecom service.

Facetime service looked interesting, still none of my close contacts switched to use it as primary communication channel. I don't have figures about their subscriber base, but can be the seed for the telecom plans.

Google

By using Gmail ID Google solves quickly the addressing space with unique user ID in a convenient way. The subscriber base is big enough to be very appealing to use the service or interconnect with.

With GPhone and especially with Android OS for mobile phones and pads, Google is extremely well positioned at this moment, recently outselling iPhone.

Google offers GTalk and Google Voice products for voice communication, too separated so far in my opinion.

Facebook

The famous social networking relies primarily on its user base. They realized that lack of a public Facebook unique ID is working against them, so recently they added own email service and try to force users to choose their Facebook address.

End user controlled device is missing completely right now, there were rumors about a Facebook phone, nothing for sale so far. Their messaging system is open for federating through XMPP, an open standard, but internally it is different.

My thoughts

Money is not a big issue for any of these companies, what matter is the time and the immediate gain of taken decisions.

What I would like to see from the new telecom model? Freedom in communication and mobility for users, plus a proper mapping of the service on the Internet architecture and use what drives the Internet and made it famous (the DNS). What I expect?
  • be able to choose my contact addresses (what used to be phone numbers), where people can call me. I am Daniel, not the only Daniel in this world, but I am the one at Kamailio project, so daniel@kamailio.org can uniquely point to me.
  • be able to interconnect easily with my own brewed telco system. Look at how email is working - Internet domains (DNS) for routing.
  • be able to migrate easily my own brewed service to world wide telco's infrastructure (porting my addresses) and the other way around. DNS is again straightforward the solution
  • be free in the content of the communication, no restrictions on media type imposed by core network
At this moment I see SIP, the open standard protocol very popular in Voice over IP, as the right direction. Yes, I am a SIP guy, but it is hard to argue against the next facts:
  • SIP has a very large end user equipment base in place - SIP is deployed by many operators and present in form of hardware or software to hundreds of millions of people, probably more than Skype has as Tim Paton stated. That means if one of the companies starts a very appealing SIP service, it costs nothing to all those owners of SIP devices to join the club - a huge market already prepared.
  • Interconnection still drives a lot of money in telecom - a trusted world wide company that can offer direct SIP-to-SIP interconnect at cheap rates can secure good revenue from existing SIP-based VoIP operators just by offering a bypass of PSTN.
  • SIP was designed with IP networks in mind, therefore it has email-like addresses and DNS in the core of the protocol
  • Native extensions for end-to-end (proxy model, see below) Text Messaging and Presence
  • It works with any real-time media streaming communication - voice, video, desktop sharing, a.s.o.
Using SIP is not easy though, has to be done carefully, the most important aspect is to forget what a classic Telco does and design a new telecom model:
  • forget about implementing the intelligence in the core network - back-to-back user agent model does not scale to world-wide telco target and imposes restrictions on type of communication. Proxy model scales much more better and requires only the basics of SIP - just interconnect people and operators.
  • stick to basics of SIP - specifications that worked always and they are very simple to implement. If your engineers cannot design the service using less than 10 SIP related RFCs (3 being the core of the protocol), fire them, is going to be too much of classic telecom.
  • let the end device be in charge of communication - people like smartphones, they pay a lot for such devices and then want to use them to full features set
  • charge based on time or volume of data, not type of communication - I may have my new SIP application doing 3D holograms, don't hunt the content type to rise the price, it is a set of bits flowing around for anything, period
  • TLS as primary transport layer - protect people against ISPs blocking VoIP, ensures encryption of content (texting and presence) and privacy (who is calling who). Moreover, for Interconnect services will provide good authentication of peers, without the overhead of setting new access rules for any new server a company is powering up, removing as well the risk of SPIT
  • no allocation of random numbers - provide the option for people to choose their contact ID, email-like addresses is something people are familiar with and remember easily
Regarding the technology, if there is nothing developed in-house for the infrastructure part, using open source would bring real advantages. From the applications I am familiar with:
  • Kamailio SIP server for proxy - hard to beat scalability for routing SIP, including secure TLS communication from end user to core network or for interconnect, plus SCTP as a good choice for within core network communication
  • a good range of software for dedicated Voice application servers, e.g., Asterisk, Freeswitch or SEMS
  • gazillions of extensions already in place for add-on services and interaction with social networking or other IP services
  • access to source code to develop further enhancements in-house for new needs and be able to integrate with the other services offered by third parties or the company itself
How about you? What would you like to get from a new world wide telco? Which technology would be today the best to choose? Do you think of any other company able to run in the race?

Tuesday, May 31, 2011

Maketing - from an idea to first announcement

[This is part of Maketing blog posts series]

Announcing a new open source project is one of the most important steps in its evolution. Whether it is something completely new or an alternative for existing projects, you must be able to communicate properly its target and the benefits.

Talking about software projects, try to do the big announcement when you have something running. People like to feel the products, in software that means they should be able to run something.

Hey, you are at beginning, it may be buggy, incomplete, but there should be something running. It gives the change to engage new people with feedback about issues and desired features.

On the other hand, if you have a cool idea but nothing to present, most of the people will forget about it soon. The first adopters are usually the techies, interested in the same domain and they guide after "show me the code first".

Depending on the market, time to bake a project before announcing it is also very important. With SIP Express Router (SER), baking time was about one year (note: it was actually used in research projects and demos) -- when it was released under GPL, the entire history of development was made public (kept in CVS internally at FhG Fokus Institute and then migrated to berlios.de).

SIP was at its beginning as well, so time was a good friend in this aspect during early 2000. Now it might not be the same. The development done internally during the first year allowed to come to the public with quite rich in features SIP server, the first of its type in open source. In just few months we had a consistent external community involved in the project, as users and developers.

Therefore, here is my list to consider when launching a new project:
  • release some source code that is working to some extent from day one
  • don't bake it too much internally - waiting too long you may miss good chances
  • create basic documentation - how to build and run the application
  • create a web site to present the project - it will help to easily refer to, spread the word and get listed in web search results
  • underline the target of the project - what it tries to offer and how it differentiate from similar ones
  • open communication channels to community - mailing lists, web forums, a.s.o. - keep the archive of discussions public, it will help others learn from old debates
  • abuse your friends and colleagues for initial feedback and first discussions - there are many watching the archive before joining, a dynamic community attracts new members
  • use social networking to rich more audience
  • be sure you are available to answer questions quickly in the early stage - spread the knowledge about the application so that community members can answer similar questions later to new members, lifting some load from you
If the launch is carefully prepared, you are half way done to ensure the success of the project. First impression matters!

Monday, May 30, 2011

Maketing - the art of building open source projects

An open source project is more than source code - beyond the application itself it is about proper promoting, interactive community and vision.

No matter how good it is the application, if you are not able to promote it and attract a loyal community, then it is not going to succeed. Without transmitting the vision, defining a clear target and development path, community is not jumping on board.

This year is 10 years of SIP Express Router (aka SER) - the reference implementation of open source SIP server. I was involved at the top management of the project from its early beginning, then developing a different path through the fork Kamailio (former OpenSER) for about 3 years and since 2008 I am again full time in it - right now SER and Kamailio share the same source code, same developers, because of database structure constraints, they are still released as independent applications.

Looking back over the years, I realized that building successful open source project is beyond programming skills. With this post I am opening a series of blog posts to share from my experiences.

The posts will be tagged maketing. It is not a typo, just a hash tag resulted from:
  • make - one of the famous tools used in open source to build your application, very common in Unix/Linux world
  • marketing - strategies and actions of promoting
Coming in my mind to approach in future posts, not in this order and not limited to:
  • from an idea to first announcement
  • key aspects of code development - taking care of own code and contributing to parts from other developers
  • developers' interaction - the project counted over 80 registered developers from more than 10 countries, over 25 still very active, 5 joined in the past half a year
  • community - from the group of developers to thousands of users - engaging people beyond programmers
  • marketing - attending events, organizing events, news and articles
  • versioning and release policies - what are the important aspects to take care of
  • branding - how SER, OpenSER and Kamailio went from day one, an unknown name, to become very popular and recognized brand in the market at their time
  • handling forking - good and bad times
  • project management - its role, who should do it and how has to be done
  • penetrating the money market with open source
Expect stories based on my personal experiences, what I considered to be good and bad, how I dealt in special cases, what I think could have been done better. Maybe they will be useful for somebody in the wild to build better open source projects...

Update:

Following posts were released in this series:

Thursday, May 26, 2011

Kamailio v3.1.4 Released

Kamailio SIP Server v3.1.4 stable is out – a minor release including fixes in code and documentation since v3.1.3 – configuration file and database compatibility is preserved.

Kamailio (former OpenSER) 3.1.4 is based on the latest version of GIT branch 3.1, therefore those running previous 3.1.x versions are advised to upgrade. There is no change done to configuration file or database structure.

Resources for Kamailio version 3.1.4

Source tarballs are available at:

Detailed changelog:

Download via GIT:

# git clone –depth 1 git://git.sip-router.org/sip-router kamailio
# cd kamailio
# git checkout -b 3.1 origin/3.1
# make FLAVOUR=kamailio cfg

Binaries and packages will be uploaded at:

Modules’ documentation:

What is new in 3.1.x release series is summarized in the announcement of v3.1.0:

If you want to see what is new in development version (to become the future major release v3.2.0), visit the web page:

Wednesday, May 25, 2011

Energy Efficiency and Performance Testing for Kamailio v3.0

Jan Janak, one of the core developers of SIP Express Router (SER) - (since version 3.0.0, SER and Kamailio (former OpenSER, which started as fork of SER in 2005) are built from the same source code) conducted a very interesting research project regarding energy efficiency of VoIP systems during 2010, a collaboration between iptel.org and Columbia University.

The team used the source code from sip-router.org GIT repository from January 2010, which corresponds to Kamailio (former OpenSER) and SER v3.0. The latest stable series v3.1 shares the same internal architecture with v3.0.

As part of the research work, he could also gather some figures about capacity and performances of v3.0 with a quite complex configuration file (involving authentication and NAT traversal as well).

You can read the paper about energy efficiency at:
The draft notes about capacity and performances of v3.0 are available at:
Some interesting results:
  • one instance of SIP server with 500 000 online users (mixed users - behind and not NAT routers) - consumed energy 210W
  • one instance of SIP server with 1 000 000 online users (no NAT involved) - consumed energy 190W
  • on a 32-bit machine with 4GB of memory and with 2.5GB reserved for SIP server, the server could support 43 000 simultaneous TLS connections - consumed energy 209W
  • 80 000 permanent TCP connections, the SIP server could still handle at least 1000 requests per second and a connection arrival rate of 1000 new connections per second, done for 20 000 new connections. CPU load generated by the SIP server was from 6% to 8%.
I added a new section to the draft notes to list the enhancements done for the latest stable release (v3.1.x) that contribute to performance improvements, like asynchronous TLS, fine tuning of memory for TLS connections and raw UDP sockets.