SIP Research at Columbia University

Slides:



Advertisements
Similar presentations
SIP, Presence and Instant Messaging
Advertisements

SIP, Firewalls and NATs Oh My!. SIP Summit SIP, Firewalls and NATs, Oh My! Getting SIP Through Firewalls Firewalls Typically.
SIP and Instant Messaging. SIP Summit SIP and Instant Messaging What Does Presence Have to Do With SIP? How to Deliver.
SIP Servlets. SIP Summit SIP Servlets Problem Statement Want to enable construction of a wide variety of IP telephony.
IM May 24, 2000 Introduction to SIP Jonathan Rosenberg Chief Scientist.
Fall VoN 2000 SIP Servers SIP Servers: A Buyers Guide Jonathan Rosenberg Chief Scientist.
Comparison of SIP Proxy and Redirect Servers
Executional Architecture
SOAP.
Voice over IP Fundamentals
Agenda Introduction Requirements Architecture Issues Implementation Q/A Kundan Singh and Henning Schulzrinne, Columbia University.
SIP.edu : OpenSER in an academic environment OpenSER SUMMIT - VON – Berlin 2006.
1 Improving the Performance of Distributed Applications Using Active Networks Mohamed M. Hefeeda 4/28/1999.
G O B E Y O N D C O N V E N T I O N WORF: Developing DB2 UDB based Web Services on a Websphere Application Server Kris Van Thillo, ABIS Training & Consulting.
Cmpe 491 Special Project In Computer Engineering SIP User Agent In JAVA Alp Eren YILMAZ & Serdar YALÇINKAYA.
1.Alice (caller) calls Bob 2.The SIP server forks the call to Bob’s phone and the mail server 3.After 10 seconds, the mail server sets up RTSP sessions.
12/05/2000CS590F, Purdue University1 Sip Implementation Protocol Presented By: Sanjay Agrawal Sambhrama Mundkur.
Internet Telephony Helen J. Wang Network Reading Group, Jan 27, 99 Acknowledgement: Jimmy, Bhaskar.
IRT Lab IP Telephony Columbia 1 Henning Schulzrinne Wenyu Jiang Sankaran Narayanan Xiaotao Wu Columbia University Department of Computer Science.
SIP Programming : SIP has texture encoding feature. [1] SIP allows third parties or user to program SIP follows HTTP programming model.
SIMPLEStone – A presence server performance benchmarking standard SIMPLEStone – A presence server performance benchmarking standard Presented by Vishal.
Agenda Introduction to 3GPP Introduction to SIP IP Multimedia Subsystem Service Routing in IMS Implementation Conclusions.
Session Initialization Protocol (SIP)
Understanding and Managing WebSphere V5
SIP Server Scalability IRT Internal Seminar Kundan Singh, Henning Schulzrinne and Jonathan Lennox May 10, 2005.
SMTP PROTOCOL CONFIGURATION AND MANAGEMENT Chapter 8.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public 1 Version 4.1 ISP Services Working at a Small-to-Medium Business or ISP – Chapter 7.
CINEMA’s UbiComp Subsystem Stefan Berger and Henning Schulzrinne Department of Computer Science Columbia University
IP telephony overview and demonstration
1 Detecting Script-to-Script Interactions in Call Processing Language Masahide Nakamura, Ken-ichi Matsumoto, Grad. School of Information Science, Nara.
Networks – Network Architecture Network architecture is specification of design principles (including data formats and procedures) for creating a network.
1 © NOKIA 1999 FILENAMs.PPT/ DATE / NN SIP Service Architecture Markus Isomäki Nokia Research Center.
Call Control with SIP Brian Elliott, Director of Engineering, NMS.
Session Initiation Protocol (SIP). What is SIP? An application-layer protocol A control (signaling) protocol.
Introduction to JavaServer Pages. 2 JSP and Servlet Limitations of servlet  It’s inaccessible to non-programmers JSP is a complement to servlet  focuses.
Chapter 6 Server-side Programming: Java Servlets
Presented By Team Netgeeks SIP Session Initiation Protocol.
1 CS122B: Projects in Databases and Web Applications Spring 2015 Notes 03: Web-App Architectures Professor Chen Li Department of Computer Science CS122B.
VoN September ‘98 1 9/17/98 VoN Standards Update Jonathan Rosenberg Bell Laboratories September 17, 1998.
Rhodes University 29 October 2002,Robert V MasangoCopyright 2002, Rhodes University, SIP User SIP User Agent The IRT is the oldest of the New York City.
Project Objectives A multi-function programmable SIP user agent for multimedia communications, such as audio, video, white board, desktop sharing, shared.
The Client-Server Model And the Socket API. Client-Server (1) The datagram service does not require cooperation between the peer applications but such.
Reliable and Scalable Internet Telephony Kundan Singh and Henning Schulzrinne Internet Real Time Lab – Internal Talk Sept 24, 2004.
Core VoIP and 911 issues and alternatives Henning Schulzrinne Columbia University August 2003.
JS (Java Servlets). Internet evolution [1] The internet Internet started of as a static content dispersal and delivery mechanism, where files residing.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
ASP-2-1 SERVER AND CLIENT SIDE SCRITPING Colorado Technical University IT420 Tim Peterson.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
The Session Initiation Protocol - SIP
Basics of the Domain Name System (DNS) By : AMMY- DRISS Mohamed Amine KADDARI Zakaria MAHMOUDI Soufiane Oujda Med I University National College of Applied.
1 Personal Mobility Management for SIP-based VoIP Services 王讚彬 國立台中教育大學資訊工程學系
Cofax Scalability Document Version Scaling Cofax in General The scalability of Cofax is directly related to the system software, hardware and network.
Postech DP&NM Lab Session Initiation Protocol (SIP) Date: Seongcheol Hong DP&NM Lab., Dept. of CSE, POSTECH Date: Seongcheol.
Service Control Using SIP in 3GPP’s IP Multimedia Subsystem (IMS) Xin Chen Fujitsu Laboratories of Europe LTD
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
CS122B: Projects in Databases and Web Applications Spring 2017
SIP Programming : SIP has texture encoding feature.[1]
CS122B: Projects in Databases and Web Applications Winter 2017
SIP-based VoiceXML browser (sipvxml)
IP Telephony (VoIP).
Netscape Application Server
SIP based VoiceXML browser
Deploying IP Telephony
Internet Multimedia Conferencing: What now?
Working at a Small-to-Medium Business or ISP – Chapter 7
Working at a Small-to-Medium Business or ISP – Chapter 7
Working at a Small-to-Medium Business or ISP – Chapter 7
CS122B: Projects in Databases and Web Applications Winter 2018
CS122B: Projects in Databases and Web Applications Spring 2018
CS122B: Projects in Databases and Web Applications Winter 2019
Presentation transcript:

