Monday, November 24, 2008

One year @ JBoss : Mobicents Sip Servlets 0.7 released !!!

It's been now one year since I joined JBoss, a division of Red Hat and about a month and a half since our last release that made Mobicents Sip Servlets the first Open Source container to become Sip Servlets 1.1 (JSR 289) certified.

So it was due time for another release and we wanted it to be feature packed so here goes the review of the latest and greatest of Mobicents Sip Servlets that you can download here

First, Concurrency Control. It defines here how a sip servlets application can be accessed concurrently and what would its expected behavior in this case. Although the JSR 289 Expert Group couldn't agree on a concurrency control mechanism for JSR 289 and that feature has been postponed to the next version of the spec, we believe this feature can greatly simplify the life of the Sip Servlets developers. Also in getting more experience on that front and feedback from the community we would like to start to draft a proposal for inclusion in the next revision of the specification.
So Mobicents Sip Servlets supports not one but three concurrency control modes :

  • None - is the one defined (or not defined...) by the specification and the developer is reponsible for synchronizing access to shared resources such as SipSession or SipApplicationSession attributes or objects held by those sessions.
  • SipSession : This mode guarantees that two or more messages from the same SipSession will never be processed simultaneously. They will be serialized on the SipSession meaning that they will be processed sequentially by the sip servlet in the order of their arrival so you can access SipSession attributes in a safe way.
  • SipApplicationSession : This mode guarantees that two or more messages from the same SipApplicationSession will never be processed simultaneously so you can access SipApplicationSession attributes and the SipSession attributes in a safe way.
Those different concurrency modes for now only take into account SIP messages for serializing access to either the SipSession or SipApplicationSession which means that you have to be careful if you are accessing shared resources in an unmanaged way, for example if you access a SipSession attribute from an unmanaged thread or from EJB this access will not be synchronized. But we are working on it :-)

Congestion Control : All the messages that arrives in the Mobicents Sip Servlets container will go, after some initial processing, in a queue to wait for, depending on the chosen concurrency control mode, a free thread or the lock on the session to be released. If this queue gets full the container will start rejecting any new SIP requests (except ACK) with SIP error code 503 until the server catches up. Note that only SIP requests will be rejected, the SIP responses that arrive at a full queue will be stored and processed sooner or later. In the future we will be adding more congestion control mechanisms like memory threshold, CPU threshold, choose between sending 503 or just dropping any new message coming in depending on the load threshold... so stay tuned !

Enterprise Monitoring and Management Console through Seamless integration into JOPR and Embedded JOPR (JBoss Administration console), the JBoss Enterprise management solution : I just blogged about it 3 days ago so for more details see my blog post.

Mid Call Failover Support : We completed our HA capabilities for pure SIP applications so you can now failover to any node in the cluster in the middle of a call for all kind of pure SIP Applications (Proxy, B2BUA, UAC, UAS) ! We will now be working on failover for converged applications and add performance and stability automated test based on smartfrog so that it becomes final.

We also have been working on two great new features and wish some community feedback on them so we first introduce them as Technlogy Preview into this 0.7 release :
JBoss Seam framework is now able to enhance your sip servlets application : As Vladimir is currently working on a cool PBX application, he was feeling that this was not enough :-) so he started to dig and hack on how the JBoss Seam framework could be utilized to simplify the Sip Servlets application development and has been very successful, See his blog post about it and the public discussion. As we were discussing together the implications of this, we decided to start a subproject dedicated to it to rock the sip servlets world and continue our unification task (between Sip Servlets and Http or Sip Servlets and JSLEE) the same way Seam has been rocking the http servlets world. So check it out and see how it can improve your Time to Market and development experience all together and don't forget to give us your feedback and what you would like to see improved or implemented.

Diameter support
: For users of Mobicents Sip Servlets, we wanted them to be able to charge calls that are going through their applications so Alexandre Mendonça who is leading the Diameter project for the Mobicents platform, has tremendously helped us in getting us Diameter support and hacked a Sip Servlets Diameter Event Charging application based on the Location Service example that performs call charging at a fixed-rate (event charging), so check it out and give us your feedback. Alex is now planning on getting more of the Diameter protocol implemented and as he go, he will hack Sip Servlets applications that showcase the different possible call flows to help you do Authentication, Authorization and Accounting on top of Mobicents Sip Servlets.

Also we got 2 new shiny examples, the Diameter Event Charging one that we just discussed and the Conference Media Server application built on GWT with server-push updates to provide desktop-like experience for the user interface. This application is in response to the high demand of the community for Media Conferencing on top Mobicents Sip Servlets and this example will be later integrated into the PBX application that Vlad is builing.

Also with all those new features, we moved to the latest version of JBoss AS 4.2.3.GA and also comes the usual round of bug fixes and enhancements comprised of an updated Management Console, more SIP Extensions (PRACK, OPTIONS, INFO), and more.

Check out our roadmap to see what's coming next !

Feel free to give us your feedback on the Mobicents Google Group
Thanks for using Mobicents Sip Servlets !

Friday, November 21, 2008

Mobicents Sip Servlets gets a shiny new Administration console !

As some of you might be aware, earlier this year JBoss released Jopr, an enterprise management solution for JBoss middleware projects and other application technologies based on RHQ, and Embedded Jopr, which will become the new JBoss Administration console and is based on Jopr.

Since the project does provide great extensibility and thanks to the good documentation of the project and its plugin architecture (see http://pilhuhn.blogspot.com/2008/05/writing-rhq-plugin-part-1.html and http://support.rhq-project.org/display/RHQ/RHQ+Plugin+Community) we decided that it was time for Mobicents Sip Servlets to be seamlessly integrated into those great projects and finally have a way to being administrable into large scale enterprise deployments.

So we hacked our own plugin. We decided to start simple with http://support.rhq-project.org/display/RHQ/Writing+Custom+Plugins#WritingCustomPlugins-GettingStartedQuickly and provide accessibility to the SipApplicationDispatcher, which is a central piece in the Mobicents Sip Servlets Architecture since it has the responsibility of dispatching the SIP requests and responses (that is gets from the underlying jain-sip stack) to the deployed Sip Servlets applications.
So you can control the concurrency and congestion control of the server through it. This was really a piece of cake and was done and working in an afternoon.

Excited by the easiness to integrate into jopr, we decided to provide metrics for Sip Sessions and Sip Applications Session available into standard pure SIP Servlets applications or converged Java EE/SIP applications about the same way it is currently done in Jopr for HTTP Sessions. Same thing, it was done real quick and with a result showing seamless integration into jopr. See our Mobicents Sip Servlets jopr plugin that works for both Jopr and Embedded Jopr.

It took us about 2 days to complete the task 1 day of coding and discovering and one day of polishing and documenting... To try it out just download the latest release of Mobicents Sip Servlets and drop the embedded jopr war that contains our plugin in the server/default/deploy directory and hit http://localhost:8080/embedded-jopr

I have only one thing to say, thanks to the JBoss Operations Team for providing such a good project that saved us quite a bit of time to have a full blown enterprise management solution for our project. Keep up the good work, guys !