Programmable End System Services Using SIP Xiaotao Wu, Henning Schulzrinne 2nd New York Metro Area...

Post on 14-Dec-2015

215 views 1 download

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:alice@m2.home.com …

To: sip:alice@home.comFrom: “Bob”

<sip:bob@office.com>…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:bob@office.com

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:boss@mycompany.com/) { 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="xyz@foo.com"> <call /> <alert sound=“foo.au" text="Calling xyz@foo.com" /> </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