190 likes | 268 Views
Programmable End System Services Using SIP. Xiaotao Wu, Henning Schulzrinne 2nd New York Metro Area Networking Workshop September 3rd, 2002. Today’s Endpoints. Processing ability Graphical rendering Storage capacity Converged information Varied platforms Phones PCs PDAs.
E N D
Programmable End System Services Using SIP Xiaotao Wu, Henning Schulzrinne 2nd New York Metro Area Networking Workshop September 3rd, 2002
Today’s Endpoints • Processing ability • Graphical rendering • Storage capacity • Converged information • Varied platforms • Phones • PCs • PDAs
SIP promotes end system services • Two SIP UAs can talk to each other directly. • Service-related information is explicitly contained in SIP headers. • The simplicity of SIP makes it easier for end system to perform services.
SIP service interfaces <?xml version="1.0" ?> <!DOCTYPE cpl PUBLIC "-//IETF//DTD RFCxxxx CPL 1.0//EN" "cpl.dtd"> <cpl> <incoming> <address-switch field="origin" subfield="user"> <address is="anonymous"> <reject status="reject" reason="I don't accept anonymous calls" /> </address> </address-switch> </incoming> </cpl> @ECHO OFF IF %SIP_FROM%==sip:wxt@cs.columbia.edu GOTO BLOCK GOTO EXIT :BLOCK echo SIP/2.0 486 Busy :EXIT • CPL • SIP CGI • SIP Servlet public boolean doInvite(SipRequest req) { SipResponse res = req.createResponse(); res.setStatus(486); res.send(); return true; }
#! /usr/bin/env perl -w # Reject messages whose 'From:' matches 'sip:hgs@' by # responding with 486 Busy, redirect the others to voicemail print "SIP/2.0 100 Wait\n\n"; if (defined $ENV{SIP_FROM} && $ENV{SIP_FROM} =~ "sip:hgs@") { print "SIP/2.0 486 Don't disturb, I am working\n\n"; } else { print "SIP/2.0 302 Redirect\n"; print "Contact: sip:xiaotaow\@voicemail.cs.columbia.edu\n\n"; }
Describe 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 good for end system services.
Network Services v.s. End System Services End System Service Language
End system service languages • 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 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 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> • </notifying> • </esml>
SIP user agent SIP Device agent Presence agent Basic user agent presence Generic Media UI x10 vcr ESML packages im email web calendar conference
Extend ‘general’ 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>
Compare to other languages • CPL • SCML • CCXML • CPML, TML, CallXML
Conclusion and future work • Service partition between end system services and network services • Feature interaction
Thank you! The End.