260 likes | 431 Views
Introduction to SIP in WebSphere. Erik Burckart WebSphere Architect. What is SIP?. Session Initiation Protocol Negotiate a session between two users or services, often utilizing a different protocol. Often used for peer to peer models. Control protocol for many types of new communications
E N D
Introduction to SIP in WebSphere Erik Burckart WebSphere Architect
What is SIP? • Session Initiation Protocol • Negotiate a session between two users or services, often utilizing a different protocol. • Often used for peer to peer models. • Control protocol for many types of new communications • Voice over IP (VoIP) • Instant Messaging (IM) • Pivotal protocol in building the next generation telecommunications networks
Telephone Network How does SIP work? Sarah dials Todd INVITE Todd OK Trying ACK Ringing Todd picks up Hello Sarah? Hi Todd!
More on SIP… • A SIP URL looks like an email address • SIP:user@example.com • SIP:+19195551234@example.com;user=phone • TEL URLs are also used • TEL:+1-919-555-1234 • Since SIP is used to initiate another session, the popular protocol used to describe that session is called Session Description Protocol (SDP, defined in RFC 2327 • Helpful terminology… • A Dialog is a peer to peer relationship between two user agents (SIP nodes) • A User Agent Client (UAC) creates a request or dialog • A User Agent Server (UAS) handles a request or dialog • A Back to Back User Agent (B2BUA) is UAS/UAC combination that handles completes the incoming call and creates another identical one. • A proxy is a stateful server which forwards on the request to another user agent to handle.
Proxy proxy.telco1.com Proxy server.telco2.com User Agent sarah@example1.com User Agent todd@example2.com INVITE INVITE INVITE 100 TRYING 100 TRYING 180 RINGING 180 RINGING 200 OK 180 RINGING 200 OK 200 OK ACK Media Session BYE 200 OK
Telephone Network More in depth details… Sarah dials Todd SIP/2.0 200 OK Route: <sip:s1.telco.com> From: Sarah <sip:sarah@example.com> To: Todd <sip:todd@example.com> Call-ID: abc123 CSeq: 1 INVITE Contact: <sip:todd@nokia-e60.example.com> SIP/2.0 180 Ringing Route: <sip:s1.telco.com> From: Sarah <sip:sarah@example.com> To: Todd <sip:todd@example.com> Call-ID: abc123 CSeq: 1 INVITE Contact: <sip:todd@nokia-e60.example.com> INVITE sip:todd@example.com SIP/2.0 Route: <sip:s1.telco.com> From: Sarah <sip:sarah@example.com> To: Todd <sip:todd@example.com> Call-ID: abc123 CSeq: 1 INVITE Contact: <sip:sarah@razr.example.com> ACK sip:todd@example.com SIP/2.0 Route: <sip:s1.telco.com> From: Sarah <sip:sarah@example.com> To: Todd <sip:todd@example.com> Call-ID: abc123 CSeq: 1 ACK Todd picks up Negotiated Media Session Hello Sarah? Hi Todd!
What can I do with SIP? • Utilize SIP environments • VoIP • IM • IPTV • Audio/Video conferencing. • Next generation Telco networks. • Embed intelligent communications in applications • Improve Business Productivity • Click to call, IM • Manage calls on the web • Caller ID information • Three way calling, voicemail, etc. • Integrate with Business Processes • Automatically generated phone calls in a workflow.
Examples of Other Potential Applications • Business Conferencing • Mobile Conferencing • Virtual Receptionist • Prepaid Calling Cards • Push to Talk over Cellular (PoC) • Voice with Push to See • Voice with Push to Video • Voice with push of Media • Mapping services • Converged mobility • WiFi to GSM roaming • White Boarding (sharing) • Field Force Efficiency • Field Force Automation • Fleet Management & Logistics • Multimedia messaging with email, fax, voice mail, video mail, IM notification • IM with multimedia • Presence based applications • Interactive Gaming • Text, Picture and Voice Messaging • Subscription Media Push • Video on demand to mobile phone • Personalized call tones • Inbound call screening • Friends & Family Tracking • Security/Medical Monitoring
Why IBM? • IBM’s vision is that intelligent communications can be embedded in all applications. • IBM has been utilizing SIP since 2000. • WebSphere Application Server is the first vendor to include SIP in their base Java EE environment, allowing all applications to utilize SIP. • IBM has many products utilizing SIP • WebSphere Application Server • WebSphere Presence Server (with Group List management) • WebSphere IP Multimedia Subsystem Connectors • WebSphere Telecom Web Services Server • Lotus Sametime Gateway • WebSphere Voice Server • WebSphere Voice Response • More to come…
WebSphere SIP • SIP Servlet 1.0 API • JSR 116 • Built into the Servlet container that also hosts Portlets and HTTP Servlets. • IBM Extensions to SIP and HTTP session to provide fully converged functionality. • SIP Servlet tooling • Wizards • Graphical Deployment Descriptor Editors
WebSphere Proxy with SIP • High availability that understands applications which include SIP and HTTP. • Converged Proxy server • HTTP Reverse Proxy • Stateless SIP Proxy • Routes messages to keep SIP and HTTP Sessions in a single Application Session together.
SIP Servlet requests HTTP Servlet doInvite doAck doOptions doBye doCancel doRegister doSubscrbe doNotify doMessage doInfo doPrack doGet doPost doPut doHead doDelete doTrace doOptions SIP Servlet responses doProvisionalResponse doSuccessResponse doRedirectResponse doErrorResponse SIP Servlet 1.0 vs HTTP Servlets • Asynchronous instead of synchronous. • Servlet has methods for the requests and responses separately. • Multiple servlets can act on a single message • Stateful proxying APIs. • Application can be UAC, UAS, B2BUA, or Proxy. • Provides SipFactory per application for creating requests, sessions, etc. • SipSession and SipApplicationSession • IBM provides useful extensions to the specifications IBMApplicationSession extends references SipApplicationSession IBMSession references contains contains extends HttpSession SipSession
doProvisionalResponse() doSuccessResponse() doErrorResponse() doRedirectResponse() doInvite() doAck() doOptions() doCancel() doRegister() doPrack() doInfo() doNotify() doMessage() doSubscribe() SIP Servlet 1.0 API – JSR 116 Client SIP Container SIP Servlet Methods init() service() servlet destroy() Rules SIP Message doRequest() Create Request() SIP Message Create Response() doResponse()
SIP Servlet 1.1 API – JSR 289 SIP Application SIP Application SIP Application SIP Application Application Router • Application Router functionality • Allows the Deployer to add functionality to dynamically select which Servlets will be executed. • Spans multiple applications and there will be one per server. • Better support for convergence • Session convergence like the WebSphere 6.1 model. • More flexible ways to get to the SipFactory within an application. • Alignment with Java EE 5 • Alignment with Servlet 2.5 specification • Annotations support • Utilizes JSR 250 and the Servlet 2.5 specification • Adds Type level annotations like @SipServlet. • Resource injection where appropriate, like accessing the SipFactory SIP Servlet API WebSphere Servlet Container SIP HTTP
Example: Caller ID in a web page • Include information about incoming callers on existing Portals. • Could include looking up customer records, LDAP, etc. • Works with SIP network, but does not require SIP phones. Poll the server for caller ID Subscribe to a topic Send caller ID Publish call info Initiate Call
Example: Click to call in a webpage • Make every phone number a clickable link. • Could include call status • Helps efficiency by ensuring phone numbers are not mistyped. • Works with SIP network, but does not require SIP phones. • Another option below is that the HTTP Servlet can look at the information in the SIP Session since they are tied together Request a call be made Poll for status Subscribe to a topic Send status Make call Make call Publish call status
Example: Click to call with expert routing • Make asking for help a clickable link • Allows an expert to be chosen from a group • Works with SIP network, but does not require SIP phones. • Another option below is that the HTTP Servlet can look at the information in the SIP Session since they are tied together Find availability Of experts Find experts Request Help Fetch help context Make call Make call Expert Customer Accept call Accept call
Quick code example, click to call Create a call to from the first side. This can be called from the HTTP Servlet by fetching the SipFactory from the Servlet Context. sipFactory = (SipFactory)getServletContext().getAttribute(SipServlet.SIP_FACTORY); SipURI uriFrom = (SipURI) sipFactory.createURI(from); SipURI uriTo = (SipURI) sipFactory.createURI(to); SipServletRequest req = sipFactory.createRequest(appSession, "INVITE", uriFrom, uriTo); req.setRequestURI(uriTo); req.send(); After the first invitation comes back successful, create a call to the other side with the To and From flipped. This can be added in the doSuccessResponse method of the SipServlet. SipURI uriFrom = (SipURI) sipFactory.createURI(previousTo); SipURI uriTo = (SipURI) sipFactory.createURI(previousFrom); SipServletRequest req = sipFactory.createRequest(appSession, "INVITE", uriFrom, uriTo); req.setRequestURI(uriTo); req.send();
Questions? • References • Introducing SIP Article http://www-128.ibm.com/developerworks/websphere/techjournal/0606_burckart/0606_burckart.html • Developing Converged Applications Article http://www-128.ibm.com/developerworks/websphere/techjournal/0608_burckart/0608_burckart.html • Developing SIP and IP Multimedia Subsystem Applications Redbook http://www.redbooks.ibm.com/redbooks.nsf/e9abd4a2a3406a7f852569de005c909f/4ccb6d54f16a5a2f85257134005468db?OpenDocument • WebSphere Application Server SIP documentation http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/welc6tech_sip_links.html
Architecture • Converged Container • Seamless integration between JSR 116 SIP Servlets and HTTP Servlets or Portlets. • Built on proven WebSphere technology. • Converged Proxy • Ensures single point of session affinity management at the application session level, across HTTP and SIP • Provides high availability without expensive hardware. Servlet Container Servlets, SIP Servlets, Portlets Proxy Server Stateless SIP Proxy and HTTP reverse proxy
Specifications – Applications on WAS. • Many SIP related RFCs can be supported by the applications written on WAS SIP. • 2848, 2976, 3050, 3087, 3264, 3266, 3312, 3313, 3319, 3327, 3372, 3398, 3428, 3455, 3578, 3603, 3608, 3665, 3666, 3680, 3725, 3840, 3842, 3856, 3857, 3959, 3960, 3976, 4032, 4092, 4117, 4235, 4240, 4353, 4354, 4411, 4457, 4458, 4483, 4497, 4508
Performance Monitoring • Available in WAS 6.1 • # of active SIP application sessions for the whole container • # of active SIP sessions for the whole container • # of active SIP sessions / application • # of active SIP Application Sessions per application • # of SIP transactions / sec • Average number of messages per second handled by the container and calculated over a configurable period. • # of new SIP Application sessions / sec • Call arrival rate - Average number of new application sessions, per second, calculated over a configurable period. • Number of messages, of each type, coming in and out of each application • Some others