The scope of this tutorial is to show how you can use Kamailio (former OpenSER) and FreeSWITCH to build a complete SIP/VoIP platform for large number of subscribers.
Kamailio is an open source SIP server, forkedfrom SIP Express Router (SER) in 2005 under the name OpenSER. In July 2008, OpenSER was renamed to Kamailio because of trademark issues. Starting with November 2008, Kamailio and SER teams restarted development collaboration, resulting in version 3.0.0 being the first that allow to run Kamailio and SER modules (extensions) in same SIP server instance - practically it is the same source code, thedifferences are the database structure used to store SIP user profiles and default enabled modules. The latest stable release is 3.1.0, out on October 6, 2010.
One of outstanding features of Kamailio is ability of hosting large number of active users in a single instance (depending of hardware it can be 100 000+). Long development life ensures the stability required in real-timetele-communications and a broad set of features in handling SIP signaling.
FreeSWITCH is an open source multi-protocol softswitch, supporting SIP as well. It is a very attractive project from features and extensibility point of view. Its media processing capabilities makes FreeSWITCH a perfect fit for providing media services to Kamailio based platforms.
Any Kamailio version 3.1.x can be used (right now lastreleased is 3.1.0, v3.1.1 is planed for release in few days). For FreeSWITCH I used the development version from GIT after release 1.0.6, but before any other official release (no 1.0.7 or what is going to be next).
Following services are handled in the scenario built within document:
* user authentication
* user registration
* user location
* instant messaging and presence
* SBC - this can be used for topology hiding, transcoding, prepaid or playing audio messages within calls
* other media services (announcement, ivr, a.s.o)
Local users have 3 digit IDs (we will use users 101 102, and 103 for testing). Voice box ID is the same as user ID. Extensionsfor media services start with 4.
Kamailio and FreeSWITCH are installed on the same physical server (ip 192.168.178.23), using different ports:
* kamailio: port 5060
* freeswitch: port 5090 for internal profile and 5092 for external profile
This is the second release of this tutorial, first one was using previous major stable release of Kamailio, v3.0.x. You can read it at:* Kamailio 3.0.x and FreeSWITCH 1.0.6+dev for Media Services
Besides upgrade to Kamailio v3.1.0, this version of tutorial includes new features:
* in Kamailio
* 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 FreeSwitchonly 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
* after authentication, calls are routed toFreeSwitch and then back to Kamailio
* in Freeswitch
* calls coming with dialed extension starting with kb- are routed back to Kamailio. If the calls fail, they are sent to voicemail box
Call authentication is handled by Kamailio. When a new call arrives and it is authenticated, then:
* if the destination user is not online, it is sent to FreeSwitch directly to...