SIP Research at Columbia University Henning Schulzrinne (with Kundan Singh, Jonathan Lennox and other members of the IRT lab) Dept. of Computer Science Columbia University (IBM Research, Feb. 15, 2005)

Overview What’s different? SIPstone Server profiling Service creation Future plans

Internet telephony (SIP: Session Initiation Protocol) alice@yahoo.com yahoo.com example.com bob@example.com REGISTER INVITE 129.1.2.3 DNS 192.1.2.4 DB Unlike PSTN, call stateless proxies. DNS Routing (BGP, OSPF) Link connection Software failure QoS

Basic SIP message flow

What’s different? SIP header format ~ HTTP but: not single request-response provisional responses forking insignificant (constant) body sizes multiple transports: UDP, TCP, SCTP possibly encrypted body (S/MIME) database-backed translation script execution still rare

Architecture differences bob@a.com  128.59.16.5 bob@x.a.com bob@y.a.com parse TCP parse UDP TCP SCTP lookup update map fork & wait log

SIP network architecture Scalability requirement depends on role Cybercafe ISP IP network IP phones GW ISP MG SIP/MGC MG SIP/PSTN GW SIP/MGC Carrier network MG Mention about requirements in #customers. GW IP PSTN PBX PSTN phones T1 PRI/BRI PSTN

SIPstone Model typical proxy usage Five tests: registration outbound proxy redirect proxy 480 proxy 200 Increase load until failure rate above threshold requires response within 2 seconds (for proxy 200) transaction failure probability 1% Combined metric: SIPstone-A see http://www.sipstone.org for details

SIPstone examples

Server redundancy Known techniques Client-based Cisco phones: primary and backup proxy DNS NAPTR, SRV IP address takeover Database redundancy

Server redundancy The problem: failure or overload REGISTER INVITE REGISTER INVITE Replicate registration or search on call

Scalability Load sharing: redundant proxies and databases REGISTER Write to D1 & D2 INVITE Read from D1 or D2 Database write/ synchronization traffic becomes bottleneck P1 REGISTER D1 P2 D2 With MySQL 4.0 not possible to do database replication since write can happen to any. So each SIP server must write to all Ds. INVITE P3

Scalability Load sharing: divide the user space Proxy and database on the same host Stateless proxy can become overloaded Use many Hashing Static vs dynamic P1 D1 a-h P2 D2 i-q Any study on dynamic hashing for web? What are the issues with dynamic hashing: transfer registrations to new DB. P3 D3 r-z

