This is an old revision of the document!
This page is open for contributions, you must create an user account via registration form:
If you have a question suitable for FAQ and you don't know the answer, add it and set the answer to 'TBA', others can read it and give the right answer.
Kamailio is a SIP server, implementing the specifications from RFC3261. Its root functionality is routing any kind of SIP packets. On top of that, many conceptual features are implemented, see more at:
No, Kamailio is a flexible SIP proxy. Many people integrate Asterisk, FreeSWITCH, SEMS, or other products with Kamailio for a B2BUA.
At network layer, Kamailio supports both IPv4 and IPv6.
At transport layer, Kamailio support UDP, TCP, TLS and SCTP. Transmission can be done in asynchronous mode (configuration option), inclusive for TCP and TLS.
Kamailio can be used to bridge between any combinations of these protocols, e.g., receiving SIP packets on UDP over IPv4 and sending out on TLS over IPv6.
No, you must restart after you update the configuration file.
But note that many global parameters can be changed via RPC/MI commands without restart (e.g., TCP connecting timeout, debug level). Applying changes related to loaded modules or routing block require always a restart.
Kamailio is an open source application licensed under GNU Public License version 2 (aka GPLv2). It can be used for free “as in beer”.
Starting with end of 2008, contributions to core and several modules are done under BSD license. That means parts of it can be extracted and used under BSD license terms. But over all, when used as one application, the use must follow the terms of GPLv2, because GPLv2 is viral.
No. There is no official development pushed in this direction, Linux/Unix being the de facto for running servers. But it might not be big effort to make it compile using the Linux-like environments for Windows (such as cygwin).
A module is an extension that compiles in a separate object file and can be loaded at Kamailio startup. Usually a module exports new functions that can be used in configuration file routing blocks.
Inside the source tree, there are three directories:
Each module is located in its own sub-folder. The documentation for modules that are bundled in Kamailio packages is available at:
The modules that have the same dependencies as the core of Kamailio. Those that are not compiled by default are kept in the variable 'exclude_modules' of Makefile.
Add it to the variable 'include_modules' to the command 'make cfg'. For example, compiling and installing the modules app_lua and db_mysql:
make FLAVOUR=kamailio include_modules="app_lua db_mysql" cfg make all make install
No, however Kamailio can be configured to proxy media if needed.
Kamailio supports all codecs (even codecs that haven't been created yet).
Since Kamailio is a SIP proxy, it does not handle the media streams. Codecs are negotiated between the two endpoints.
Yes, Kamailio can be used for video calls. The two SIP phones must support video codecs/calling.
To be familiar with Linux and understand Session Initiation Protocol (SIP - RFC3261).
Yes, there are few of them, each addressing a particular category of topics, see the list at:
You must subscribe to be able to post questions. Subscription is free, instructions are presented at the link related to each mailing list.
The most important rules are to use a decent vocabulary and post about something related to Kamailio.
If the question is related to a stable version of Kamailio, then email to:
If the question is related to development version of Kamailio, then email to:
If the question is related to commercial aspects of Kamailio, then email to:
Yes. See enum module.
Kamailio can do next DNS query types: A-Name, C-Name, AAAA (IPv6), SRV, NAPTR and TXT.
Yes. There is nothing special to do for that in configuration file, MESSAGE requests are simply routed as any other SIP request.
Yes. See msilo module.
Yes. Kamailio offers an embedded MSRP relay function via msrp module. You don't need any external application for relaying MSRP packets.
Yes. There is nothing special to do for that in configuration file, SUBSCRIBE and NOTIFY requests are simply routed as any other SIP request.
Yes. You have to use presence and presence_xml modules to handle PUBLISH and SUBSCRIBE requests.
Yes. You have to use rls module.
Yes. See pua module and its extensions named with 'pua_' prefix (such as pua_usrloc, pua_dialoginfo, etc.).
Yes. You have to use dialog module together with presence_dialoginfo and pua_dialoginfo modules.
Yes. Kamailio offers an embedded XCAP server via xcap_server module. It can receive and handle directly the XCAP requests without using any external application.
The xcap_client module can be used when you want to interact with an external XCAP server (that could be another instance of Kamailio).
Yes. One solution is to use nathelper and rtproxy modules with the rtpproxy (http://rtpproxy.org) application for relaying RTP packets.
Yes. You have to set the public IP address as advertised attribute to listen parameter:
listen=_localsocket_ advertise _publicaddr_
listen=udp:10.10.10.10:5060 advertise 220.127.116.11:5060