SIP extension
Introduction
This document is a specification of a SIP (Session Initiation Protocol) extension for the Restlet Framework.
SIP support would allow Restlet applications to do:
• voice and video conferencing
• streaming multimedia distribution
• instant messaging
• presence information
• online games
• call forward and screening
• rich-media services
• contact centers
This project was proposed by NetDev1 and is co-develop by NetDev and Noelios Technologies2.
Requirements
High priority
• [REQ01] Control unicast sessions (two-party)
• [REQ02] Control multicast sessions (multiparty)
• [REQ03] Creation of sessions
• [REQ04] Modification of sessions
• [REQ05] Deletion of sessions
• [REQ06] Modification by changing addresses or ports
• [REQ07] Modification by inviting more participants
• [REQ08] Modification by adding or deleting media streams
• [REQ09] Support SIP proxy mode
• [REQ10] Support SIP UA mode (user agent)
• [REQ11] Support SIP B2BUA (back-to-back user agent)
• [REQ12]
Low priority
Analysis
• SIP is a core element of the larger IMS3 (IP Multimedia Subsystem).
• SIP is heavily inspired by HTTP
• SIP only controls the session, the actual transport of data (voice, video) is typically done via RTP4
(Real-time Transport Protocol)
• SIP Servlets is generally suitable for non-transaction based services and rapid prototyping
• JSLEE SBBs are the equivalent of EJBs for SIP Servlets
• Each agent of a SIP network is identified by a URI (sip:username:password@host:port)
• SIP sessions typically correspond to voice calls
SIP extension 1
ID: 300-restlet | Version: 14 | Date: 12/7/09 12:08:25 PM
• SIP B2BUA are similar to HTTP reverse proxies
SIP elements:
• User agent (UA) : User Agent Client (UAC) or User Agent Server (UAS) roles, during a SIP transaction
• Proxy server
• Registar is a sort of directory server
• Redirect server
• Session border controllers (SBC)
• List of SIP methods5
• List of SIP statuses6
SIP call functions:
• Dial
• Answer
• Reject
• Hold
• Unhold
• Transfer
SIP B2BUA can provide (source: Wikipedia) :
• call management (billing, automatic call disconnection, call transfer, etc.)
• network interworking (perhaps with protocol adaptation)
• hiding of network internals (private addresses, network topology, etc.)
References
• [REF01] Wikipedia - Session Initiation Protocol7
• [REF02] Wikipedia - Session Border Controller8
• [REF03] Wikipedia - Back-to-Back User Agent9 (B2BUA)
• [REF03] Wikipedia - Session Initiation Protocol10 (Java)
• [REF04] IETF - RFC 326111 (SIP)
• [REF05] Restlet #910 - Add a SIP extension12
• [REF06] Blog - Technology and Fun13 (SIP related)
• [REF07] JCP - SIP Servlets 1.114 (JSR 289)
• [REF08] JCP - JAIN SIP 1.215 (JSR 32)
• [REF09] JSLEE - SIP presentation16
• [REF10] SIP Servlet tutorial17
• [REF11] SIP Stone test scenarios18
• [REF12] SIPp test tool19
• [REF13] JAIN SIP reference implementation20
• [REF14] SIP Communicator21 (SIP client written in Java)
• [REF15] SIPdroid22 (SIP client for Android)
...
SIP extension 2
ID: 300-restlet | Version: 14 | Date: 12/7/09 12:08:25 PM
Design
Core Restlet API changes
• Add a Protocol#SIP constant with 5060 as the default port
• Add a Protocol#SIPS constant with 5061 as the default port
Alternative designs
• SIP Servlets API 1.123
• Cipango architecture24
• Mule SIP Transport25
Implementation
...
1. http://www.netdev.co.uk/
2. http://www.noelios.com/
3. http://en.wikipedia.org/wiki/IP_Multimedia_Subsystem
4. http://en.wikipedia.org/wiki/Real-time_Transport_Protocol
5. http://en.wikipedia.org/wiki/List_of_SIP_request_methods
6. http://en.wikipedia.org/wiki/List_of_SIP_response_codes
7. http://en.wikipedia.org/wiki/Session_Initiation_Protocol
8. http://en.wikipedia.org/wiki/Session_Border_Controller
9. http://en.wikipedia.org/wiki/Back-to-back_user_agent
10. http://en.wikipedia.org/wiki/Session_Initiation_Protocol_%28Java%29
11. http://tools.ietf.org/html/rfc3261
12. http://restlet.tigris.org/issues/show_bug.cgi?id=970
13. http://technfun.wordpress.com/category/sip/
14. http://jcp.org/en/jsr/detail?id=289
15. http://www.jcp.org/en/jsr/detail?id=32
16. http://java.sun.com/products/jain/JSLEE-SIPServlet.pdf
17. http://dlc.sun.com/pdf/820-3007/820-3007.pdf
18. http://www.sipstone.org/
19. http://sipp.sourceforge.net/
20. https://jain-sip.dev.java.net/
21. http://sip-communicator.org/
22. http://sipdroid.org/
23. http://www.cipango.org/javadoc/jsr289/
24. http://confluence.cipango.org/display/DOC/Architecture
25. http://www.mulesoft.org/display/SIP/Home
SIP extension 3
ID: 300-restlet | Version: 14 | Date: 12/7/09 12:08:25 PM