Here we are, more than two months and a half since v3.0.0 was released. Day by day the number of v3.0.x adoptions has increased substantially.
People looked at the work done during last year to integrate Kamailio (OpenSER) and SIP Express Router (SER), which was no doubt a visible big effort, and analyzed as well the list of new features. All together, plus propaganda of “some frienzi” saying that the SIP Router project will never succeed, kept some people a bit reticent to go ahead and deploy 3.0.x.
So from time to time, on projects’ public forums, new people ask about stability of 3.0.x. With this post I’ll try to demystify it and shed some light why 3.0.x is very stable.
After releasing Kamailio 1.5.0 in March 2009, we started the work to bring Kamailio and SER using same source code tree. It was considered a huge task by many, but with the proper team it was feasible and finished in October 2009 (a bit more than 7 months). Add to this brand new features that were developed (e.g., memcache connector, number portability, topology hiding, …).
What you must understand here is that everything was carefully planned and coordinated. SIP Router project is not one man show, but big companies in communication world are involved, where project and product management follow standard procedures.
We started with a face to face meeting, in Karlsruhe, Germany, November 4, 2008. While preparing the 1.5 release, we sorted out how the integration is going to be done, the right people were set to handle the work to main components.
- Andrei Pelinescu-Onciul – core integration – the one that started SIP Express Router (SER) project back in 2001, who developed the most of the core code (even in various forks, he still owns the most of the code after 5 years)
- Jan Janak – DB API integration – core developer of SER, the designer and implementer of DB API v1 (used in ser 0.9.x, openser, kamailio and other forks) and DB API v2 (used in ser 2.0.0+ and sip router)
- Daniel-Constantin Mierla – Kamailio (OpenSER) specific extensions (e.g., pseudo-variables, …) – co-founder Kamailio (OpenSER)
Moreover, it was not ad-hoc pushing of code to new repository. We analyzed component by component and selected the best, then we added what was missing from the other project, caring to be properly integrated. Nothing from scratch, so the code is very mature. Note that in 3.0.0, as opposite to 1.5.x or older, there is support for internal libraries, so we made use of that, the core of the application was slightly touched, missing parts from the other project got mostly as libraries.
The decision was to use the core of SIP Express Router (SER) and it was not a tough one:
- most of core code even in Kamailio (OpenSER) still belonged to Andrei Pelinescu-Onciul (memory manager, locking system, config file interpreter, etc…)
- during 2005 and 2008, Kamailio (OpenSER) focused to add new extensions rather than improve the core. Just few touches were done to core, e.g., timers, dns, tls in top of SER 0.9.x tcp, …
- SER did an overhaul of the core starting with 2006, a new architecture of transport layers, e.g., sctp and tcp (supporting as well asynchronous tcp), tls support via module (no more need to recompile everything), better timers, memory mangers, locking systems, internal dns caching for failover and fast timeout to avoid blocking, global parameters value reload at runtime, and the list can continue
TM (transaction management) module was selected from SER being tight related to core. The other modules were updated to work with the new core, apart of three developers that left completely with the fork in 2008, the rest are still involved in this project, Juha Heinanen (developer of radius modules, lcr, domain, …), Klaus Darilion (enum, tls and security, …), Henning Westerholt (carrierroute, number portability, cfg utils, …), Elena-Ramona Modroiu (xlog, pdt, htable, …), Andreas Granig (path), Jesus Rodriguez and Elias Baixas (seas).
From Kamailio (OpenSER) point of view, we got back the developers of some modules that were inherited in OpenSER from SER when forked in 2005: Miklos Tirpak (permissions, tm), Jiri Kuthan (acc, tm), Jan Janak (db modules, registrar, …), Nils Olhmeier (options, sanity) and Andrei Pelinescu-Onciul (tm, …).
Shortly, the team of SIP Router has real knowledge and the longest experience you can find out there regarding the SIP Express Router and forked projects.
SIP Express Router (SER) was present at most of the SIPit events. Nils Olhmeier (developer of sipsak and sip forum testing suite) is well known for being the second most frequent participant at SIPit. That happened last year as well and it is one important source of stability for core and tm (as inherited from SER).
Several companies behind the developers of SIP Router project offer telecomunication services to millions of subscribers, routing billions of minutes per month. Others are in top ten of telco-grade vendors market, where one sold box must run seamless for years (of course, the price it is what it is). But none of these would be possible without large internal teams for testing.
In addition, the testing period for 3.0.0 was extended, longer than usual, spanning over 3 months. And it was not simple lab testing done within our group of open source project developers. We deployed on live systems.
voipuser.org and iptel.org are offering free service for VoIP calls during the past 8 years. They are tight related to Kamailio (OpenSER) and SIP Express Router (SER) projects.
voipuser.org has over 40 000 registered users and a good part of them very active, the incoming traffic being in the range of 20-30 SIP requests per second. This is real traffic in a open and free service, therefore imagine all kind of misconfigured or broken SIP phones connected – it is what I call testing, face the wild world.
Now, if you think that voipuser.org runs most of the modules (authentication, accounting, authorization, nat traversal, presence, …) and we did it with 3.0.0 code about 2 months before release, then you understand now why such stability is there.
As a matter of fact, no critical bug was reported for 3.0.x since its release, but in meanwhile we had crashes reported for openser 1.3.x (this does not even have the name kamailio, it is 2 years old, before trademark issue that made openser to be renamed to kamailio).
- no doubt, SIP Router Project succeeded, Kamailio and SER are the same source code tree now, the differences come only in default config file and value of parameters
- the results proved excellent and coordinated team work, showed a great bag of knowledge and strong development group
- we work with facts, not with big mouths – using 3.0.x as SIP server ensures it does not crash every odd and even second like other forks
- there are big companies directly involved in the project, it is not one man show
- this SIP server project already offers support for asynchronous processing of SIP messages, asynchronous TCP, fast DNS and many features other similar projects can just dream at
- offering a solid foundation right now, future releases will ensure to you continuity, stability and flexibility in building new communication services based on SIP
- the architecture of the application was adapted to the new needs in SIP, to be able to handle large amount of traffic via TCP, TLS and SCTP for presence, instant messaging, secure and next generation communication services