Kamailio Advanced Training
Click here for more details!

Learn how to build RTC services with Kamailio!

Friday, December 31, 2010

Happy New Year!

Looking back to 2010, it was an amazing year Kamailio project - two major releases v3.0.x and v3.1.x, lot of new features, all in top of a better and more scalable core we have now after the integration of Kamailio with SER.

Just to mention few here: asynchronous TCP and TLS, embedded Lua, XCAP server, HTTP server, pre-processor directives, full SCTP implementation with multi-homing, geoip API, asynchronous message queues, over 20 new modules -- for sake of completion, here are the links with the announcements:

http://www.kamailio.org/w/kamailio-openser-v3.0.0-release-notes/
http://www.kamailio.org/w/kamailio-openser-v3.1.0-release-notes/

As for 2011, we will continue to deliver new features, but maintain as well our line of scalable, secure and rock solid SIP server. New projects related to Kamailio already announced their launch, participation to VoIP and Open Source events already booked, new thinks are baked and getting ready to launch soon -- 2011 is going to be for sure fascinating as well as challenging.

Thanks for your support for the project! I wish you a great 2011 in personal life and business, enjoy tonight party!

Happy New Year!!!

Friday, December 24, 2010

Merry Christmas!

I could safety say that 2010 was the greatest year by achievements in the history of Kamailio and SER SIP proxy server projects so far. It will not be short to summarize it, so I will do a separate post for that.

Now I just wast to thank everyone making that possible and wish a Merry Christmas to all my friends, Asipto customers, developers and users of Kamailio and SER!

Great winter holidays to all Kamailians and SERians!!!

Monday, December 13, 2010

SIP:Provider CE

Andreas Graning of Sipwise announced today the release of sip:provider community edition – home page link:

It is a open-source SIP based Class5 VoIP soft-switch leveraging the capabilities of Kamailio, SEMS and Asterisk, combined with custom components in order to provide consistent and easy-to-use provisioning, billing and configuration maintenance.

SEMS 1.3.1 Released

SIP Express Media Server (SEMS) released 1.3.1 with several bug fixes and improvements since 1.3.0, among them:
- fixed CMake build scripts
- fix for architectures w/o atomic built-in functions
- add lost accept_fr_without_totag sample cfg option
- fixed missing CRLF in transfer header

The tarball can be downloaded from:
http://ftp.iptel.org/pub/sems/sems-1.3.1.tar.gz

SEMS is a lightweight media server that can be used along with Kamailio to provide back-to-back user agent functionality, voicemail, IVR, audio conferencing, a.s.o.

Thursday, December 2, 2010

Kamailio v3.1.1 Released

Kamailio v3.1.1 is out – a minor release including fixes in code and documentation since v3.1.0 – configuration file and database compatibility is preserved.

Kamailio (OpenSER) 3.1.1 is based on the latest version of GIT branch 3.1, therefore those running 3.1.0 are advised to upgrade — there is no change required to be done to configuration file or database.

Resources for Kamailio version 3.1.1

Source tarballs are available at:

http://www.kamailio.org/pub/kamailio/3.1.1/src/

Detailed changelog:

http://www.kamailio.org/pub/kamailio/3.1.1/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:
http://www.kamailio.org/pub/kamailio/3.1.1/

Modules’ documentation:

http://www.kamailio.org/docs/modules/3.1.x/

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

http://www.kamailio.org/w/kamailio-openser-v3.1.0-release-notes/

Tuesday, November 30, 2010

FreeSwitch as Media Server and SBC for Kamailio 3.1

There is a new version of step by step tutorial about using FreeSWITCH and Kamailio together for large VoIP platforms.

Besides upgrade to use latest Kamailio major stable release, v3.1.0, there are couple of new features added in the architecture of the VoIP platform:

  • along with providing media services (voicemail, conferencing, a.s.o.), FreeSwitch is used now also as SBC for topology hiding and media relay (this helps for transconding needs, playing audio messages during the early session or NAT traversal)
  • Kamailio config has added features to detect DoS/DDoS and scanning attacks, secure SIP communication over TLS, IP authentication and a bunch of neat things that help for an easier maintenance and update of parameters such as database connectivity details, local IPs, etc.

The link to tutorial is:

Sunday, November 28, 2010

Asterisk 1.6 and Kamailio 3.1 Realtime Integration Tutorial

A new version of the tutorial about Asterisk and Kamailio realtime integration is out, upgraded to use the latest stable release of Kamailio, v3.1.0. You can find it at:
Besides making it work for v3.1.x, the Kamailio config file has some new features included:
  • IP authentication - can be enabled via define WITH_IPAUTH
  • TLS support - can be enabled via define WITH_TLS - TLS to UDP translation and vice-versa is done automatically by Kamailio in case you configure Asterisk on UDP
  • detection of DoS attacks - can be enabled via define WITH_ANTIFLOOD - banning automatically traffic from attacker IP addresses for a specific time interval
  • restructuring of configuration file for better modularity and highlighting of functionalities such as registrar, location server, within-dialog request routing

Thursday, November 18, 2010

Experiences from 18 Hours of SIP Scanning Attack

During the testing period of Kamailio 3.1.0, while running it at voipuser.org, I had the chance to watch live and analyze a SIP scanning attack.

Yesterday I noticed another one by looking at Siremis 2.0 charts, therefore I wrote an article with some hints about what you can use to protect your SIP services within Kamailio configuration file.

You can read it at:

Wednesday, November 17, 2010

SIP Routing Logic in Lua with Kamailio

A tutorial showing a complex SIP routing logic implemented with latest Kamailio development version has been made available at:

Practically shows how to use Lua scripting language instead of Kamailio’s native configuration language to route SIP requests, taking care of of services such as authentication, registration or user location.

While is not intended as a replacement for Kamailio’s configuration language, Lua, by its nature of small and fast embedded language, is a perfect choice for enhancing SIP routing capabilities. It has dozens of extensions that you can use, including libraries to connect to social networks such as Twitter, allowing you to send notifications from your SIP server configuration.

Saturday, November 6, 2010

Best of New in Kamailio 3.1.0 - #11: Asynchronous message queues in config file

One of the main problems while trying to interact with other systems direct from your SIP server was that most of the time such operations are done in blocking mode.

Whether you want to do an http query, send an email, write to a storage system for a specific SIP event, that uses the time and resources of your SIP routing engine and you cannot afford blocking all application processes that handle SIP traffic.

There are a lot of reason you would like to do such operations, for example:
  • monitoring activity - notify when the rate of incoming SIP requests exceed a threshold - alert on flood
  • real time notifications to twitter, facebook or classic email for events such as missed calls or a particular user becomes online
  • logging purposes - write details about various situations to a storage system
Kamailio v3.1.0 pushed out a new module mqueue, which is message queue system that can be used directly in the configuration file. You can define as many queues as you want, read and write operations are safe even when done from different application processes. You can write a message from a process and read in another one.

For example, a typical usage is to start dedicated processes to consume messages from the queues. You can do that in configu using rtimer module - start separate processes that execute periodically a route block from config, where you process messages from queues.

Next is an example of usage:
  • the sip worker process writes in queue "alert" when pike modules triggers alert due to high traffic rate from same IP
  • process checks every 5 seconds checks if there are message in queue 'alert' and writes to syslog all the messages in the queue
