SIP Programming

Download Report

Transcript SIP Programming

SIP Programming :
• SIP has texture encoding feature.[1]
• SIP allows third parties or user to program
• SIP follows HTTP programming model
Programming Mechanisms:
• In order to develop services programmers needs APIs
• Three mechanisms suggested in IETF:[2]
– SIP Call Processing Language ( SIP – CPL )
– SIP Common Gateway Interface ( SIP – CGI )
– SIP Servlet
• Other efforts
– Parlay
– JAIN™
Call Processing Language (CPL) :
• Designed by the IETF to support sophisticated telephony services
– May be used by both SIP or H.323.
• XML based scripting language for describing controlling call services[3]
– Simple Syntax
– Extendible
– Easily edited by GUI tools
• Scripts runs on network SIP signaling server to create end user services
– Lightweight CPL interpreter is need to parser & validate scripts.
CPL Example :
A simple script that blocks anonymous callers [4];
<?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>
Common Gateway Interface (CGI) :
• Almost identical to HTTP CGI [5]
• Language independent ( Perl, Tcl, C, C++, ... )
– Any binary may be executed as a separate program
• Suitable for services that contains substantial web content
• Passes message parameters through environmental variables to a
separate program.
– More flexible but more risky
• Feb. 1, 2001: RFC 3050 (Common Gateway Interface for SIP)
published [6]
Java Servlets :
• Similar to HTTP servlets
• Instead of using a separate process, messages are passed to
a class
• The class runs within a JVM (Java Virtual Machine) on
server
• Security provided by Java
• Portable between OSs & servers
JAIN™ SIP API:
• Low level API that maps to IETF - RFC 2543
• Interfaces for services across circuit switched and packet
networks
• Three major objectives :
– Service Portability – Write Once Run Anywhere
– Network Converges – Any underlying network architecture
IP, ATM,Wireless,...
– Service Provider Access by Anyone
JAIN™ SIP API: ( Cont.)
• Three SIP APIs under JAIN initiative;
– JAIN™ SIP API (JSR 32) :
• Low level API for almost any signaling protocol ( SIP, H.323, ... )
• Requires extensive knowledge of SIP.
• Avaliable at Final Release, http://jcp.org/jsr/stage/final.jsp
– JAIN™ SIP Lite :
• High Level API for rapid application development
– Especially User Agent development
• Under development , http://jcp.org/jsr/detail/125.jsp
– SIP Servlets : [7]
• API for SIP servlets
• Under development, http://jcp.org/jsr/detail/116.jsp
Conclusion:
• As the arena become more & more crowded for service
providers, the choice of the appropriate service creation
mechanism inherently follows HTTP service creation
mechanisms and highly depends on different scenarios
where security,portability and performance have different
roles of importance.
References :
•
•
•
•
•
•
[1],[5] Sisalem D.,Kuthan J., Understanding SIP ,
Http://iptel.org/sip/siptutorial.pdf
[2] Programming SIP, http://www.sipcenter.com/aboutsip/progsip.htm
[3] Rosenberg D.J, Shockey R., The Session Initiation Protocol (SIP) ,
ComputerTelephony , June 2000
[4] A Spotlight on Call Processing Language, http://www.ubiquity.net/cpl.html
[6] News, http://www.cs.columbia.edu/~hgs/sip/
[7] Java Specification Request,JSR 116,SIP Servlet API,
http://jcp.org/jsr/detail/116.jsp