– Kamailio SIP Server –

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

  • Registration of a node in the message queue bus
  • Deletion of a node in the message queue bus
  • P2P messages between Kamailio instances

Message flow

Roadmap

  • 31th of March - full design decisions, flow diagram
  • 15th of April - having a skeleton interface (exported functions, cfg functions, etc)
  • 15th of May - completing the code base, plus having some module using the distributed message queue as proof of concept
  • 1st of June - small testing framework, extensive testing of the whole message system

Git repository

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