[asterisk-dev] Pinana updates - distributed device states over SIP
Olle E. Johansson
oej at edvina.net
Thu Dec 2 07:15:31 UTC 2010
Brad Watkins (Marquis42) and I have been working on project pinana for a while. A lot of time was spent on architecture, something we locked down at Astricon and went from architecture work to coding. We now have the follwowing state:
- Asterisk can subscribe to remote device states by adding hints
- Asterisk can PUBLISH device state updates to a presence server
This way, Asterisk can subscribe to the state of an extension in another Asterisk server. If you have two servers that are load balanced somehow, you can have a hint that points to the local SIP device and to the state of a remote device in the other server. Regardless of where the call turns up, your state will change and force a change of the extension state and ... the lamp will start blinking!
The PUBLISH part still needs some polishing, but the idea here is to use a Kamailio SIP server to aggregate the device states and handle the distribution. All Asterisk servers PUBLISH to Kamailio and subscribe from kamailio. Each Asterisk server now can send ONE publish and Kamailio will distribute the update to the rest of the group. If you add or remove a server, you don't have to change the configuration of the rest of the servers.
We're at a state where Asterisk sends PUBLISH requests and Kamailio accepts them. It's a good start. There are issues with state changes during a PUBLISH transaction that we're working on handling properly now.
The code is written for 1.4 and will be ported to 1.8 and for inclusion in trunk. We based the subscribe part on the code for remote MWI subscriptions in trunk, and the PUBLISH part is using the EPA framework for trunk. We've found issues with both these architectures that we will propose fixes for in 1.8 and trunk.
If you want to test, the code is in the svn branch at http://svn.digium.com/svn/asterisk/team/group/pinana-publish-1.4
Note that we do work with this branch, so at some points it might not be in compilation state or even crash badly. If so, find us and we'll help you find some stable version to test.
This work is funded by Telekompetanse AS in Oslo, Norway for a project in Akkershus Fylke. Much of the architecture is based on earlier discussions with Sitelink in the UK. The Kamailio module for dialog-info presence that we used was developed by Klaus Darillion, another well-known Asterisk and Kamailio developer.
My personal feeling is that this will add a lot of functionality to Asterisk in large scale installations. It's something I wanted to do for many years. Feels great to see the bits and pieces coming together and actually work as planned!
More information about the asterisk-dev