A Stepwise Approach to Developing Languages for SIP Telephony Service Creation Nicolas Palix*, Charles Consel*, Laurent Réveillère*, Julia Lawall * Phoenix.

Slides:



Advertisements
Similar presentations
Charles Consel 1, Fabien Latry 1, and Julien Mercadal 1 IPTComm – July Phoenix Research Group INRIA / LaBRI Staging Telephony.
Advertisements

You have been given a mission and a code. Use the code to complete the mission and you will save the world from obliteration…
2017/3/25 Test Case Upgrade from “Test Case-Training Material v1.4.ppt” of Testing basics Authors: NganVK Version: 1.4 Last Update: Dec-2005.
1. XP 2 * The Web is a collection of files that reside on computers, called Web servers. * Web servers are connected to each other through the Internet.
1 IDX. 2 What you will learn: What IDX is Why its important How to use it Tips and tricks Introduction Q & A.
IS 6116 Introduction – 10 Jan Lecturer Details Aonghus Sugrue Website: aonghussugrue.wordpress.com
Advanced Piloting Cruise Plot.
Chapter 16 Graphical User Interfaces
1 Graphical User Interface (GUI) Applications Abstract Windowing Toolkit (AWT) Events Handling Applets.
Chapter 7 System Models.
Program Verification: Theory and Practice Sriram K. Rajamani Microsoft Research India (with thanks to Tom Ball for material from his course)
1 Copyright © 2010, Elsevier Inc. All rights Reserved Fig 2.1 Chapter 2.
By D. Fisher Geometric Transformations. Reflection, Rotation, or Translation 1.
Business Transaction Management Software for Application Coordination 1 Business Processes and Coordination.
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
1 Copyright © 2005, Oracle. All rights reserved. Introducing the Java and Oracle Platforms.
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
Jeopardy Q 1 Q 6 Q 11 Q 16 Q 21 Q 2 Q 7 Q 12 Q 17 Q 22 Q 3 Q 8 Q 13
Title Subtitle.
Introduction to HTML, XHTML, and CSS
My Alphabet Book abcdefghijklm nopqrstuvwxyz.
0 - 0.
DIVIDING INTEGERS 1. IF THE SIGNS ARE THE SAME THE ANSWER IS POSITIVE 2. IF THE SIGNS ARE DIFFERENT THE ANSWER IS NEGATIVE.
Addition Facts
1 Processes and Threads Creation and Termination States Usage Implementations.
Around the World AdditionSubtraction MultiplicationDivision AdditionSubtraction MultiplicationDivision.
Visual Model-based Software Development EUD-Net Workshop, Pisa, Italy September 23 rd, 2002 University of Paderborn Gregor Engels, Stefan Sauer University.
All rights reserved © 2005, Alcatel Grid services over IP Multimedia Subsystem  Antoine Pichot, Olivier Audouin, Alcatel  GridNets ’06.
Communicating over the Network
4. Internet Programming ENG224 INFORMATION TECHNOLOGY – Part I
1 IP Telephony (VoIP) CSI4118 Fall Introduction (1) A recent application of Internet technology – Voice over IP (VoIP): Transmission of voice.
BT Wholesale October Creating your own telephone network WHOLESALE CALLS LINE ASSOCIATED.
1 Java Card Technology Prepared by:Ali Toyserkani Adopted from: Introduction to Java Card Technology C. Enrique Ortiz.
Chair of Software Engineering Einführung in die Programmierung Introduction to Programming Prof. Dr. Bertrand Meyer Exercise Session 5.
1 The phone in the cloud Utilizing resources hosted anywhere Claes Nilsson.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 31 Slide 1 Service-centric Software Engineering.
ABC Technology Project
Megastore: Providing Scalable, Highly Available Storage for Interactive Services. Presented by: Hanan Hamdan Supervised by: Dr. Amer Badarneh 1.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Tutorial 12 – Security Panel Application Introducing.
Johan Garcia Karlstads Universitet Datavetenskap 1 Datakommunikation II Signaling/Voice over IP / SIP Based on material from Henning Schulzrinne, Columbia.
1 What is JavaScript? JavaScript was designed to add interactivity to HTML pages JavaScript is a scripting language A scripting language is a lightweight.
© Charles van Marrewijk, An Introduction to Geographical Economics Brakman, Garretsen, and Van Marrewijk.
CAR Training Module PRODUCT REGISTRATION and MANAGEMENT Module 2 - Register a New Document - Without Alternate Formats (Run as a PowerPoint show)
Object-Oriented Programming. 2 An object, similar to a real-world object, is an entity with certain properties, and with the ability to react in certain.
IONA Technologies Position Paper Constraints and Capabilities for Web Services
Squares and Square Root WALK. Solve each problem REVIEW:
4 Oracle Data Integrator First Project – Simple Transformations: One source, one target 3-1.
1.A computer game is an example of A.system software; B.a compiler; C.application software; D.hardware; E.none of the above. 2.JVM stands for: A.Java Virtual.
Implementation Architecture
Chapter 5 Test Review Sections 5-1 through 5-4.
GG Consulting, LLC I-SUITE. Source: TEA SHARS Frequently asked questions 2.
Addition 1’s to 20.
25 seconds left…...
XP New Perspectives on Browser and Basics Tutorial 1 1 Browser and Basics Tutorial 1.
REGISTRATION OF STUDENTS Master Settings STUDENT INFORMATION PRABANDHAK DEFINE FEE STRUCTURE FEE COLLECTION Attendance Management REPORTS Architecture.
Week 1.
Chapter 9 Interactive Multimedia Authoring with Flash Introduction to Programming 1.
Lilian Blot CORE ELEMENTS SELECTION & FUNCTIONS Lecture 3 Autumn 2014 TPOP 1.
We will resume in: 25 Minutes.
1 PART 1 ILLUSTRATION OF DOCUMENTS  Brief introduction to the documents contained in the envelope  Detailed clarification of the documents content.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 31 Slide 1 Service-centric Software Engineering 1.
16/02/06Internet based monitoring and control of embedded systems 1 EES.5413 February 16, 2005 Remi Bosman System Architecture & Networking Department.
Modeling Main issues: What do we want to build How do we write this down.
THIS IS THE WAY ENUM Variants Jim McEachern Carrier VoIP Standards Strategy THIS IS.
From Model-based to Model-driven Design of User Interfaces.
1 Programming Languages (CS 550) Mini Language Interpreter Jeremy R. Johnson.
Cmpe 491 Special Project In Computer Engineering SIP User Agent In JAVA Alp Eren YILMAZ & Serdar YALÇINKAYA.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Richard Rodger1/20 SIP Sanity A rapid-prototyping and validation environment for SIP* applications *Session Initiation Protocol; RFC 3261 Richard Rodger.
ENSEIRB, FranceCall/CSeptember 29, 2003 Call/C: A Domain Specific Language for IP Telephony Services Claus Brabrand [ joint work with Charles Consel &
Presentation transcript:

A Stepwise Approach to Developing Languages for SIP Telephony Service Creation Nicolas Palix*, Charles Consel*, Laurent Réveillère*, Julia Lawall * Phoenix Group DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark {palix, consel,

2 Introduction SIP telephony services Enriched telephony services Address book Calendar CRM Legacy technologies General-purpose languages –Large and complex low-level platform APIs –Error-prone Scripting languages –High-level –Dedicated to the telephony domain

3 Issues Legacy technologies Formal semantics unavailable Reference implementation may be unavailable Service developers Must study reference implementation Must not corrupt the underlying platform Platform developers Difficult to port a language to another run-time system Difficult to provide another implementation of a run-time system How to design and develop a scripting language dedicated to the development of robust telephony services?

4 Our Approach SPL SIP Virtual Machine SIP Platform Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o Domain Specific Language Simple and expressive Reflects the SIP VM abstractions Formally defined Static semantics Dynamic semantics Domain Specific SIP Virtual Machine Raises the abstraction level Consists of a set of events and a state Focuses on sessions Static semantics Type checker Service analyses Dynamic semantics Defines SPL runtime behavior Eases implementation Verifies runtime properties

5 Dialog SIP Virtual Machine SIP Platform 1 st Step: A SIP Virtual Machine INVITE REINVITE INVITE Refines SIP messages in events Manages sessions BYE Internet SIP Messages Virtual Machine Events

6 Registration Service INVITE REINVITE Dialog SIP Virtual Machine SIP Platform 1 st Step: A SIP Virtual Machine INVITE Refines SIP messages in events Manages sessions Organizes sessions hierarchically Introduces SIP VM events Stores and restores service state BYE REGISTER Internet REGISTER unregister deploy undeploy

7 SPL response incoming INVITE() { […] response resp = forward; if (resp == /ERROR) { resp = forward } return resp; } SIP Virtual Machine SIP Platform 2 nd Step: The Session Processing Language INVITE BUSY INVITE secretary INVITE secretary OK Internet Multimedia connection OK

8 2 nd Step: The Session Processing Language service hotline {... processing { uri employees = <>; void deploy() {...} void undeploy() {...} registration {... response outgoing REGISTER() { uri employee = FROM; push employees employee; return forward; }... dialog {... response incoming INVITE() { return forward employees; }

9 dialog { response incoming INVITE() { response r;... if (...) {... return r branch hotline; } else {... return r branch personal; } void incoming ACK(){ branch hotline {... } branch default {... } } response BYE() { branch hotline {... } branch personal {... } branch default {... } } Advanced features: Inter-Event Control Flow INVITE INVITE request ACK request ACK BYE request BYE

10 3 rd Step: Formal Semantics Dynamic semantics Defines SPL runtime behavior Eases implementation Verifies runtime properties Static semantics How to verify properties which are critical for the telephony domain? Type-checking Service analyses e.g. forward use SPL SIP Virtual Machine SIP Platform Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o

11 Static semantics: Type-Checking dialog { uri caller; time start; response incoming INVITE() { caller = FROM; return forward; } void incoming ACK(){ if(caller == log(Personal call); start = getTime(); } response BYE() { string duration = time_to_string(getTime() – start); log(Call: + duration + +uri_to_string(caller)); return forward; }

12 SPL Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o Static semantics: Service Analyses Example of property to ensure: forward use When a positive response is received, no additional forwarding operation is allowed SIP Virtual Machine SIP Platform OK Internet OK forward

13 response incoming INVITE() { […] response r = forward; if (r == /ERROR) { r = forward return r; }else { return r; } response Some(incoming) INVITE { response r; r = fwd None; cond(r == /ERROR, r = fwd Some return r, return r) } Service Analyses - forward Use Example Abstract syntax Concrete syntax

14 forward Use Analysis for a Valid Service Interne t Call Environment Safe True (r, error)True (r, success)True (r, ) True (r, error)True (r, ) True (r, ) True (r, success)True response Some(incoming) INVITE { response r; r = fwd None; cond( r == /ERROR, r = fwd Some return r, return r ) } (r, ) True

15 response incoming INVITE() { […] response r = forward; if (r == /ERROR) { return r; } else { r = forward return r; } response incoming INVITE() { […] response r = forward; if (r == /ERROR) { r = forward return r; } else { return r; } Service Analyses - forward Use Example

16 forward Use Analysis for an Invalid Service response Some(incoming) INVITE { response r; r = fwd None; cond(r == /ERROR, return r, r = fwd Some return r ) } Interne t Call Environment Safe True (r, error)True (r, success)True (r, ) True (r, error)True (r, success)False (r, error)True (r, ) False (r, success)False

17 3 rd Step: Formal Semantics Dynamic semantics Defines SPL runtime behavior Eases implementation Verifies runtime properties Static semantics How to verify properties which are critical for the telephony domain? Type-checking Service analyses e.g. forward use SPL SIP Virtual Machine SIP Platform Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o Dsadsadfmsdfklsdmfolmfosfn Sdadadfdklsfjsdofmnsdklfjsdf Dadadadflsdfnsdk Sdasdddfksdnfmklsdjfnks Dsadsadeiwqodndiofgwjr9timnf Dsadsaderjfrtjwfnsddaodnqi Sdadadmfodsfmnrjewifjmnfjkldfn dadadajnfilsdfnw Sdasddd kfnsfnsifuwnfisdn Dsadsadfs,fpjwotijwogjsg Dsadsad,mfiopjfowifmnioune Sdadadspfmoiwerfmnrowimf Dadadapeork03qrjfm wopi ne;o

18 let interpret message phi sigma service = match message with (I_INVITE(rid, did), direction, rqid) -> let address = [service;(Reg, rid);(Dial, did)] in let branch = lookup_branches(sigma, parent(address)) in let sigma' = create_session(phi, sigma, address, branch, Some(If.UNINVITE)) in let (m_par, decls, stmts, envs, sigma'') = prepare_handler(phi, sigma', address, direction, If.INVITE) in let tau = (sigma'', address) in let rho = (envs, (m_par, rqid), []) in spl_handler_body tau rho ([]::[[T_INITIAL_INVITE(phi)]]) (decls, stmts) A Direct Interpreter Implementation From The Dynamic Semantics

19 Dynamic Semantics About 100 semantic rules Documentation To understand program behavior To implement the SPL interpreter Language independent Straightforward implementation 1 week in OCaml 2 weeks in JAVA

20 Conclusion Stepwise approach Domain-Specific virtual machine Domain-Specific Language Formal semantics Benefits High-level language Robust and verifiable services Straightforward implementation The Session Processing Language A call queuing service in about 100 lines A SIP application server based on JAIN SIP API

21 Ongoing Work Other SPL properties Feature Interactions –Multiple users –Multiple services Inter-event control flow reachability Optimizations (Pantachou) Composition language for ubiquitous services Rely on SIP network

22 Thank You For Your Attention !

23 Perspective – Optimization Opportunities Stateless service response incoming INVITE() { return /ERROR/CLIENT/BUSY_HERE; } response incoming INVITE() { return forward; } response incoming INVITE() { return forward }

24 Perspective - Optimization Opportunities response incoming INVITE() { […] response resp = forward; if (resp == /ERROR) { resp = forward } return resp; } Stateless service Transaction stateful Call stateful dialog { response incoming INVITE() { response r;... if (...) {... return r branch hotline; } else {... return r branch personal; } void incoming ACK(){ branch hotline {... } branch default {... } } response BYE() { branch hotline {... } branch personal {... } branch default {... } } response incoming INVITE() { return /ERROR/CLIENT/BUSY_HERE; }

25 service example { processing { dialog { INVITE() response incoming INVITE() { response r = forward ' '; if (r == /ERROR/CLIENT/BUSY_HERE) return forward ' '; else if (r == /ERROR) { if (FROM == ' ') return forward ' tel: '; return r; } public class Example implements SipListener { [...] private AddressFactory factory = getAddressFactory(); public void processRequest (RequestEvent requestEvent) { Request rq_request = requestEvent.getRequest(); SipProvider rq_sipProvider = (SipProvider) requestEvent.getSource(); String method = rq_request.getMethod(); [...] if (method.equals (Request.INVITE)) { SipURI uri = factory.createSipURI ( bob ", phone.example.com "); rq_request.setRequestURI (uri); ClientTransaction ct = rq_sipProvider.getNewClientTransaction(rq); ct.sendRequest (rq_request);... } public void processResponse (ResponseEvent responseEvent) { ClientTransaction rs_ct = responseEvent.getClientTransaction(); if (rs_ct != null) { Request rs_request = rs_ct.getRequest(); Response rs_response = responseEvent.getResponse(); SipProvider rs_sipProvider = (SipProvider) responseEvent.getSource(); String method = rs_request.getMethod(); rs_responseCode = rs_response.getStatusCode(); if (method.equals (Request.INVITE)) { if (rs_responseCode == 486) { SipURI uri = factory.createSipURI ( bob ", voic .example.com "); rs_request.setRequestURI (uri); rs_sipProvider.sendRequest (rs_request); } else if (rs_responseCode >= 300) { if (rs_request.getHeader("FROM").equals( ")) { TelURL tel = factory.createTelURL ( tel: "); rs_request.setRequestURI (tel); rs_sipProvider.sendRequest (rs_request); } else { rs_sipProvider.sendResponse (rs_response); }... } SPL JAIN SIP