Interacting with Homer SIP capture vai the API
Tag Archives: Kamailio Bytes
Kamailio Bytes: Adding Prometheus + Grafana to Kamailio
Adding Prometheus support to Kamailio and rendering stats in Grafana
Kamailio, IMS & DNS Headches
A quick post on a lesson that took me a while to learn with DNS, Kamailio and IMS.
FreeSWITCH, Kamailio & IMS Extensions
Recently I’ve been doing some work with FreeSWITCH as an IMS Conference Factory, I’ve written a bit about it before in this post on using FreeSWITCH with the AMR codec.
Pretty early on in my testing I faced a problem with subsequent in-dialog responses, like re-INVITEs used for holding the calls.
Every subsequent message, was getting a “420 Bad Extension” response from FreeSWITCH.


So what didn’t it like and why was FreeSWITCH generating 420 Bad Extension Responses to these subsequent messages?
Well, the “Extensions” FreeSWITCH is referring to are not extensions in the Telephony sense – as in related to the Dialplan, like an Extension Number to identify a user, but rather the Extensions (as in expansions) to the SIP Protocol introduced for IMS.
The re-INVITE contains a Require header with sec-agree which is a SIP Extension introduced for IMS, which FreeSWITCH does not have support for, and the re-INVITE says is required to support the call (Not true in this case).
Using a Kamailio based S-CSCF means it is easy to strip these Headers before forwarding the requests onto the Application Server, which is what I’ve done, and bingo, no more errors!
Kamailio Bytes – Using Rtimer to run Jobs
Using the Rtimer module and UAC to be annoying, or very useful.
Using Docker to develop SIP solutions with Kamailio
Using Docker to spin up environments to test Kamailio in
Kamailio Bytes – OnReply Route
So far with most of our discussions about Kamailio we’ve talked about routing the initial SIP request (INVITE, REGISTER, SUBSCRIBE, etc), but SIP is not a one-message protocol, there’s a whole series of SIP messages that go into a SIP Dialog. Sure the call may start with an INVITE, but there’s the 180 RINGING, the … Continue reading Kamailio Bytes – OnReply Route
Kamailio Bytes – Gotchas with Kamailio as an Asterisk Load Balancer
Things to keep in mind before using Kamailio as a Load Balancer for Asterisk
Kamailio Bytes – UAC – Authenticate Outbound Calls
Using UAC module to authenticate outbound calls where you need to respond to a 401 Unauthorised Response, or a 407 Proxy Authentication required
Kamailio Bytes – Docker and Containers
Using Docker to containerize Kamailio instanances
Kamailio Proxy-CSCF Pull
My first Pull / Merge in the Kamailio project was to fix the IMS P-CSCF config
Kamailio Bytes – http_client
Using Kamailio to send HTTP requests (POST & GET) to a HTTP server and store the result.
Kamailio Bytes – Multiple Kamailio Instances on a Single Box
Running multiple instances of Kamailio on the same server using init.d
Kamailio Bytes – SIP over TLS (SIPS)
Using Transport Layer Security (TLS) to protect SIP traffic from modification / manipulation and guarantee message authenticity.
Kamailio Bytes – Nightly Releases the Lazy Way
Using apt package manager to install nightly Kamailio builds
Kamailio Bytes – Ansible for Automating Deployments
Using Ansible to automate Kamailio deployments at scale
Kamailio Bytes – Python + SIP with KEMI
Using KEMI to handle Kamailio SIP Routing in Python
Kamailio Bytes – UAC for Remote User Registration to external SIP Server (Originating SIP REGISTER)
Using Kamailio’s UAC module to send outbound SIP REGISTER messages
Kamailio Bytes – KEMI Intro
Using KEMI to write routing logic using languages like Python, Ruby, Lua and JS