Cipango goals

Design goals of Cipango are the following:

Overall architecture

Cipango architecture is depicted on the following picture. The SIP processing layer is very similar to the HTTP one, with several classes extending their HTTP counterparts to add SIP capabilities.

Main classes of interest are the following:

SIP Processing

Cipango architecture originally evolved from a traditional (non-SIP) call processing platform we developed in a former life. As a result, SIP processing in Cipango remains very call-centric which is something we wanted to keep as it has proven a sound approach to simplicity, performance and reliability.

One of Cipango goals is to be able to host a variety of SIP elements (stateful, stateless...). To support this goal, the SIP layer is organized as a pipeline of handlers. The first handler to be called after a message has been received is the Server which then delegates the actual processing to a configured chain of handlers.

The architecture of Cipango configured as a Servlet engine is represented on the following figure:

The chain of handlers contains all stateful handlers needed to provide SIP Servlets support. It starts from the SipContextHandlerCollection in charge of application selection and includes CallHandler, TransactionHandler and SessionHandler responsible respectively for concurrency control, transactional state processing and SIP session management.