The Kamailio SIP Proxy server is one of best open source for SIP proxy server. It is a highly scalable SIP proxy, very flexible in terms of configuration / routing. You can embed your own logic to modify a message, do specific routing. You may like to check Kamailio home page for more details.
In a normal Ubuntu 14 machine (16 GB RAM), Kamailio supports 100,000+ SIP endpoints (with some configuration tricks and customization). Kamailio is one of the important components in Load Multiplier SIP test bed. In a simple configuration both originating and terminating sides (or calling / called parties) are simulated by multiplier, and for SIP proxy, Kamailio is used. Please refer below diagram.
User can configure multiplier for calling and called parties. The typical call flows are configured accordingly. You can configure to have INVITE, CANCEL, BYE, UPDATE, PRACK, MESSAGE, INFO transactions etc as per your need. During signalling exchange media attributes can be extracted and feed to media engine and start media.
Multiplier supports wide range of features listed below.
- Signalling - SIP, IMS
- Scenarios - Registration, Unregistration, Call setup, Call termination, Hold, Release, Transfer, Any specific call flow out of box
- Transport - UDP, TCP, SCTP, TLS, DTLS, Websocket, Secured Websocket
- Media Codecs - PCMU, PCMA, AMR-NB, AMR-WB, OPUS, VP8
- Media Security - SRTP / DTLS
- NAT - STUN, TURN, ICE, ICE Lite
- Others - Audio / Video recording, text templates, binary templates, variables / functions
There are couple of working examples given below for your reference, to access it you need to login.
- Basic call [transport secured websocket | media srtp / dtls | rtpc mux enabled | codec opus]
- Basic call [transport secured websocket | media srtp / dtls | rtpc mux disabled | codec opus]
- Basic call [transport secured websocket | media srtp / dtls | rtpc mux enabled | codec opus, vp8]
- Call hold/release [transport secured websocket | media srtp / dtls | rtpc mux enabled | codec opus, vp8]
There are more examples. For all examples please refer examples page.
Please note that the examples given are valid for a particular multiplier release. For next releases it should work, sometimes certain syntax are deprecated / added / removed. To be sure of current syntax support, you may like to check latest user guide.