1 / 29

Programmable End System Services Using SIP

Programmable End System Services Using SIP. Xiaotao Wu, Henning Schulzrinne 2nd New York Metro Area Networking Workshop September 3rd, 2002. Agenda. Brief introduction to SIP SIP endpoints can perform service functions

webbmark
Download Presentation

Programmable End System Services Using SIP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programmable End System Services Using SIP Xiaotao Wu, Henning Schulzrinne 2nd New York Metro Area Networking Workshop September 3rd, 2002

  2. Agenda • 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

  3. 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

  4. Basic call setup • Phone sends INVITE; acts as UAC INVITE sip:alice@m2.home.com … To: sip:alice@home.com From: “Bob” <sip:bob@office.com> … c=IN IP4 135.180.144.33 m=audio 8000 RTP/AVP 0 5 8 office.com alice m2.home.com bob

  5. Basic call setup • Phone sends INVITE; acts as UAC • Alice’s phone rings; acts as a UAS User agent server SIP/2.0 180 Ringing office.com alice m2.home.com bob home.com

  6. Basic 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 office.com alice m2.home.com bob home.com SIP/2.0 200 OK … c=IN IP4 135.180.144.32 m=audio 9000 RTP/AVP 0 8

  7. Basic call setup • Encoded audio packets sent over RTP office.com alice bob home.com

  8. Basic call setup • Encoded audio packets sent over RTP • When either party hangs up BYE is sent BYE sip:bob@office.com office.com alice bob home.com

  9. SIP beyond audio call • Presence extensions • SUBSCRIBE to request notifications • NOTIFY when event occurs • Instant messaging • MESSAGE with text body • Device control

  10. Today’s Endpoints • Processing ability • Graphical rendering • Storage capacity • Converged information

  11. SIP endpoints are more than IP-based POTS phones

  12. SIP promotes end system services • 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.

  13. SIP_FROM SIP_TO stdin CGI-PROXY-REQUEST stdout SIP 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

  14. 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"; } }

  15. 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 not match Call match actions CPL

  16. 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>

  17. SIP 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; } }

  18. Service SIP CGI ESML CPL Hardcoded module services engine engine engine Service Moderator SIP stack Services in sipc SIP messages

  19. Need 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

  20. Existing techniques for Network Services are not sufficient for End System Services

  21. Existing techniques for Network Services are not sufficient for End System Services

  22. Requirement 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

  23. 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

  24. 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> • </notification> • </esml>

  25. SIP user agent SIP Device agent Presence agent Basic user agent presence Generic Media UI x10 vcr ESML packages im email web calendar conference

  26. 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>

  27. ESML Service Creation ESML editor esml.xsl service.esml (template) xsl:if address is=$var XSLT configuration editor service.html translate.cgi service_foo.esml

  28. call connection connection address1 address2 Compare 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)

  29. Future work • Service partition between end system services and network services • Feature interaction

More Related