Scalability Comparison of the two designs a-h D1 D1 Low reliability High scale P2 P2 i-q D2 D2 P3 P3 r-z D2 Total time per DB ((tr/D)+1)TN = (A/D) + B ((tr+1)/D)TN = (A/D) + (B/D) How derived: (a) writes = NT, total read = rN.tT (b) total writes = NT, total read = rN.tT D = number of database servers N = number of writes (REGISTER) r = #reads/#writes = (INV+REG)/REG T = write latency t = read latency/write latency

Reliability and scalability Two stage architecture for CINEMA a*@example.com a1 Master a.example.com _sip._udp SRV 0 0 a1.example.com SRV 1 0 a2.example.com s1 a2 Slave sip:bob@example.com s2 sip:bob@b.example.com b*@example.com Master b.example.com _sip._udp SRV 0 0 b1.example.com SRV 1 0 b2.example.com s3 b1 One group can become backup for other group. Slave example.com _sip._udp SRV 0 40 s1.example.com SRV 0 40 s2.example.com SRV 0 20 s3.example.com SRV 1 0 ex.backup.com ex b2 Request-rate = f(#stateless, #groups) Bottleneck: CPU, memory, bandwidth? Failover latency: ?

Reliability and scalability Analysis, simulation and measurement proposal Rp Mp a1 Master Rs Ms P=1+1 s1 a2 Slave S=3  = R + P REGISTER+ INVITE, etc B=2 s2 /B Master r, p s3 s b1 Slave ex b2 When is stateless proxy stage needed What are the optimal values for S,B,P for required scalability (1-10 million BHCA) and reliability (99.999%) using commodity hardware

High availability Failover in our test bed - CINEMA Web scripts Web scripts D1 D2 Master/ slave Slave/ master replication P1 P2 MySQL 4.0 has no locking protocol between master and slave. They proposed for 5.0 but not done yet. So only master should be updated. But if slave is updated when master is running, there may be problem. Mostly not visible: SIP register are additive. If contact is added to D1 and removed from D2, race condition. But primary is preferred over secondary so all replication happens D1 to D2 unless D1 is down. Make sure DB are consistent before failed server is brought up. MySQL Cluster has delivered five 9s—in other words, 99.999 percent—availability in testing, according to company officials. That works out to five minutes of downtime per year. The technology has been tested on as many as 48 nodes, with failover response times running between five and 10 milliseconds, according to MySQL Vice President of Marketing Zack Urlocker. phone.cs.columbia.edu sip2.cs.columbia.edu REGISTER _sip._udp SRV 0 0 5060 phone.cs.columbia.edu SRV 1 0 5060 sip2.cs.columbia.edu proxy1 = phone.cs backup = sip2.cs

Service creation Tailor a shared infrastructure to individual users traditionally, only vendors (and sometimes carriers) learn from web models programmer, carrier end user network servers SIP servlets, sip-cgi CPL end system VoiceXML VoiceXML (voice), LESS

sip-cgi web common gateway interface (cgi): oldest (and still most commonly used) interface for dynamic content generation web server invokes process and passes HTTP request via stdin (POST body) environment variables  HTTP headers, URL arguments as POST body or GET headers (?arg1=var1&arg2=var2) new process for each request  not very efficient but easy to learn, robust (no state) support from just about any programming language (C, Perl, Tcl, Python, VisualBasic, ...) Adapt cgi model to SIP  sip-cgi RFC 3050

sip-cgi examples Block *@vinylsiding.com: Make calls from boss urgent: if (defined $ENV{SIP_FROM} && $ENV{SIP_FROM} =~ "sip:*@vinylsiding.com") { print "SIP/2.0 600 I can't talk right now\n\n"; } Make calls from boss 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";

SIP Servlets Direct Application of HTTP servlet Model to SIP Car File Direct Application of HTTP servlet Model to SIP Java-based API Telecommunications application is a set of SIP (and HTTP!) servlets SIP servlets process a particular SIP request or response Lifecycle managed by container SIP servlets can create and access session data, call data, transaction data SIP servlet container provides same functions as http container CAR file equivalent of WAR file Developer SIP Server J. Rosenberg, SIP Summit 2001

What is a SIP Servlet? Servlet engine handles the messy details of SIP Java interface Defines methods that are callbacks when certain events occur doInvte() doBYE() doResponse() Application writer implements servlet class, fills in methods with own code Servlets don’t store state – domain objects are used (later) Servlet can instruction container to Proxy a request Initiate a new request Forward a response Generate a response Servlet engine handles the messy details of SIP Call-Ids, tags, retransmissions, record-routes, vias… Servlet has access to important fields of SIP messages To, From, Request-URI, Contact, body J. Rosenberg, SIP Summit 2001

Example SIP Servlet public class MyServlet implements SipServlet { public void doInvite(SipServletRequest req, SipServletResponse res) { req.getProxy(true).proxy(“sip:user@host”; } J. Rosenberg, SIP Summit 2001

Definition of Servlet Mappings Single server supports many applications When a SIP INVITE arrives, which one (or ones) process the request?? Servlet mappings are rules that create bindings from SIP messages to servlet classes Based on expression matching in fields of message Servlet mappings can be Set up by application deployer Set by application writer Class 1 Rule Match INVITE Class 2 Class 3 Class 4 Rule DB J. Rosenberg, SIP Summit 2001

Deployment Descriptors Third party model requires information to be conveyed from writer to deployer beyond just code Deployment descriptor fills this need Descriptive names and usage of classes Name and usage of entire application Servlet mappings Context parameters References to resources needed by applications EJB Homes JNDI contexts Session timeouts Converged Archive (CAR) File JAR file with specific structure Used to package entire application into one bundle Contains Servlet classes Deployment descriptor Static content HTTP Servlets use WAR file (Web Archive) CAR file is superset of WAR J. Rosenberg, SIP Summit 2001

Relationship to JAIN SIP JAIN SIP is a generic, low-level interface for accessing SIP services Can be used in Clients Servers Gateways Focuses purely on the protocol Complete access to SIP capabilities Supports transactions only SIP Servlet Container is a particular application of JAIN SIP Servlet Servlet SIP Servlet API SIP Servlet Container JAIN SIP SIP Protocol J. Rosenberg, SIP Summit 2001

Relationship to JAIN SIP Servlets focus on high volume carrier grade servers Add significant, non-SIP protocol functions Lifecycle management Domain objects Context and configuration Deployment descriptors Archive files Synchronization primitives Security Add significant SIP protocol functions Construction of requests and responses from domain objects Hide many parts of JAIN SIP Direct access to many headers is not provided Write access to most everything is often restricted Servlets should be defined to allow a SIP container to be built using JAIN SIP SIP Objects in Servlet API defined with interfaces that match JAIN SIP signatures Cannot directly expose JAIN SIP objects, though

Call Processing Language (CPL) XML-based “language” for processing requests intentionally restricted to branching and subroutines no variables (may change), no loops thus, easily represented graphically and most bugs can be detected statically termination assured mostly used for SIP, but protocol-independent integrates notion of calendaring (time ranges) structured tree describing actions performed on call setup event top-level events: incoming and outgoing

CPL Location set stored as implicit global variable Switches: operations can add, filter and delete entries Switches: address language time, using CALSCH notation (e.g., exported from Outlook) priority Proxy node proxies request and then branches on response (busy, redirection, noanswer, ...) Reject and redirect perform corresponding protocol actions Supports abstract logging and email operation

CPL example

CPL example <?xml version="1.0" ?> <!DOCTYPE call SYSTEM "cpl.dtd"> <cpl> <incoming> <lookup source="http://www.example.com/cgi-bin/locate.cgi?user=jones" timeout="8"> <success> <proxy /> </success> <failure> <mail url="mailto:jones@example.com&Subject=lookup%20failed" /> </failure> </lookup> </incoming> </cpl>

CINEMA policy framework User-location services implemented in the Columbia InterNet Extensible Multimedia Architecture (CINEMA) SIP proxy server Supports CPL and SIP CGI and Java SIP servlets Service execution environments and default server behaviors are defined as policies. Separated into user policies (implement service execution environments) and transaction policies (implement default server behavior) User policies can defer handling to transaction policies Policies are defined (abstractly) as classes Methods called for requests, responses, or timeouts for at transaction Methods can invoke actions to proxy or cancel requests, generate or forward responses, or set timeouts

A sample policy invocation

Reactive systems: event model for CINEMA Through version 1.21, the CINEMA SIP proxy used one thread per transaction This is quite inefficient; most transactions spend most of their time waiting for responses and timeouts. New model— reactive systems—changes this reactive systems represent different server operations: policy transaction core, client proxy, response retransmission All operations are represented as sending and receiving messages, and setting and triggering timers As much as possible, operations do not block can block as necessary: e.g., DNS resolution, or SIP CGI invocation Improved performance of SIP proxy server by nearly a factor of 5

Memory management Old model: malloc/free for various data elements (+ valgrind) New model: transaction-based allocation allocate block on new transaction, free when completed Performance-neutral, but less likely to leak memory

Current server-related plans Performance impact of transport protocols UDP vs. TCP vs. TLS Parsing optimization for text protocols lazy parsing benefit of regularized syntax comparison to XML parsing Scaling impact of server architecture thread pool pure event dispatch Service creation impact SIP servlets vs. sip-cgi vs. CPL

Conclusion SIP servers are superficially similar to web servers but performance bottlenecks differ substantially Current emphasis: plain request handling Future problems: service creation presence impact of encryption and authentication