modparam("rtimer", "timer",  "name=ta;interval=5;mode=1;")
modparam("rtimer", "exec", "timer=ta;route=QMALERT")
modparam("mqueue", "mqueue", "name=alert")

route {
...
if (!pike_check_req())
{
mq_add("alert", "$si:$sp", "pike flood detected [$rm] $fu => $ru");
exit;
}
...
}

route[QMALERT] {
while(mq_fetch("alert"))
{
xlog("L_ALERT","ALERT: src [$mqk(alert)] - $mqv(alert)\n");
}
}
Here you find the online documentation for mqueue module:

Tuesday, November 2, 2010

Kamailio Advanced Training, Jan 24-26, 2011, Irvine, CA, USA

Next US and North America edition of Kamailio Advanced Training will take place in Irvine, CA, USA, Jan 24-26, 2011.

Last stable series of Kamailio SIP Server, the 3.1.x (Oct 06, 2010, see release notes), continues the work done within SIP-Router.org project. Among brand new features in v3.1.0, starting with the previous 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 in collaboration with Flowroute 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 at:

http://www.asipto.com/index.php/kamailio-advanced-training-usa/

Monday, November 1, 2010

Siremis v2.0.0 Released

Siremis v2.0.0 is out – the web management interface for Kamailio (Openser) v3.1.0 and SIP Express Router (SER).

This is a major release, with countless improvements and new features since v1.x series, among them:

  • major re-factoring of web interface
  • better accessibility
  • simplified menu structure
  • completely new look
  • dashboard with the map of all available tools
  • developed on top of Cubi and PHPOpenBiz v2.4 frameworks
  • web installation wizard
  • added new modules: xcap, dialog, new lcr
  • usage of separate database for siremis itself
  • management of users that can login to siremis
  • management of menu can be done from web interface
  • building Apache conf and htaccess file can be done by Makefie
  • charts to monitor location transport layers

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, next locations are:

Friday, October 29, 2010

Kamailio Advanced Training, Nov 22-25, 2010, Berlin

Next Kamailio Advanced Training will take place in Berlin, Germany, Nov 22-25, 2010.

Last stable series is 3.1.x (Oct 06, 2010, see release notes), continues the work done within SIP-Router.org project. Among brand new features in v3.1.0, starting with the previous 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, co-founder and core developer of Kamailio SIP Server project.

Read more details about the class and registration at:

Thursday, October 28, 2010

Kamailio Business Directory Launched

Today was announced the launch of Kamailio Business Directory.

This is a web page hosted by the Kamailio project site that will list companies and individuals offering products, services or solutions based on Kamailio or SER. It is an open directory that tries to enable more visibility to the business market around the project. If you want to apply to be listed, please follow the instructions at:

We have already several companies listed, couple of them to still in review process, therefore check it again soon, the directory is available at:

Wednesday, October 27, 2010

Asterisk, Kamailio, Openfire and Social Media Integration

Courtesy of Kelvin Chua, CTO of NEXTIX, I received the slides presented at Astricon 2010 to the session “Asterisk, Kamailio, Openfire and Social Media Integration”.

You can download the slides from:

The presentations goes through usage of open source components to build a social media integration system. Here is the abstract:

“The excitement does not end with combining the flexibility of asterisk, the capacity handling of kamailio and the chattiness of openfire, we’ve been seeing this for the past astricons. The real deal is how to use the three powerhouse in a more socially relevant context. This session will introduce you to another way of creating your own facebook or myspace. It aims to discuss what we as asterisk users/developers wanted to see in a social platform and yet nobody did it on facebook. It will discuss a myriad of apps involved with social platforms like iphone/android apps as well as a list of hardware we don’t see integrated with current social websites. it will also touch on rare topics like working on video mixers (MCU) on asterisk using h.264 and how to use this on the platform.”

NextIX is an innovation company that specializes in universally available information and communication technology solutions for the consumer, SME, enterprise and government.

Monday, October 25, 2010

Debian Based Kamailio Distribution

CIITIX has announced CIITIX VoIP 1.0 – a Debian Lenny custom Linux distribution that includes a pre-configured Kamailio v3.1.0. Among enabled features are:

  • user authentication against MySQL
  • NAT traversal
  • accounting to MySQL
  • SIP SIMPLE presence
  • embedded XCAP server
  • DoS detection and protection

You can download the ISO image and read more about at:

It is a good and easy way for people to try a Kamailio based VoIP system on a physical server or a virtual machine.

Wednesday, October 20, 2010

Kamailio v3.0.4 Released

Kamailio v3.0.4 is out – a minor release including fixes in code and documentation since v3.0.3 – configuration file and database compatibility is preserved.

Kamailio (OpenSER) 3.0.4 is based on the latest version of GIT branch 3.0, therefore those running 3.0.0, 3.0.1, 3.0.2 or 3.0.3 are advised to upgrade — there is no change required to be done to configuration file or database.

Note that latest stable version of the project is Kamailio 3.1.0, released on October 06, 2010. It is highly recommended to upgrade directly to latest stable release to benefit of most actual fixes and features. More details about 3.1.0 at:

Resources for Kamailio version 3.0.4

Source tarballs are available at:

http://www.kamailio.org/pub/kamailio/3.0.4/src/

Detailed changelog:

http://www.kamailio.org/pub/kamailio/3.0.4/ChangeLog

Download via GIT:

# git clone –depth 1 git://git.sip-router.org/sip-router kamailio
# cd kamailio
# git checkout -b kamailio_3.0 origin/kamailio_3.0

Binaries and packages will be uploaded at:

http://www.kamailio.org/pub/kamailio/3.0.4/

Modules’ documentation:

http://www.kamailio.org/docs/modules/3.0.x/

What is new in 3.0.x release series is summarized in the announcement of v3.0.0:

http://www.kamailio.org/w/kamailio-openser-v3.0.0-release-notes/

Kamailio v1.5.5 Released

Kamailio v1.5.5, a new release in 1.5 series, is out. Kamailio (OpenSER) 1.5.5 is based on the latest version of branch 1.5, including many fixes in code and documentation, therefore those running 1.5.0, 1.5.1, 1.5.2, 1.5.3 or 1.5.4 are advised to upgrade.

Note that latest stable version of the project is Kamailio 3.1.0, released on October 06, 2010. It is highly recommended to upgrade directly to latest stable release to benefit of most actual fixes and features. More details about 3.1.0 at:

http://www.kamailio.org/w/kamailio-openser-v3.1.0-release-notes

This release marks the end of official maintenance for branch 1.5 by development team. That means no new packaging will be done for 1.5.x, but fixes can be added in SVN branch 1.5 repository. The development team officially maintain last two stable branches, these are now 3.0.x and 3.1.x.

Source tarballs are available at:

http://www.kamailio.org/pub/kamailio/1.5.5/src/

Detailed changelog:

http://www.kamailio.org/pub/kamailio/1.5.5/ChangeLog

Download via SVN:

svn co https://openser.svn.sourceforge.net/svnroot/openser/branches/1.5 kamailio

Tag for this release can be browsed at:

http://openser.svn.sourceforge.net/viewvc/openser/tags/1.5.5/

Project site at SourceForge.net (still using old name):

http://sourceforge.net/projects/openser/

