Title: Programmable End System Services Using SIP
1Programmable End System Services Using SIP
- Xiaotao Wu, Henning Schulzrinne
- 2nd New York Metro Area
- Networking Workshop
- September 3rd, 2002
2Agenda
- Brief introduction to SIP
- SIP endpoints can perform service functions
- Network service creation techniques are not good
for end system services - Endpoint Service Markup Language (ESML)
- Comparison between ESML and the other XML based
solutions for service creation - Future work
3SIP is , SIP is not
- SIP core protocol for establishing sessions in
the Internet (peer-to-peer) - Transports session description information from
initiator (caller) to callee - Allows change of parameters in mid-session
- Terminate session
- NOT for distribution of multimedia data
- NOT suitable for media gateway control
4Basic call setup
- Phone sends INVITE acts as UAC
INVITE sipalice_at_m2.home.com To
sipalice_at_home.com From Bob ltsipbob_at_office.com
gt cIN IP4 135.180.144.33 maudio 8000 RTP/AVP
0 5 8
office.com
alice
m2.home.com
bob
5Basic call setup
- Phone sends INVITE acts as UAC
- Alices phone rings acts as a UAS
User agent server
SIP/2.0 180 Ringing
office.com
alice
m2.home.com
bob
home.com
6Basic call setup
- Phone sends INVITE acts as UAC
- Alices phone rings acts as a UAS
- When Alice picks up, call is accepted and bobs
phone sends ACK to complete the setup
office.com
alice
m2.home.com
bob
home.com
SIP/2.0 200 OK cIN IP4 135.180.144.32 maudio
9000 RTP/AVP 0 8
7Basic call setup
- Encoded audio packets sent over RTP
office.com
alice
bob
home.com
8Basic call setup
- Encoded audio packets sent over RTP
- When either party hangs up BYE is sent
BYE sipbob_at_office.com
office.com
alice
bob
home.com
9SIP beyond audio call
- Presence extensions
- SUBSCRIBE to request notifications
- NOTIFY when event occurs
- Instant messaging
- MESSAGE with text body
- Device control
10Todays Endpoints
- Processing ability
- Graphical rendering
- Storage capacity
- Converged information
11SIP endpoints are more than IP-based POTS phones
12SIP promotes end system services
- Two SIP UAs can talk to each other directly.
- Service-related information is explicitly
contained in SIP headers. - Contact sip1.2.3.4mobility"fixed"q0.8
- The simplicity of SIP makes it easier for end
system to perform services.
13SIP CGI
- Programming language independent
- Maintains state via an opaque token
- For SIP proxies and endpoints
- call routing
- controlling forking
- call rejection
- call modification (Priority, Call-Info)
- RFC 3050
Priority.pl
14SIP CGI contd.
- Block _at_anonymous.com
- if (defined ENVSIP_FROM
- ENVSIP_FROM "sip_at_anonymous.com")
-
- print "SIP/2.0 600 I can't talk right
now\n\n" -
- Make calls from boss as urgent
- if (defined ENVSIP_FROM
- ENVSIP_FROM /sipboss_at_mycompany.com/)
-
- foreach reg (get_regs())
-
- print "CGI-PROXY-REQUEST reg SIP/2.0\n"
- print "Priority urgent\n\n"
-
15CPL
- XML-based interpreted
- Control
- Restricted to branching and subroutines
- no variables, no loops
- structured tree describing actions performed on
call setup event - Event
- incoming and outgoing events
- Switch
- address, language, time, priority
- Action
- Proxy, redirect, reject (busy)
- Graphical tools
- Protocol-independent
- SIP, H.323
- Extensions
- CPL for presence
- Logging
- Email
16CPL contd.
- lt?xml version"1.0" ?gt
- lt!DOCTYPE cpl PUBLIC "-//IETF//DTD RFC2824 CPL
1.0//EN" "cpl.dtd"gt -
- ltcplgt
- ltincominggt
- lttime-switchgt
- lttime dtstart"20020830T140000Z"
- dtend"20020830T150000Z"gt
- ltreject status"reject" reasonBusy" /gt
- lt/timegt
- lt/time-switchgt
- lt/incominggt
- lt/cplgt
17SIP servlet
- Java-based
- Runs in SIP server
- Receives SIP objects and processes them
- public class RejectServlet extends
SipServletAdapter - public boolean doInvite(SipRequest req)
- SipResponse res req.createResponse()
- res.setStatus(603)
- res.send()
- return true
-
18Services in sipc
SIP messages
19Need a language for end system service creation
- CPL
- Cannot originate a call
- Cannot be activated through non-call events
- SIP CGI
- An interface, not a language
- Can do nearly anything
- Existing techniques for network services are not
appropriate for end system service creation
20Describe end system services
- Users pay for a bad service because they do not
understand why it is not good - Techniques for network services are not
sufficient for end system services.
21Existing techniques for Network Services are not
sufficient for End System Services
22Existing techniques for Network Services are not
sufficient for End System Services
23Requirement for an end system service language
- Simple and easy to understand by non-programmers
- Platform neutral
- Express user interactions
- Control media and other end system applications
- Extensible to accommodate new services
- Restricted to certain class of services, not
necessarily Turing-complete
24Endpoint Service Markup Language (ESML)
- XML based language
- Platform and underlying programming language
neutral - Readable by non-programmers
- Defined as an XML schema
- Derivation of new types
- Pre-defined types
- Tree-like structure
- Use packages to group events and actions
25ESML example
- ltesml name"online_call"
- require"generic presence ui"gt
- ltnotification status"online"
- priority"0.5"gt
- ltaddress-switch field"origin"gt
- ltaddress is"xyz_at_foo.com"gt
- ltcall /gt
- ltalert soundfoo.au"
- text"Calling xyz_at_foo.com" /gt
- lt/addressgt
- lt/address-switchgt
- lt/notificationgt
- lt/esmlgt
26ESML packages
email
web
im
conference
calendar
27Extend generic to sip
- ltxsschema targetNamespace"esmlsip"
- xmlnssip"esmlsip"
- xmlnsgeneric"esmlgeneric"
- ..........
- ltxscomplexType name"IncomingType"gt
- ltxscomplexContentgt
- ltxsextension
- base"genericIncomingType"gt
- ltxsattribute name"priority"
- type"PriorityType"/gt
- ..........
- lt/xsextensiongt
- lt/xscomplexContentgt
- lt/xscomplexTypegt
28ESML Service Creation
ESML editor
esml.xsl
service.esml (template)
xslif
address isvar
XSLT
configuration editor
service.html
translate.cgi
service_foo.esml
29Compare to other languages
- CPL
- Not able to initiate a call
- Not able to handle non-call events
- SCML
- Developed by the JAIN forum
- Closely tied to the JAIN Java Call Control (JCC)
API. and defined using an XML Schema. - Object model of JCC
- CCXML
- Defined in W3C, for voice browser call control,
such as VoiceXML - The states and events for CCXML is in a lower
level abstraction than those for ESML and CPL.
(like the events call.CALL_CONNECTED,
call.CALL_ACTIVE, connection.CONNECTION_ALERTING)
30Future work
- Service partition between end system services and
network services - Feature interaction
31.NET
- connectivity really in two parts. One is how
you represent the information and the other is
how do you exchange that information. The first
is about information formats and schemas and the
second is about a rich set of protocols. - SOAP and WSDL is not for telecommunication
services - How to share an ESML scripts among many endpoints
fits in the .NET framework. However, how to
represent the service logic in an endpoint is
ESMLs own job.
ESML represent the service logic in an endpoint
32Security consideration
- Follow the same security consideration of CPL.
- It is designed to allow services to be specified
in a manner which prevents potentially hostile or
mis-configured scripts from launching security
attacks, including denial-of-service attacks.
Because script runtime is strictly bounded by
acyclicity, and because the number of possible
script operations are strictly limited, scripts
should not be able to inflict damage upon a CPL
server.
33End-to-end arguments
- End-to-end Arguments in System Design, Jerome
H. Saltzer and David P. Reed and David D. Clark,
ACM Transactions on Computer Systems, 1984The
function in question can completely and correctly
be implemented only with the knowledge and help
of the application standing at the end points of
the communication system. Therefore, providing
that questioned function as a feature of the
communication system itself is not possible.
(Sometimes an incomplete version of the function
provided by the communication system may be
useful as a performance enhancement.)