* phoenix group † diku labri – inria, franceuniversity of copenhagen, denmark

22
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, France University of Copenhagen, Denmark {palix, consel, reveillere}@labri.fr [email protected]

Upload: osma

Post on 19-Jan-2016

33 views

Category:

Documents


0 download

DESCRIPTION

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, reveillere}@[email protected]. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

A Stepwise Approach to Developing Languages for SIP Telephony Service Creation

Nicolas Palix*, Charles Consel*, Laurent Réveillère*, Julia Lawall†

* Phoenix Group † DIKULaBRI – INRIA, France University of Copenhagen, Denmark

{palix, consel, reveillere}@labri.fr [email protected]

Page 2: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

2

Introduction

SIP telephony services

Enriched telephony services• Address book

• Calendar

• Email

• CRM

Legacy technologies• General-purpose languages

– Large and complex low-level platform APIs

– Error-prone

• Scripting languages

– High-level

– Dedicated to the telephony domain

Page 3: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

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?

Page 4: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

4

Our Approach

SPL

SIPVirtual Machine

SIP Platform

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm wopi ne;o

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm wopi ne;o

Domain Specific Language

• Simple and expressive• Reflects the SIP VM

abstractions• Formally defined

• Static semantics• Dynamic semantics

Domain SpecificSIP 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

Page 5: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

5

DialogDialog

SIPVirtual Machine

SIP Platform

1st Step: A SIP Virtual Machine

INVITEINVITEINVITE

INVITEREINVITEINVITE

• Refines SIP messages in

events

• Manages sessions

BYE

BYE

InternetInternet

SIP Messages

Virtual Machine Events

Page 6: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

6

Registration

Service

INVITE REINVITE

Dialog Dialog

SIPVirtual Machine

SIP Platform

1st 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

REGISTERInternetInternet

REGISTERunregisterdeployundeploy

Page 7: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

7

SPL

response incoming INVITE() { […] response resp = forward; if (resp == /ERROR) { resp = forward 'sip:[email protected]'; } return resp;}

SIPVirtual Machine

SIP Platform

2nd Step: The Session Processing Language

INVITE

INVITE

INVITE

INVITE

BUSY

BUSY

INVITEsecretary

INVITEsecretary

OK

OK

OK

InternetInternet

Multimedia connection

OK

Page 8: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

8

2nd Step: The Session Processing Language

service hotline {...processing {

uri<100> employees = <>;

void deploy() {...}void undeploy() {...}

registration {...

response outgoing REGISTER() {uri employee = FROM;push employees employee;return forward;

}...

dialog { ...response incoming INVITE() {

return forward employees;}

}}

}}

Page 9: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

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

Page 10: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

10

3rd 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 analysese.g. forward use SPL

SIPVirtual Machine

SIP Platform

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm wopi ne;o

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm wopi ne;o

Page 11: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

11

Static semantics: Type-Checking

dialog {uri caller;time start;

response incoming INVITE() { caller = FROM;

return forward;}

void incoming ACK(){if(caller == 'sip:[email protected]')

log(“Personal call”);start = getTime();

}

response BYE() {string duration = time_to_string(getTime() – start);log(“Call: ”+ duration +” ”+uri_to_string(caller));return forward;

}}

Page 12: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

12

SPL

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm 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

SIPVirtual Machine

SIP Platform OK

InternetInternet

OK

forward

Page 13: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

13

response incoming INVITE() { […] response r = forward; if (r == /ERROR) { r = forward 'sip:[email protected]'; return r; }else { return r; }}

response Some(incoming) INVITE {response r;r = fwd None;cond(r == /ERROR,

r = fwd Some (sip:[email protected]);return r,return r)

}

Service Analyses - forward Use Example

Abstract syntax

Concrete syntax

Page 14: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

14

forward Use Analysis for a Valid Service

Internet

Internet

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 ([email protected]);return r,return r

)

}

(r, ) True

Page 15: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

15

response incoming INVITE() { […] response r = forward; if (r == /ERROR) {

return r; } else { r = forward 'sip:[email protected]'; return r; }}

response incoming INVITE() { […] response r = forward; if (r == /ERROR) { r = forward 'sip:[email protected]'; return r; } else { return r; }}

Service Analyses - forward Use Example

Page 16: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

16

forward Use Analysis for an Invalid Serviceresponse Some(incoming) INVITE {response r;r = fwd None;cond(r == /ERROR,

return r,r = fwd Some ([email protected]);

return r)

}

Internet

Internet

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

Page 17: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

17

3rd 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 analysese.g. forward use SPL

SIPVirtual Machine

SIP Platform

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm wopi ne;o

DsadsadfmsdfklsdmfolmfosfnSdadadfdklsfjsdofmnsdklfjsdfDadadadflsdfnsdk

SdasdddfksdnfmklsdjfnksDsadsadeiwqodndiofgwjr9timnfDsadsaderjfrtjwfnsddaodnqiSdadadmfodsfmnrjewifjmnfjkldfndadadajnfilsdfnwSdasdddkfnsfnsifuwnfisdnDsadsadfs,fpjwotijwogjsgDsadsad,mfiopjfowifmniouneSdadadspfmoiwerfmnrowimfDadadapeork03qrjfm wopi ne;o

Page 18: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

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 ImplementationFrom The Dynamic Semantics

Page 19: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

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

Page 20: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

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

Page 21: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

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

Page 22: * Phoenix Group †  DIKU LaBRI – INRIA, FranceUniversity of Copenhagen, Denmark

22

Thank You For Your Attention !

http://phoenix.labri.fr/software/spl/