Binaries and packages will be uploaded at:

http://www.kamailio.org/pub/kamailio/1.5.5/

Modules’ documentation:

http://www.kamailio.org/docs/modules/1.5.x/

What is new in 1.5.x release series is summarized in the announcement of v1.5.0:

http://www.kamailio.org/w/kamailio-openser-v1.5.0-release-notes


Note: Kamailio is the new name of OpenSER project. First version under Kamailio name was 1.4.0. Older versions will continue to use OpenSER name.

Thursday, October 14, 2010

Best of New in Kamailio 3.1.0 - #10: Registration to Remote SIP Servers

Many DID providers require to register to their servers in order to route the calls to your server. While the recommended way is to get a peering agreement where all calls to your block of DIDs are sent to the IP address of your SIP server, in some cases, like SOHO or SMB, you usually register to some VoIP services that offer free DIDs. Then is hard to get a peering agreement just for one or two DIDs.

Normally you used such providers only for incoming calls, for outgoing you have a least cost routing system selecting the best route from many termination providers.

Kamailio 3.1.0 introduces a handy way to configure your SIP proxy to register to other SIP servers for incoming calls. You have to load uac module and add records to uacreg table. The table stores following attributes:
  • l_uuid - local unique user id, e.g.,: 12345678
  • l_username - local user name, e.g.,: daniel
  • l_domain - local domain, e.g.,: mysipserver.com
  • r_username - remote username, e.g.,: daniel123
  • r_domain - remote domain, e.g.,: sipprovider.com
  • realm - remote relam, e.g.,: sipprovider.com
  • auth_username - authentication username, e.g.,: daniel123
  • auth_password - authentication password, e.g.,: xxxxxx
  • auth_proxy - SIP address of authentication proxy, e.g.,: sip:sipprovider.com
The module takes care of sending REGISTER and refresh registrations before they expire.

When calls come in, you have to run uac_reg_lookup() that will detect if the call is coming from a remote SIP provider and can change the R-URI to local username@domain. Afterwards you can run location lookup.
if(uac_reg_lookup("$rU", "$ru")) {
xlog("request from a remote SIP provider [$ou => $ru]\n");

}
lookup("location");
The documentation for uac module is available at:

Tuesday, October 12, 2010

Apt Deb Repositories for v3.1.0

Courtesy of Jon Bonilla, Kamailio's Debian APT repository is offering now the packages for version 3.1.0 as well as nightly builds from stable branch 3.1.

So, if you want to get the latest version of branch 3.1, set your apt sources to:

deb http://deb.kamailio.org/kamailio31-nightly lenny main 

Supported OSes are Debian Lenny, Squeeze and Ubuntu Lucid.

Check for more details the wiki page:

Monday, October 11, 2010

Best of New in Kamailio 3.1.0 - #9: Load Balancer



SIP load balancer extension - dispatcher module - comes in Kamailio v3.1.0 with a bunch of new features:
  • weight-based load balancing - you can assign weights to addresses in a destination group and Kamailio will take care to distribute calls accordingly. For example, if you want to distribute 80% of calls to one server and the rest to another one, just set weight=80 to first address and weight=20 to second one
2 sip:192.168.178.20:5080 0 0 weight=80
2 sip:192.168.178.28:5082 0 0 weight=20
  • call-load-based dispatching - the module can track active calls and select least loaded destination to distribute the traffic. Note that the module includes a light-weight call tracing system which works even in transaction stateless mode. There is no dependency on heavy modules such as dialog, making it suitable for embedded systems as well.
  • configurable list of valid codes for SIP ping replies - the module has the ability to send OPTIONS requests to addresses in destination sets in order to discover whether they are active or not. In some particular cases, the reply code could be different than 200 (for example the system is asking for authentication), but still the system should be able to handle new calls. With module parameter ds_ping_reply_codes you can define a list of reply codes or reply code classes that are valid to consider that destination is active. For example - all 2XX and 3XX replies, together with 403 and 488:
modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=403;code=488;class=3")

The value of this parameter can be changed at runtime without restartion Kamailio.

Summarizing, with the new weight and call load dispatching, the module offers now a large range of algorithms to select destination, from old ones I would mention: round-robin, priority level, random, hashing of SIP message attributes. you can hardly find a competitor to beat the performances and features of dispatcher module for SIP load balancing.

You can browse module's documentation online at:

Thursday, October 7, 2010

Best of New in Kamailio 3.1.0 - #8: Configuration File

Kamailio v3.1.0 is shipped with a refurbished configuration file. It has a new structure to reflect better SIP server functionalities such as:
  • SIP location server
  • SIP registrar server
  • SIP presence server
  • NAT traversal management
  • PSTN routing
  • SIP message format sanity checks
  • routing within-dialog SIP requests
Several values were replaced by defines making easier to maintain and understand the logic of configuration file:
  • value of db_url parameters is set by DBURL define - if you change the access to database server you have to update a single value
  • multi-domain parameter value
  • used flags (for accounting, missed calls or NAT traversal) are also defined values, using more meaningful ID name
Couple of new features are included in the configuration file and can be easily enabled or disabled by defining or un-defining specific IDs:
  • TLS support - controlled by #!define WITH_TLS
  • multi-domain support - controlled by #!define WITH_MULTIDOMAIN
  • flood detection and protection - controlled by #!define WITH_ANTIFLOOD
  • database aliases lookup - controlled by #!define WITH_ALIASDB
  • source IP authentication - controlled by #!define WITH_IPAUTH
  • XMLRPC control interface -controlled by #!define WITH_XMLRPC
Have a look at configuration file (located in /etc/kamailio/kamailio.cfg or /usr/local/etc/kamailio/kamailio.cfg) and you will be surprised to discover how easy is now to manage it and turn on/off features. Also, you can browse it online on our GIT repository.

Wednesday, October 6, 2010

Kamailio v3.1.0 Released

Kamailio (OpenSER) v3.1.0 is out – major release with impressing number of new features and improvements.

On October 06, 2010, Kamailio (OpenSER) 3.1.0 has been released – this release is a result of more than 8 months of development from the teams of Kamailio (OpenSER) and SIP Express Router (SER) projects. Backed up by a solid development group, we are proud to announce that this release brings a large set of features, many for first time on the SIP server market, such as asynchronous TLS, UDP raw sockets, embedded HTTP and XCAP servers, embedded Lua, configuration file debugger. All together, there are over 15 new modules and countless improvements to old components.

Since last major release (version 3.0.0, which was out in January 10, 2010), the two SIP servers, Kamailio and SER, are practically the same application, the name making the difference regarding the database structure and the extensions used for certain features, such as user database based authentication or location service. Therefore another development direction was towards smooth integration of Kamailio and SER extensions, previously duplicated modules such as auth, sl, ratelimit or sms were merged during this development cycle.

Continue reading the release notes at:

Tuesday, October 5, 2010

Best of New in Kamailio 3.1.0 - ToC

Kamailio 3.1.0 - a new major release of the open source SIP server - is scheduled for October 6, 2010. The amount of new feature is astonishing, it is the outcome of 7 months development made by Kamailio and SER teams.

With blog series named "Best of New in Kamailio 3.1.0 ..." I try to detail some of most relevant new additions this release brings to light.

