programmable end system services using sip xiaotao wu, henning schulzrinne 2nd new york metro area...
TRANSCRIPT
Programmable End Programmable End System Services Using SIPSystem Services Using SIP
Xiaotao Wu, Henning Schulzrinne2nd New York Metro Area
Networking Workshop September 3rd, 2002
AgendaAgenda
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
SIP is …, SIP is not …SIP 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
office.comalice
bobm2.home.com
Basic call setupBasic call setup Phone sends INVITE; acts as UAC
INVITE sip:[email protected] …
To: sip:[email protected]: “Bob”
<sip:[email protected]>…c=IN IP4 135.180.144.33m=audio 8000 RTP/AVP 0 5 8
home.com
office.comalice
bobm2.home.com
Basic call setupBasic call setup Phone sends INVITE; acts as UAC Alice’s phone rings; acts as a UAS
SIP/2.0 180 Ringing
User agent server
home.com
office.comalice
bobm2.home.com
Basic call setupBasic call setup Phone sends INVITE; acts as UAC Alice’s phone rings; acts as a UAS When Alice picks up, call is accepted and bob’s
phone sends ACK to complete the setup
SIP/2.0 200 OK…c=IN IP4 135.180.144.32m=audio 9000 RTP/AVP 0 8
home.com
office.comalice
bob
Basic call setupBasic call setup Encoded audio packets sent over RTP
home.com
office.comalice
bob
Basic call setupBasic call setup Encoded audio packets sent over RTP When either party hangs up BYE is sent
BYE sip:[email protected]
SIP beyond audio callSIP beyond audio call
Presence extensions SUBSCRIBE to request notifications NOTIFY when event occurs
Instant messaging MESSAGE with text body
Device control
Today’s EndpointsToday’s Endpoints
Processing ability Graphical rendering Storage capacity Converged information
SIP endpoints are more than SIP endpoints are more than IP-based POTS phonesIP-based POTS phones
SIP promotes end system SIP promotes end system servicesservices
Two SIP UAs can talk to each other directly.
Service-related information is explicitly contained in SIP headers. Contact:
sip:1.2.3.4;mobility="fixed";q=0.8 The simplicity of SIP makes it
easier for end system to perform services.
SIP CGISIP 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
SIP_FROMSIP_TOstdin
CGI-PROXY-REQUESTstdout
SIP CGI contd.SIP CGI contd. Block *@anonymous.com:if (defined $ENV{SIP_FROM} && $ENV{SIP_FROM} =~ "sip:*@anonymous.com") { print "SIP/2.0 600 I can't talk right now\n\n";}
Make calls from boss as urgent:if (defined $ENV{SIP_FROM} && $ENV{SIP_FROM} =~ /sip:[email protected]/) { foreach $reg (get_regs()) { print "CGI-PROXY-REQUEST $reg SIP/2.0\n"; print "Priority: urgent\n\n"; }}
CPLCPL 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
Callnot match
match
actions
CPL contd.CPL contd.<?xml version="1.0" ?><!DOCTYPE cpl PUBLIC "-//IETF//DTD RFC2824 CPL
1.0//EN" "cpl.dtd"> <cpl> <incoming> <time-switch> <time dtstart="20020830T140000Z" dtend="20020830T150000Z"> <reject status="reject" reason=“Busy" /> </time> </time-switch> </incoming></cpl>
SIP servletSIP 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; }}
Services in sipcServices in sipc
SIP messages
Service Moderator
SIP stack
SIP CGIengine
CPLengine
ESMLengine
Servicemodule
Hardcodedservices
Need a language for end Need a language for end system service creationsystem 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
Existing techniques for Network Existing techniques for Network Services are not sufficient for End Services are not sufficient for End System ServicesSystem Services
Call
Connection Connection
Address1 Address2
Call
Address app1 app2 app3
a. Network service call model b. End system service call model
Existing techniques for Network Existing techniques for Network Services are not sufficient for End Services are not sufficient for End System ServicesSystem Services
Network services
End system services
Developer Experienced developers
Non-programmers
Media and other end system applications
Indirect control
Direct control
User interaction
Indirect Direct
Requirement for an end Requirement for an end system service languagesystem 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
Endpoint Service Markup Endpoint Service Markup Language (ESML)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
ESML exampleESML example <esml name="online_call" require="generic presence ui"> <notification status="online" priority="0.5"> <address-switch field="origin"> <address is="[email protected]"> <call /> <alert sound=“foo.au" text="Calling [email protected]" /> </address> </address-switch> </notification> </esml>
Device agent
x10 vcr
SIP user agent
SIP
ESML packagesESML packages
Basic user agent
Generic Media UIPresence agent presence
conference
email web
calendar
im
Extend ‘generic’ to ‘sip’Extend ‘generic’ to ‘sip’ <xs:schema targetNamespace="esml:sip" xmlns:sip="esml:sip" xmlns:generic="esml:generic" .......... <xs:complexType name="IncomingType"> <xs:complexContent> <xs:extension base="generic:IncomingType"> <xs:attribute name="priority" type="PriorityType"/> .......... </xs:extension> </xs:complexContent> </xs:complexType>
ESML Service CreationESML Service Creation
xsl:if
ESML editor
service.esml(template)
XSLT
esml.xsl
configurationeditor
service.html
translate.cgi
service_foo.esml
address is=$var
Compare to other Compare to other languageslanguages 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)
call
connection connection
address1 address2
Future workFuture work
Service partition between end system services and network services
Feature interaction