Haifa Labs SWG (@Rehovot) © 2006 IBM Corporation Sipping with WebSphere Application Server v6.1 Uri...
-
Upload
mary-weaver -
Category
Documents
-
view
221 -
download
1
Transcript of Haifa Labs SWG (@Rehovot) © 2006 IBM Corporation Sipping with WebSphere Application Server v6.1 Uri...
Haifa Labs SWG (@Rehovot)
© 2006 IBM Corporation
Sipping with WebSphere Application Server v6.1
Uri SegevManager, SIP Infrastructure Development Team
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation2
Agenda
JSR 116 Overview – Basic concepts and API
SIP Container Overview and Architecture
Introduction to the IBM IMS Presence Server
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation3
Agenda
JSR 116 Overview – Basic concepts and API
SIP Container Overview and Architecture
Introduction to the IBM IMS Presence Server
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation4
Goals
Create a platform that enables creation of SIP services the same way that it is possible for HTTP
It is not possible to use the HTTP servlets paradigm since SIP control is very different from HTTP
JSR 116 (SIP Servlet API) goal is to provide a similar mechanism for SIP
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation5
What Is A Servlet?
Sun’s Definition: “A Java program that runs as part of a network service, typically an HTTP server and responds to requests from clients“
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation6
Why extending the Servlets model for SIP?
Servlets API is an open standard supported by multiple vendors
Containers manage Servlet’s life cycle, session’s state, fault-tolerance, scalability, security
Application’s developers can focus solely on their application
HTTP Servlets are widely used in Web development. Large community of developers already familiar with the concepts of the Servlets API
New Services developed as Servlets can interact with existing components (HTTP Servlets, EJBs) creating converged applications
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation7
Other Goals
Application composition – enabling a SIP servlets to be written in a way that one servlet can be called after the other servlet completes
Converged applications – enabling converging both SIP and HTTP applications
Both application composition and converged applications are not very well defined in JSR 116
The SIP container implements both but other implementations of the container may differ…
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation8
Similarities between HTTP and SIP Servlets
The container hides the low level protocol, exposes high level API
Servlets invocation is triggered by events (request/response)
The container selects the appropriate Servlet to invoke
Developers override methods in the Servlet’s base class and provide specific implementation
Servlets are grouped into applications (war/sar) and deployed with a deployment descriptor (web.xml/sip.xml)
The container manages Servlet’s life-cycle, session state
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation9
HTTP Servlets
Used for developing Web Application
A set of Servlets that process HTTP Requests. Responses are sent back to the client as HTTP responses containing web pages
Developers overrides the doGet and doPost methods of the HTTP Servlet class and provide specific functionality
HTTP Servlets and their deployment descriptor (web.xml) are packaged into a WAR file by the developer/builder and deployed to the server by administrators
Container manages Servlet’s life cycle, replication of Session state, fail-over, authentication, security
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation10
HTTP Servlet API
destroy()
service()
init()
servlet
HTTP Response
Client Servlet Methods
HTTP Response
doPut()
doPost()
doGet()
Error Response
Rules
HTTP Response
Error Response
HTTP Request
Web Container
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation11
SIP Servlets
Used for developing systems that process SIP Signaling, e.g., telecom applications (SIP), presence servers (SIMPLE)
SIP Servlets process both SIP Requests and SIP Responses
Developers extend the SIP Servlet class and override methods that they wish to process:
• doRegister(…)
• doInvite(…)
• doMessage(…)
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation12
SIP Servlets
Creating and sending a message is fast and easy (two lines of code)
SIP Servlets hide the complexity of the SIP protocol. No need to set complex headers: tag, call Id, cseq, record route, via
Containers handle retransmission of messages
Containers ensures that transactions are completed according to the spec
SIP Servlets do not store any state. Containers manage SIP Session and SIP Application Sessions
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation13
SIP Servlet API
destroy()
service()
init()
doInvite() doAck()
doOptions() doCancel()
doRegister() doPrack() doInfo()
doNotify() doMessage() doSubscribe()
doProvisionalResponse() doSuccessResponse()
doErrorResponse() doRedirectResponse()
doResponse()
doRequest()
servlet
Create Request()
Create Response()
SIP Message
Client SIP Container SIP Servlet Methods
RulesSIP Message
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation14
Differences Between HTTP And SIP Servlets
HTTP signaling less complex
– Only handles requests and generates responses
SIP signaling is much more complex
– Handle and generate requests and responses, Session management, Proxying
SIP servlets - response can be generated asynchronously
Servlet mapping for SIP servlets is done by a set of rules evaluated at runtime. Client applications are not aware of applications installed on the server.
HTTP SIP
HTTP servlets - the doService() method is expected to send a response within the same method call
HTTP request contains the name of the Servlet to invoke in the request URI
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation15
Mapping SIP Requests To SIP Servlets
Servlet engines maintain a set of mappings which specify the conditions under which particular servlets should be invoked
A rule consists of a set of conditions, each of which test some property of the incoming request.
A simple rule: <servlet-mapping> <servlet-name>Registrar</servlet-name> <pattern> <equal> <var>request.method</var> <value>REGISTER</value> </equal> </pattern> </servlet-mapping>
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation16
Mapping SIP Requests To SIP Servlets
A more complex rule: <pattern> <and> <equal> <var>request.method</var> <value>INVITE</value> </equal> <not> <contains ignore-case="true"> <var>request.from.display-name</var>
<value>Alice</value> </contains>
</not> <subdomain-of> <var>request.from.uri.host</var>
<value>ibm.com</value> </subdomain-of> </and></pattern>
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation17
SIP Servlet Life Cycle
The container initiates the server by invoking init() with the appropriate parameters
After the servlet is initialized the container can call the service method by invoking the service() method with requests and responses
When the container decides to deactivate the servlet it calls the destroy() method
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation18
SIP Servlet Example
public class RegisterSiplet extends SipServlet
{
protected void doRegister(SipServletRequest req)
{
//Let everyone Register, create an OK Response
SipServletResponse res = req.createResponse(SipServletResponse.SC_OK);
// Send response to the client.
res.send();
}
{
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation19
SIP Servlet Capabilities
A SIP Servlet has read & write access to fields in the request/response
A SIP Servlet can perform the following SIP operations:– initiate new requests - services are not limited to responding only, they
can initiate calls to clients or other servers.
– respond to incoming requests
– proxy requests forward: the container supports any combination of the following modes of operation:• parallel/sequential• record route - stay on signaling path• supervised by the application
Running within a J2EE container provides the Servlet access to : EJB, JDBC, JNDI, JMS, javaMail and more
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation20
Acting as a UAC
Creating initial requests using SipFactory
– SipServletRequest createRequest(); Creating subsequent requests using SipSession
– SipServletRequest createRequest(String method); Push Route header using SipServletRequest
– Void pushRoute(SipURI uri); Send the request
– void send(); The application is invoked for all incoming responses
Sending CANCEL using the SipServletRequest
– SipServletRequest createCancel();
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation21
Acting as a UAS
Creating responses using SipServletRequest
– SipServletResponse createResponse();
Receiving ACK
– Applications are notified of incoming ACKs for 2xx responses to INVITE.
Receiving CANCEL
– Applications are notified of incoming CANCEL for a request (which has not yet been responded)
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation22
Proxying
Proxying is relatively easy
Public void doInvite(SipServletRequst req) {
Proxy proxy = req.getProxy();
proxy.setXXX(true);
proxy.proxyTo(URI);
}
The container supports any combination of the following modes of operation:
– parallel/sequential
– record route - stay on signaling path
– Supervised by the application
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation23
Converged Application – SIP & HTTP
Servlet container are expected to support both the SIP and HTTP Servlet APIs
Advanced services will combine multiple modes of communication, for example, telephony, Web, email, presence and instant messaging
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation24
Application Composition Example
LS – Location Server
OCS – On Call Screening
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation25
SipSession
SipSession represents a point to point SIP relationship– i.e. a dialog or a pseudo dialog
Get session informationString getId();String getCallId();Address getLocalParty();
Create subsequent requestsSipServletRequest createRequest(String method);
Store and retrieve session datavoid setAttribute(String name, Object attribute);Object getAttribute(String name);Enumeration getAttributeNames();
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation26
SipApplicationSession
Unlike the HTTP model, SIP applications may consist of more than one session (conference application, converged application)
SipApplicationSession contains one or more sessions (Not necessarily SIP sessions)
Get sessions
Iterator getSessions();
Iterator getSessions(String protocol); Life cycle
setExpires, invalidate Attributes
Get, set, remove
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation27
Timer Service
A container provided service that allows application to schedule timers and receive notifications when timers expires
ServletContext sc = getServletContext();
String path = ‘javax.servlet.sip.TimerService’;
TimerService ts = sc.getProperty(path);
ts.createTimer(...(
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation28
Agenda
JSR 116 Overview – Basic concepts and API
SIP Container Overview and Architecture
Introduction to the IBM IMS Presence Server
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation29
WAS Unified Application Server
TCP
WebSphere Application Server
SIP Container Pre-processorSIP
HTTP Container Pre-processor
SSL
HTTP
Web Container
UDP
Presence
Registrar
Session Mgr.
Other
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation30
Scalability & Failover
The containers replicate session information between them
When a container crashes the other containers in the cluster take over and deal with the sessions of the failing container
The proxies route messages according to load between the containers
When a container crashes the proxy knows how to route messages to the appropriate containers that holds the failed sessions
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation31
Load Balancing / Fail Over
TCP
SIP (TCP)
UDP
WEB Container
Logic
Servlet
Servlet
Servlet
Servlet
HTTP Transport
SIP Transport
WEB Container
Logic
Servlet
Servlet
Servlet
Servlet
HTTP Transport
SIP Transport
WEB Container
Logic
Servlet
Servlet
Servlet
Servlet
HTTP Transport
SIP Transport
WEB Container
Logic
Servlet
Servlet
Servlet
Servlet
HTTP Transport
SIP Transport
IHS
HTTP (TCP)
SIP (UDP)
Proxy
Plug-in
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation32
Agenda
JSR 116 Overview – Basic concepts and API
SIP Container Overview and Architecture
Introduction to the IBM IMS Presence Server
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation33
Connectivity Layer Comprised of routers and switches to access a network
Control Layer Comprised of control servers for managing calls and sessions
Applications Layer Comprised of applications to execute services for the userPresence
Server
HSS
IP, GSM or others
I-CSCF
GLS IM
S-CSCF
P-CSCF
Presence for IMS
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation34
publish
Presentity
notify
subscribe
fetc
h
publish notify
Fetcher
Subscriber
accepts, stores, and distributes the
presence information
PresenceServer
Presence Model
no
tify
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation35
Presence Server Capabilities
Allows people to know the status of others Used in a buddy list application
User sends a PUBLISH to indicate their own status User status is defined in XML
• Base schema is part of the SIMPLE extensions• But as with all XML, it is infinitely extensible
User sends a SUBSCRIBE to express interest in another user The server will respond with a NOTIFY indicating the current status
of the specified user If requested in the SUBSCRIBE, the server will continue to issue
NOTIFYs every time the specified user changes status
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation36
Presence Information Flow
External Provider
Data
PresenceServer
Raw Presence Document
Composed Presence Document
Storage
Location Service
Calendar
Publishing presence
information
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation37
Presence Information Flow
Privacy
SubscriptionRequest
Subscribing on presence information
PresenceServer
Storage
AllowedForbidden
Sending the stored
presence information to
watchers
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation38
Architecture
IBM Websphere Presence Server is based on SIP technology SIP Container - Web container extension for SIP applications Implements RFCs and drafts relevant to presence
IBM Websphere Presence Server is developed on top of WAS Fully integrated with J2EE architecture Includes EJBs, JDBC, JMS, Java servlets (SIP servlets) Can be deployed in a distributed environment
IBM Websphere Presence Server supports Standard presence objects (user, conference) Custom presence objects (taxi, printer, game)
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation39
Architecture
IBM Websphere Presence Server is made up of a collection of inter-working services and utilities
Presence Service – handles PUBLISH and SUBSCRIBE requests and sends NOTIFY messages
Miscellaneous services (external providers, resource list, privacy)
IBM Websphere Presence Server is extensible New services and utilities New types of presence information New sources of presence information
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation40
Extensions
External providers
RLS providers
XML manipulation utilities
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation41
External Provider – Location-based Service
GPSMobile Location Protocol
Wireless Base
Station
RawPresenceDocument
ComposedPresenceDocument
includesgeographic
al location
WebspherePresence
Server
External Provider
Provides a set of APIs for external
providers
John is about to join a meeting. He changes his status to ‘busy’ ‘in a meeting’ and publishes the presence document
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation42
Extensions to WPS
External providers
RLS providers
XML manipulation utilities
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation43
RLS Providers
Alice
Joe
Bill
Andrew
Tony
Creates a list of buddies [email protected]
Creates a list of buddies [email protected]
LDAP
WMM
XCAP
RLS Provider
Provides a set of APIs for RLS providers
SIP NOTIFY
Websphere Presence
Server
SIP SUBSCRIBE [email protected]
Storage
PUT
GET
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation44
Extensions to WPS
External providers
RLS providers
XML manipulation utilities
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation45
XML Manipulation Utilities
Presence information is presented in XML format
Presence schema is defined by IETF in RFC 3863 but …it can be extended
IBM Websphere Presence Server provides support for the pidf schema
IBM Websphere Presence Server provides two extension points to handle custom XML
– Aggregator
– Document processor
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation46
Default Aggregator
IETF RFC 3903 – Publish define the natural decomposition of a presence
<?xml version="1.0" encoding="UTF-8"?> <root entity="pres:[email protected]" xmlns="test:ns"> <test id="old attr1"> <child>old child 1 </child> <child>old child 2 </child> </test></root> <?xml version="1.0" encoding="UTF-8"?>
<root entity="pres:[email protected]" xmlns="test:ns"> <test id="old attr1"> <child>old child 3 </child> <child>old child 4 </child> </test> </root>
Aggregator
<?xml version="1.0" encoding="UTF-8"?> <root entity="pres:[email protected]" xmlns="test:ns"> <test id="old attr1"> <child>old child 1 </child> <child>old child 2 </child> </test> <test id="old attr1"> <child>old child 3 </child> <child>old child 4 </child> </test> </root>
Haifa Labs SWG (Rehovot team)
© 2006 IBM Corporation47