Here is the table of content:
Chapters will be added over the time and this page will be updated with the links to specific posts. Check it from time to time to see its new content...

Monday, October 4, 2010

Best of New in Kamailio 3.1.0 - #7: Pre-processor Directives

Previous major version, 3.0.0, introduced for first time configuration file pre-processor directives that allowed to include files, define IDs and test their definition.

It was one of the most appreciated additions in 3.0.0, allowing to structure better the configuration file, to enable or disable features with one single line change.

Kamailio v3.1.0 added new features to these pre-processor directives:
  • defined IDs can take values, being either strings, integer or even statements
  • defined IDs with values are replaced across configuration file
  • new subst directive that does perl-like substitutions inside string values within configuration file
For example, the default configuration file for v3.1.0 defines DBURL token to be used for db_url parameters:
#!define DBURL "mysql://openser:openserrw@localhost/openser"
...
modparam("auth_db", "db_url", DBURL)
Changing access to database requires now to update a single place, the define of DBURL.

If you have pieces of config that repeat, you can define them and reuse:
#!define MYLOG xlog("[$Tf]: message $rm from $fu to $ru\n")
...
route {
...
MYLOG;
...
MYLOG;
...
}
...
The new subst allow replacement inside string values - example: replace DBPASSWD token with 123qaz in all strings inside configuration file:
#!subst "/DBPASSWD/123qaz/"
modparam("acc", "db_url", "mysql://user:DBPASSWD@localhost/db")
Note that defines and subst apply to all parts of configuration file, not matter are global parameters, module settings or routing blocks.

Another useful features related to config pre-processor directives is the ability to define IDs from command line using -A parameter:
kamailio -A MYVALUE=abc
You can see as well the core cookbook section for pre-processor directives:

Sunday, October 3, 2010

Best of New in Kamailio 3.1.0 - #6: Asynchronous TLS

Demand for secure communication increased lately. Caused or not by more and more attacks on VoIP systems lately, as well as better penetration of Instant Messaging and Presence in SIP networks, IP telephony providers look now seriously to offer full content protection as a service.

Kamailio 3.1.0 is the first version that can be truly used for large scale full encrypted SIP communication engine. OpenSER (up to Kamailio 1.5.x) had more like a beta implementation, it was added for prototyping purposes and never improved, maybe also a result of missing TLS clients at that time.

Previous version, Kamailio 3.0.x, had a completely re-architectured TLS implementation, inherited from SIP Express Router (SER) v2.1.0, which was designed for massive scalability. Still, the missing piece in 3.0.x was asynchronous support. This was added in 3.1.0.

Asynchronous TLS support in v3.1.0 stands out through its simplicity to configure. It is on by default, transparent to configuration file. You can disable it via TCP connection control parameter:

tcp_async=no

The tls module has a comprehensive documentation:
TLS being a layer on top of TCP, many tunings can be done via global TCP parameters:

Friday, October 1, 2010

Best of New in Kamailio 3.1.0 - #5: GeoIP API

When providing services world wilde, with a centralized signaling platform and distributed media relays for optimizing voice path, one of the most important decisions to make is which media relay to use for best quality.

One criterion is geographic location of caller and callee - discovering that at runtime is much better than static mapping considering the mobility of users.
Kamailio 3.1.0's new module named geoip provides to configuration file an easy way to discover the location of caller or callee based on IP address. You can query a Max Mind GeoIP database and receive location details such as country code, time zone, a.s.o.

Here is an example of how to detect if the caller and callee are located in same country:
if(lookup("location")) {
# callee is online
geoip_match("$si", "src");
geoip_match("$nh(d)", "dst");
if($gip(src=>cc)==$gip(dst=>cc)) {
xlog("caller and callee located in same country - code: $gip(src=>cc)\n");
}
}
Another beneficial result is to be able to drop traffic coming from specific countries that tried to attack your service or you don't have customers. This is very useful these days, in a time where spit and scanning attacks against VoIP server increases.

Of course, this is an alternative to firewall method, giving you the opportunity to monitor (e.g., write in SIP server logs) if there are attempts of sending calls from such countries. Also, you can count attempts from a specific country and block the country for a while, everything done dynamically in your configuration file.

Blocking all traffic from Canada would be like:
geoip_match("$si", "src");
if($gip(src=>cc)=="CA") {
xlog("SIP message from Canada (ip: $si) - drop it\n");
send_reply("403", "Forbidden");
exit;
}
GeoIP API is very easy to use, the module has one parameter to set the path to GeoIP database, then you can match any IP address (e.g., source IP, next hop IP, IP from Via, Contact or any other header) and store the results in as many containers as you want, then they can be used to compare any attribute between them or against config values.

The documentation of geoip module is available at:

Thursday, September 30, 2010

Best of New in Kamailio 3.1.0 - #4: Embedded XCAP Server

SIP SIMPLE extensions get slowly into IM & Presence market, however, they are more visible lately than few years ago. One of the key components in XCAP server - an XML storage engine that uses HTTP for transport.
Kamailio 3.1.0 is first open source SIP server that includes an embedded XCAP server - functionality provided by xcap_server module. That means a very tight integration with the SIMPLE Presence server offered by Kamailio for quite some time.

Although XCAP specs specify HTTP as transport protocol, the implementation in Kamailio can work fine with XCAP documents transferred with SIP (over TCP, TLS and even SCTP or UDP).

All these together make the implementation of a SIP SIMPLE server simpler than anytime before. You get a compact solution, within a single application. However, worth to mention that Kamailio can be used as a stand-alone XCAP server, with other SIP application servers.

There is a complete tutorial about how to deploy Kamailio with embedded XCAP server, using SIP Communicator as softphone. You will discover that the additions to default Kamailio config file are pretty minimal, straightforward and independent of SIP routing logic - see the tutorial at:
For further references, you can browse xcap_server module documentation:

Best of New in Kamailio 3.1.0 - #3: Embedded HTTP Server

There is no doubt that SIP and HTTP integration brings lot of benefits for servicing VoIP, IM and Presence.


Being able to request information directly from SIP server via HTTP, without the need to develop intermediate layers and APIs, opens the doors for tighter integration between web and realtime voice, im & presence.

Kamailio 3.1.0 introduces a new module, named xhttp, that extends its capabilities with the ability of handling HTTP requests.

Usage is straightforward, you have to load the module and define a special route called event_route[xhttp:request]. Every time an HTTP request is received, the actions in this event route are executed. You can authenticate the HTTP requests, using same username and passwords like for SIP accounts, being sure that only local subscribers can access HTTP resources exported by SIP server.

Next is a simple route that welcomes visitors over HTTP and prints their IP address and port:
event_route[xhttp:request] {
if (!www_authorize("kamailio.org", "subscriber"))
{
www_challenge("kamailio.org", "0");
exit;
}
xdbg("===== xhttp: request [$rv:$au] $rm => $hu\n");
$var(html) = "Welcome " + $au + "! Your address is [" + $si + ":" + $sp + "]";
xhttp_reply("200", "OK", "text/html", "$var(html)");
}
The above example intercepts all HTTP requests sent to SIP server, no matter the URL, but you can offer different replies based on HTTP URL - its value is available in config variable $hu:
switch ($hu) {
case "/mycontacts":
# send back the online contacts of authenticated user
...
break;
case "/myaccount":
# send back the contacts of authenticated user
...
break;
default:
# invalid resource - page not found
send_reply("404", "Page not found");
exit;
}
In HTTP event route, you can use any function exported by Kamailio core and modules, access its database and memory. Also, you can use embedded languages such as Lua or Perl to build the HTTP reply, having full language tools to construct rich HTML documents.

