Tuesday, April 7, 2009

A short introduction to SIP (Session Initiation Protocol)

SIP stands for Session Initiation Protocol and is an application level signaling protocol. It is designed to create, modify and terminate sessions between one or more participants. Typical SIP sessions can be telephone calls, multimedia distribution and conference participations.

The base SIP specification is defined by IETF rfc3261.

SIP container/Sip Servlet API (SSA).
The Sip Servlet API (SSA) is an extension of the HTTP Servlet Specification. Some important aspects of the SSA :


  • For developing SIP enabled applications. Supporting UAC, UAS, Proxy and B2BUA.
  • Aligned with HTTP Servlet API for development of converged applications (originating HTTP, sending SIP request, bridging HTTP and SIP Session) spawning multiple protocols and media types.
  • Separating the developer and the deployer roles by deployment descriptors 
  • Several applications may execute on the same incoming or outgoing messages, which allows application composition. Every application processes the message independently from one another.
  • Application data can be stored in sessions and application context.


There are two versions of SSA, 1.0 and 1.1:

SSA 1.0 is defined in JSR 116, which have reached final status (released).
SSA 1.1 is defined in JSR 289, which is still on early stage (under development).


The SIP container is under development, towards SSA 1.1 (JSR 289). SSA 1.0 Test Compatibility Kit (TCK) tests towards the SIP container passes with the exception of two failures :


  • test_context. This test case, among other, checks that the information in context is Servlet related. But some extra information is stored there by the application server which causes this to fail. This is not a violation of the SSA 1.0 and can be counted as not critical.
  • test_proxy_gen2xx. This tests the ability of a proxy to generate its own 2XX responses, to act as an UAS. This functionality is not implemented in current version, but there is ongoing effort to add this.



The Sip Stack

The Sip Servlet implementation requires a Sip stack to control the signaling operations. The Sip Stack is provided by Ericsson Inc, and is currently used for Ericsson IMS products. The Sip Container and Stack were developed at Ericsson R&D sites in Stockholm, Sweden.

Some characteristics of the Sip Stack implementation :


  • Lazy Parsing
  • Low footprint
  • Efficient


Sailfin: Open Source SIP Servlets Technology for GlassFish.
The Sailfin project, adds SIP Servlets technology extension to Glassfish, providing high availability, clustering features and integrating with the existing services. Sailfin is a joint effort, working towards to achieve JSR-289 compatibility and will be the source of all SIP related development for Glassfish.

No comments: