Table of Contents

Kamailio distributed message queue

The Kamailio distributed message queue project will bring communication capabilities between multiple instances of Kamailio servers. The plan is to have a distributed system - multiple SIP servers in one farm, capable of communicating and sharing user presence states, user location information, etc.

Design

Having in mind that the final architecture will have a limited number of nodes in one message queue bus, we could build the system so that each node has awareness of the entire topology. That would mean having bootstrapping nodes that provide initial configuration and topology for every newly added node in the message queue bus. They will also be responsible for synchronising the topology to the other nodes upon changes of the state of one node (deleting/failover/etc). There will be multiple bootstrapping nodes, to avoid having one single entity being responsible for the initial state - they will synchronise current state between each other (some gossip algorithm maybe). They will be configured statically, within each node that connects to the message queue bus. Actually, each message queue bus will be represented by a set of bootstrapping nodes, and the terminal nodes that are connected to it. One idea is having one domain name pointing to several different bootstrapping nodes through DNS mechanisms. This will enforce both redundancy and evenness across the bootstrapping nodes (there is the problem of DNS caching, though).

Messages

Message flow

Kamailio message queue - message flow

Roadmap

Git repository

git clone git://git.sip-router.org/sip-router 
git checkout mariusbucur/dmq