You can browse the documentation of xhttp module at:

Wednesday, September 29, 2010

Best of New in Kamailio 3.1.0 - #2: Embedded Lua

Lua is a small, fast and easy to embed programming language (http://www.lua.org). It is a good choice to implement the routing logic for complex requirements in a SIP Server.

A new module in 3.1.0, named app_lua, provides the functionality to execute Lua code and scripts in your configuration file.

The readme and the API are available at:

Lua language is small and fast, therefore fits very well in a sip proxy environment, it has a lot of extensions, so when you cannot do something with existing cfg functions, check Lua documentation. The interpreter is embedded in app_lua module, so it is executed within Kamailio context.

Inside the Lua scripts, you get access to SIP message and functions from Kamailio core and modules. I did a presentation at Amoocon 2010 showing a practical example: how to use Lua to send notifications to Twitter from your SIP server, see the slides at:
Here is an example of sending a SIP reply through Lua:
lua_dostring("sr.sl.send_reply(200, [[Lua says is ok]])");
This is execution of Lua code provided within the string parameter of lua_dostring(). Also, you can execute a Lua script by providing the path in the parameter of lua_dofile():
lua_dofile("/path/to/yourscript.lua"); 
Other options to run Lua code are provide by the new module, like to load a script at startup and execute functions from it at runtime.

Monday, September 27, 2010

Best of New in Kamailio 3.1.0 - #1: Interactive Config Debugger

Version 3.1.0 is just to be released, proposed date being October 6, 2010, that means about one week and a half since today. So it's time for the blog series to show what are the best of the new features to be introduced by this major release. Backed up by the biggest development team in the history of the project, 3.1.0 comes with a large set of new features, along with tighter integration between Kamailio (OpenSER) and SIP Express Router (SER) - the sip-router.org development project.

Let the show begin ...

One of the topics gathering complaints in the past was the complexity of debugging the config file. xlog module did the heavy work so far to help administrators understand how the processing of SIP traffic is going through the config file (I still consider xlog the best friend of config file writers, and it has some new goodies I will talk about them later).

Well, I guess this new features will make happy a lot of people: version 3.1.0 brings a new module, named debugger, providing an interactive configuration file debugger and printing of execution trace.

It allows to execute step by step the configuration file, discover which actions are involved in routing a particular SIP message and evaluate pseudo-variables in the context of that message. For those familiar with gdb tool, you can make a similar association. Tools like sercmd (command line tool, installed by default in the same location as Kamailio binary) or siremis (web management interface available at http://siremis.asipto.com) can be used to control the module with RPC, from same host or remotely.

How it works? You can tell Kamailio to stop before executing first line of config when a SIP message is received (also, you can set breakpoints at certain lines of your config). Then, via RPC commands, you can instruct to execute next action, evaluate a config variable or to execute all next actions. External applications such as sipsak or sipp can be used to inject a SIP message that is problematic, in order to debug it.

Let's look at an example: if calls set to you by a particular peering partner originating traffic from 10.0.0.10 are not routed properly, you can add at beginning for main routing route next lines:

if($si=="10.0.0.10")
dbg_breakpoint("1");

Then, when a call is sent from there, kamailio stops to execute the actions after dbg_breackpoint("1"); line. You connect with sercmd and see which kamailio process read it and issue dbg.pb next commands, walking step-by-step through the actions of config file.

You can see an example in the readme of debugger module, some snippets pasted next:
sercmd> dbg.bp show 6402
at bkp [/etc/kamailio/debugger.cfg:369] a=6 n=route

sercmd> dbg.bp next 6402
exec [/etc/kamailio/debugger.cfg:369] a=6 n=route

sercmd> dbg.bp eval 6402 $fu
$fu : t=str v=sip:test@kamailio.org
You will see each executed action for it and at each step you can print any config variable, helping to understand where is the problem in routing logic or content of SIP message.

Another useful feature of debugger module is printing execution trace. Unlike break-pointing, execution trace functionality does not stop the SIP message processing, but writes log messages with informative details about executed actions, such as config file name, line and action name. Here is an example:

9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=501 a=17 n=if
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=470 a=25 n=has_totag
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=386 a=17 n=if
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=379 a=26 n=is_method
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=386 a=25 n=t_check_trans
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=389 a=6 n=route
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=643 a=3 n=return
9(6285) ERROR: *** cfgtrace: c=[/etc/kamailio/debugger.cfg] l=393 a=26 n=remove_hf
This is quick and easy way to see the config actions execution path, from start to end.

Printing execution trace can be controlled at runtime, via RPC commands, without need to restart the SIP server, the admins being able to enable or disable it globally or per process.

Stay tuned for new posts of this series in the next days...

Tuesday, September 14, 2010

Siremis v1.0.1 Released

A new version of SIREMIS Web Management Interface for Kamailio (former OpenSER) and SIP Router is available as v1.0.1.

Siremis enables straightforward management of subscriber profiles, least cost routing and load balancing rules, communication at runtime with the SIP server, displays monitoring charts. You find detailed list of feature at:

http://siremis.asipto.com

v1.0.1 is a minor release, fixing issues discovered since releasing last version:

  • replaced deprecated PHP functions such as split() and ereg()
  • added missing column in LCR gateways
  • set default page to home.php instead of login.php
  • set default path to XMLRPC commands in configuration

Download and installation steps:

http://siremis.asipto.com/install/

Some screenshots specific for this version:
http://www.asipto.com/gallery/v/siremis/siremis_22.png.html
http://www.asipto.com/gallery/v/siremis/siremis_23.png.html
http://www.asipto.com/gallery/v/siremis/siremis_24.png.html

More screenshots:

http://www.asipto.com/gallery/v/siremis/

Demo site (it works on a database with random data, username: admin, password: admin):

http://siremis.asipto.com/demo/

Friday, September 3, 2010

A piece of history: 9 years SER

Today are 9 years since first source code commit of SIP Express Router (aka SER) happened. It started with following three commits reported by git-log:

git log --pretty=format:"%h%x09%an%x09%ad%x09%s" --reverse | head -3

512dcd9 Andrei Pelinescu-Onciul Mon Sep 3 21:27:11 2001 +0000 Initial revision
888ca09 Andrei Pelinescu-Onciul Tue Sep 4 01:41:39 2001 +0000 parser seems to work
e60a972 Andrei Pelinescu-Onciul Tue Sep 4 20:55:41 2001 +0000 First working release

Today, 3286 days later, it counts 14 200 commits only in development branch, estimated development cost over $8,000,000.

Some statistics about project evolution and development were made available on web site – click here to see them!

There are interesting facts about most productive time frames (i.e., hour, day, …), evolution of default configuration files, command line parameters, … IPv6 support is there since 2002, but no convenient public network to use it yet.

Enjoy and enhance the content as you have interesting aspects of history to add…

… and, VERY important, do not forget to start testing 3.1.0, we are in pre-release phase, there are a lot of new features you surely want on your production system:

http://sip-router.org/wiki/features/new-in-devel

Saturday, August 28, 2010

Cluecon 2010 Kamailio Presentations

I uploaded my presentation at Cluecon on the web site, link:
My one and a half day presence in Chicago was surprising good for kamailio and ser - people started to get the real value of the project and catch up with latest features.

Moreover, the first day had a lot of presentation with kamailio and ser (see agenda at: http://www.cluecon.com/schedule):
  • Phillip Zimmermann - did his demo with iptel.org sip service
  • Mahesh Paolini-Subramanya - a clould based system for telephony
  • Scott Burkett - back-end platform for web telephony
  • Robin Rodrigues - several nice examples using upcoming 3.1 addition: embedded http server
  • Irv Shapiro - ifbyphone platform - programmable telephony applications
  • I ended the list (the link above), no much left for me to say :-) , but I enjoyed chatting before a lot with folks in the breaks
Hopefully these presentations will be soon an event's site. I will try to publish more about each one, they were interesting use cases.

Tuesday, August 17, 2010

Testing phase for v3.1

The next major release for Kamailio (and SER), v3.1.0, is approaching. As of today, Aug 17, 2010, starts the testing phase. For about 1-1.5 months, the focus is on fixing bugs and tuning the new features added during the last development cycle.

Keep your eyes on following pages to learn how to upgrade from 3.0.x and know what is new in v3.1:

They are going to be updated to reflect properly next version.

Testing and feedback is very much appreciated, email us at:

sr-dev [at] lists.sip-router.org.

Wednesday, July 28, 2010

Two years Kamailio

On July 28, 2008, OpenSER project was renamed to Kamailio (email announcement), so here we are, two years later.

Being one of OpenSER co-founders and then leading Kamailio evolution after rename, I can say it was a hell of a time, with bad days in the beginning but fruitful and with happy end.

Soon after the fork, the developer that registered openser domain forked the project and redirected web site to its new toy (not to say he started (and is still) claiming that his new pet is openser -- well, check http://sourceforge.net/projects/openser/ - the OpenSER development portal hosted by SourceForge.net was created in May 2005 by myself, while the forked project hosted by same SourceForge.net is created in 2008, so no comment, you judge!).

Anyhow, so August 2008 found us in a complete mess. It was not only bad for our project, but a tough hit to Open Source telephony applications, the case being used by competition to suggest unreliability and high risk of using Open Source for major communication projects.

In such foggy time you cannot go in dirty fights, or at least is what I decided to do, I avoided answering stupid claims and statements -- would have been endless discussions, removing any kind of trust left.

Well, I did defend against some statements about members of Kamailio development team when were purely brainless attacks. As a matter of fact, the Kamailio development team was the real value.

OpenSER was at that time a good piece of software, could run for ages if you knew it to configure it properly. But the question was the future. With 5 out of 7 management people committed to continue with Kamailio, it was clear for me that it will succeed.

So, what to do in such time? How to go over a dirty fork? Calm down, focus on the future - even a kick in the back is a step forward - time will sort it out and reveal the truth.

Therefore we worked, worked worked - two years ago was a new beginning: new name (some didn't even like it then, changed opinion meanwhile), main web domain lost. What we achieved meanwhile? I would say not bad at all, see next:
The biggest thing for me was integration with SIP Express Router (SER) -- I was core developer of SER, involved from early days, until I joined efforts to create OpenSER (as a fork of SER). The two projects still shared lot of common code even after 3 years of different development paths, the target was still the same - flexible and rock solid SIP server. SER had lot of improvements to transport layers and performances, OpenSER had lot of extensions, therefore a combination of the two was natural and took us about 6 months to join the source code of the two projects.

Practically these days Kamailio and SER are the same application (it is same source code, hosted by http://sip-router.org) the difference is the database structure used to store phone profiles, routing info, a.s.o. This is possible by having many extensions for same purpose (e.g., user authentication). With the time, more extensions will be merged, for sake of easy development and maintenance.

At this time, Kamailio is a far better application than OpenSER 2008 - not based on cosmetic changes and buzz words, but real re-factoring where was needed. The devel team is very solid (we had three devel-dedicated face to face meetings since 2008) with broad experience (4 out of the 5 core developers of SER in 2002 are still active in project).

We know what we developed since 2001, we will continue to develop and offer the reference SIP server implementation out there - being it your choice of SER or Kamailio at this time.

Sunday, July 25, 2010

SL and AUTH modules merged

Finally I found the time to merge two important modules that existed in Kamailio (OpenSER) and SIP Express Router (SER):
  • sl - stateless reply functions
  • auth - common API for www digest authentication
Their importance is given by the usage from other modules. SL really required many other modules to be updated.

For both modules was not a simple code integration, but also addition of new features:
  • sl - ability to execute event_route[sl:filtered-ack] when an ACK to a SL reply is received
  • auth - refurbished pv_www_authenticate() and pv_proxy_authenticate()
For Kamailio (OpenSER) users, the new auth module brings many improvements in terms of security and performance, mainly related to one-time nonce and qop auth-int.

After this merge, several duplicated modules became easier to merge, targeting them before releasing 3.1.0. Stay tuned!

Thursday, July 22, 2010

GSoC2010 Update: Code in GIT repository

Happy to announce that our first participation to Google Summer of Code with Kamailio Project shows the results.

Marius-Ovidiu Bucur, our selected student, succeeded to blend properly his resources to take care of University exams, job and GSoC project.

He has just pushed the code for SIMPLE presence server for conference calls (RFC 4353 and RFC 4575) into public GIT repository, for now it resides in branch: mariusbucur/conference

It comes along with a testing suite, being the first implementation in an open source SIP server I am aware of, there are not many options of clients and media servers that can be used. However, this is how SIP Express Router (SER) and Kamailio (OpenSER) pushed forward many times SIP and VoIP market over the years -- bringing innovation, offering to others necessary framework to start implement by themselves new features or new services.

SIP is a client-server communication protocol, facing many times the chicken-egg problem (i.e., there is no client implementation supporting extension X because there is no server implementing X, which is not there because is no client...). We take pride of unlocking many such situations in the past (e.g., IPv6, TLS, SCTP).

In this particular case, the project started upon suggestion of our colleagues from SIP Communicator project, which has already implemented these specs from SIP client point of view. What is still missing is a media server (audio conference mixer) offering these features. Looking forward to Asterisk, FreeSwitch or SEMS.

Wednesday, July 21, 2010

Date of freezing for major release 3.1

After January 10 release of Kamailio 3.0, the first version that incorporates the two open SIP server project Kamailio (OpenSER) and SIP Express Router (SER) in one application, time has come to set the milestones for next major release: 3.1.

Date to freeze the code is set to two-three weeks from today. Then follows the testing period, usually one or one and a half month. All these result in release date for first part of autumn.

Benefiting from the work of a larger development team, over the last six months, the development branch introduced 9 brand new modules and important updates to core. Just to mention here:
  • interacting configuration file debugger
  • asynchronous TLS
  • raw UDP sockets
  • API for embedded Lua and Python
  • GeoIP API for configuration file
  • basic embedded HTTP and XCAP servers
You find more at:

Tuesday, July 6, 2010

Summary of Devel Meeting, Berlin 2010

Last Kamailio and SIP Express Router (SER) Developers’ Meeting took place in Berlin, June 8, 2010. Hosted by Fraunhofer FOKUS Institute, the event gathered 16 people, from core developers to users of the projects, as well as developers involved in related projects such as SEMS and OpenIMSCore.

Main topics discussed covered the evolution so far, new features in the development version, planning of next major release and future development.

A summary of the event was uploaded to wiki page:

Wednesday, June 16, 2010

RadioTux.de - Henning Westerholt talking about Kamailio


Kamailio Project was present at LinuxTag 2010 with a presentation by Henning Westerholt and a exhibition booth.

During the event, Henning was interviewed by RadioTux.de, here you can find the recording (German):

Tuesday, June 15, 2010

Presentation at ClueCon 2010

I will give will give a presentation about using Kamailio and FreeSWITCH together to build large unified communication platforms at ClueCon 2010. While the primary communication channel these days is voice, instant messaging and presence gain more users day by day.

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 event takes place in Chicago, IL, USA, during August 3-5, 2010.

See more details at:

Looking forward to meeting you there!

Monday, June 14, 2010

Five years OpenSER

Today, June 14, 2010, marks five years since OpenSER project was announced. The announcement was done with the release of version 0.9.4 - the development portal hosted by SourceForge.net being created several days before: http://sourceforge.net/projects/openser/.

It started as fork of SIP Express Router (SER) branch 0.9.x, aiming to build an Open Source project that relies on community and encourages contributions. Over the years, it succeeded to build a stable and very attractive SIP server.

In 2008, under some claims of trademark infringement from an US company, OpenSER was renamed to Kamailio. In 2009, Kamailio received Best of Open Source Networking Software Award (BOSSIE'09) by InfoWorld magazine.

Kamailio and SER teams started to work together again from November 2008. As of January 2010, Kamailio v3.0.0 includes all features provided by SIP Express Router (SER), based on a joint effort of the two teams done under development portal http://sip-router.org.

These days, the two applications share the same source code, the difference is the database structure used to store subscriber profiles and routing rules.

Next major release, version 3.1.0 is scheduled for September 2010, bringing lot of new features, many for first time implemented in a SIP server.

Meeting Kamailio Project during July and August

The summer was announced hot for our project. Starting with the SIPit26 in Stockholm during May, several events followed in a row:

The series of events related to project continue during the summer with:

Whether you participate or not to these events, we can meet in the area during dinner time and discuss about Kamailio and SIP Express Router, if you are interested then just drop an email to miconda [at] gmail.com.

Saturday, June 12, 2010

Debian and Ubuntu APT Repositories

Courtesy of Jon Bonilla and SIPdoc.net, latest Kamailio 3.0.x can be installed via apt package manager from repositories hosted by the project. You can find details specific for Debian Etch, Squeeze and Lenny, plus Ubuntu Lucid at:

http://www.kamailio.org/dokuwiki/doku.php/packages:debs

Being hosted and maintained by members of our development team, the repositories are updated frequently, giving instant access to latest stable snapshots. Enjoy!

Thursday, June 3, 2010

Kamailio Booth at LinuxTag 2010

The project has a booth at LinuxTag, Berlin, Germany, June 9-12, 2010.

Location is Hall 7.2, stand 106, near by StrongSwan project and Snom.

Come and meet some of us, we will be glad to chat about Kamailio, SIP Router, SEMS, SIP and VoIP in general. Depending on the day, you can meet at stand:

We will have a demo running latest version and nice flyers to show the capabilities of Kamailio based platforms.

Wednesday, June 2, 2010

Kamailio Presentation at LinuxTag 2010

Henning Westerholt will talk about Geographical Redundant VoIP Sytems with Kamailio, on Wednesday, June 9, 2010, 11:20am, at LinuxTag 2010, in Berlin, Germany.

The presentation is about designing and implementation of geographical redundant Voice over IP systems with the Kamailio SIP router. It goes through an overview about the 1&1 voice over IP backend, some performance requirements for carrier grade VoIP networks and real-world measurements.

Then are some key concepts for building a geographical redundant system are presented. This are for example partitioning of the user base and network load with different means like anycast IP and means of maintaining a shared database state for subscriber data and registration information. Finally some common problems in building bigger VoIP clusters and solutions approaches are discussed.

Tuesday, June 1, 2010

Saturday, May 29, 2010

Kamailio and Freeswitch Integration, Jun 2, 2010

On the 2nd of June, 2010, I will speak at FreeSWITCH Weekly Conference about integration of Kamailio and FreeSWITCH.




The draft of agenda is:

  • Goals of Kamailio, how it differentiates from FreeSWITCH and why using them together creates a very powerful framework to build large VoIP systems.
  • Kamailio for sip routing and FreeSWITCH as media server (conferencing, voicemail, IVR, announcements)
  • FreeSWITCH as a B2BUA for Kamailio (topology hiding, transcoding, call interrupt detection)
  • FreeSWITCH as prepaid engine for Kamailio
  • Load balancing FreeSWITCH servers with Kamailio
  • Q & A Session

You can find more details at:

Details to connect to audio conference (time: 1800 UTC / 1200 CST):
  • Dial: sip:888@conference.freeswitch.org
  • Dial: +1-919-386-9900
  • Click on this link
  • Skype call to: "skypiax5" - you'll be automatically connected (max 20 concurrent users).

Friday, May 28, 2010

Amoocon 2010: Kamailio - SIP Router

For the second year, Amoocon takes place in Rostock, Germany, June 4-6, 2010.

I have two presentation about Kamailio – SIP Router project:

First talk focuses on asynchronous processing capabilities of this SIP server and what is new in latest version:

  • asynchronous TCP
  • asynchronous SIP message processing
  • asynchronous message queues
  • asynchronous TLS
  • new features in 3.0.x and devel versions

The second talk goes through LUA API exported by this SIP server, which allow building new fancy SIP applications without messing with C coding or configuration file language.

More about what is new in upcoming 3.1.0 and LUA API:

If you participate to Amoocon event and want to meet, drop an email to miconda [at] gmail.com.

Thursday, May 27, 2010

Kamailio v3.0.2 Released

Kamailio v3.0.2 is out – a minor release including fixes in code and documentation since v3.0.1 – configuration file and database compatibility is preserved…

Kamailio (OpenSER) 3.0.2 is based on the latest version of GIT branch 3.0, therefore those running 3.0.0 or 3.0.1 are advised to upgrade — there is no change required to be done to configuration file or database.

Source tarballs are available at:

http://www.kamailio.org/pub/kamailio/3.0.2/src/

Detailed changelog:

http://www.kamailio.org/pub/kamailio/3.0.2/ChangeLog

Download via GIT:

# git clone –depth 1 git://git.sip-router.org/sip-router kamailio
# cd kamailio
# git checkout -b kamailio_3.0 origin/kamailio_3.0

Binaries and packages will be uploaded at:

http://www.kamailio.org/pub/kamailio/3.0.2/

Modules’ documentation:

http://www.kamailio.org/docs/modules/3.0.x/

What is new in 3.0.x release series is summarized in the announcement of v3.0.0:

http://www.kamailio.org/w/kamailio-openser-v3.0.0-release-notes/

If you are eager to see what’s up to next major release (v3.1.0), visit:

http://sip-router.org/wiki/features/new-in-devel

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. Source code for releases 3.0.0+ is hosted on GIT repository at http://sip-router.org. Older versions will continue to use OpenSER name. Project site and SVN repository on SourceForge.net still use the old name OpenSER.

Tuesday, May 11, 2010

SIP Router Devel Meeting, June 8, 2010, Berlin

The next face to face developer meeting of SIP Router Project (Kamailio (OpenSER) and SIP Express Router (SER)) will take place in Berlin, Germany, on June 8, 2010.

It is an open event, with no participation fee. However, registration is required via email at registration@lists.sip-router.org in order to dimension the meeting place logistics and send you location details. If you plan to attend, please send registration email as soon as possible, no later than June 3.

The meeting gives you the opportunity to meet developers, say your opinions about current state and future development, network with people using the project.

Following developers and community members announced so far the presence to this event:

Among topics to be discussed:

  • new features in development version
  • next steps in Kamailio – SER duplicated modules integration
  • next release roadmap – time lines and goals
  • project management and resources

Feel free to propose topics via email to sr-dev@lists.sip-router.org.

Note that the days before, Amoocon 2010 takes place in Rostock, Germany, and SIP Router project is present with two presentations about Asynchronous SIP Processing and Doing SIP Routing in Lua.

The days after the devel meeting, LinuxTag 2010 takes place in Berlin, where our project has a presentation about Distributed VoIP platforms and a stand for the entire duration of this event – 4 days – come and visit us at LinuxTag!

For USA, there is a plan to schedule a social networking event on June 22, tied to Advanced Training for Carriers – if you are interested to join the event in Miami, please send an email to registration@lists.sip-router.org.

Sunday, May 9, 2010

Testing at SIPit 26

The 26th SIP Interoperability Test event takes place in Kista (north of Stockholm), Sweden, May 17-21, 2010.

Kamailio – SIP Router Project will participate, part of project’s goals to provide a stable and compliant SIP server implementation.

If you want to meet there, schedule some tests together, contact me, Daniel-Constantin Mierla per email at: miconda [at] gmail.com.

There are lot of things which we are interested to test:

  • IPv6
  • TCP (asynchronous communication for massive TCP SIP traffic)
  • TLS secure communication
  • SCTP
  • SIMPLE instant messaging and presence
  • you named it, we should support it (no RTP handling though)

Saturday, May 8, 2010

Kamailio 3.0.x - DYK-10 - xml processing

XML Processing in config file

See also: Kamailio 3.0.x - DYK - Table of Content

SIMPLE Presence usage increases constantly over the past years, therefore the number of XML documents flowing around is bigger and bigger. The demand of routing this SIP traffic based on content is one of the reasons Kamailio 3.0.0 added new class of pseudo-variables in config file to help with XML processing:

If you get an XML document, say in a PUBLISH, like:
     <?xml version="1.0" encoding="UTF-8"?>
<presence xmlns="urn:ietf:params:xml:ns:pidf"
entity="pres:presentity@example.com">
<tuple id="efeef223">
<status>
<basic>open</basic>
</status>
<timestamp>2003-02-01T19:15:15Z</timestamp>
</tuple>
</presence>

to get the status, then you can do:
$xml(x=>doc) = $rb;
if($xml(x=>xpath:/presence/tuple/status/basic/text())=="open")
{
# specific handling for online status
...
}
You can change the content as well:
$xml(x=>xpath:/presence/tuple/timestamp) = "2010-05-09T11:25:25Z";
Practically you can do what any XPATH operation over the XML document.

Wednesday, May 5, 2010

SIP Communicator - amazing SIP softphone

I am not a big user of Java, being a C coder, but now you have it everywhere not matter you want it or not, tied to Open Office, Mac OS X or web browsers. However, these days makes sense to install Java just to run SIP Communicator (SC), it is an amazing features rich SIP softphone, besides the fact is open source. Also, since we talk about Java, is cross platform application, you can run it on Windows, Linux or Mac OS X.

At FOSDEM 2010 I got an update about latest version from its creator, Emil Ivov, yet again nice surprises. His talk at the event was about Skype-like conference calls and yes, it is something very useful. While being in a conference call via SIP, it is very often I have no idea who is speaking. I have to memorize and map to names the voice stamps in order to make a remark addressing by name to who is speaking.

Latest SIP Communicator brings audio levels indications for each participants -- it is able to host audio conferences, acting as mixer, furthermore nicely letting you know who is speaking and his/her voice volume, thus making easier to distinguish when many people speak at the same time - what skype had for long time. All together make SC a perfect solution for any kind of enterprises or residential users.

Here is a relevant screenshot:


See more screenshots here.

Based on this neat features, we started a joint project with SIP Express Media Server (SEMS) to implement similar audio mixer (in SEMS) and presence agent (in Kamailio) for centralized conferencing system -- all to be coded over summer within GSoC 2010 program.

SC, besides supporting SIP, can be used as client for other protocols such as XMPP/Jabber/GTalk, AIM/ICQ, MSN, Yahoo! Messenger, Bonjour, IRC, RSS.

Regarding SIP and real time communication, among features:
  • multiple SIP accounts
  • audio and video calling
  • instant messaging and presence
  • IPv4 and IPv6; UDP, TCP and TLS
  • zRTP and OTR encryption for instant messaging chats
  • call on hold, call transfer, ...
  • multiparty audio conferencing (conference mixer, 3 or more participants), with audio level indication
  • STUN, SIP INFO DTMF
  • desktop sharing
  • file transfer
  • internationalization - English, German, French, Japanese, Spanish, Italian, ...
You can watch the SIP Communicator presentation at FOSDEM 2010 on YouTube. The slides are available in PDF format here.

SIP Communicator is a very dynamic project, with many developers, one of the best choices out there if you need extensions. Sure it gets my recommendation for a SIP softphone to be used in daily manner. Read more about on project's site:

Moved: SIP Communicator - amazing SIP softphone

This post was published initially with a a typo in the URL. blogger.com does not offer any tool to change the URL after first time publish, therefore the post was moved to a new page.

Click here to get to the SIP Communicator post.

Btw, reading the help pages for posts URLs, I really find it ugly solution to publish first your post with the title including only the words you want in URL (which becomes permalink, forever) and then edit again the title to what you want as title. Com'on G!, you can do a bit better here!

Saturday, May 1, 2010

Kamailio 3.0.x - DYK-09 - cancel and invite

Access INVITE attributes while processing the CANCEL

See also: Kamailio 3.0.x - DYK - Table of Content

Another enhancements brought by Kamailio 3.0.0 is the possibility of accessing the attributes of INVITE while processing the CANCEL. By loading the tmx module, you can use in your config file the pseudo-variable $T_inv(pv).

Instead of returning the values of pseudo-variables bound to CANCEL, $T_inv(pv) will return the value of pseudo-variables bound to INVITE. For example:

$T_inv($si) returns the source IP of INVITE, therefore checking if the CANCEL comes from same IP address as INVITE is:
if (is_method("CANCEL"))
{
if (t_check_trans())
{
$var(ip) = $T_inv($si);
if($si != $var(ip))
{
send_reply("403", "CANCEL from a different IP than INVITE");
exit;
}
t_relay();
}
exit;
}