the phoenix project - citi members, personal...
TRANSCRIPT
Research Proposal
The Phoenix Project
���������
��� ����
INRIA - LaBRIPhoenix Proposal Oct 20042
Personnel
� Faculty members (ex Compose)– Charles Consel, Prof., Dept of Telecom, ENSEIRB / LaBRI– Laurent Réveillère, Assoc. Prof., Dept of Telecom, ENSEIRB / LaBRI
� PhD students– Sapan Bhatia, INRIA and Région Aquitaine Fellowship (since 9/03) – Laurent Burgy, Région Aquitaine Fellowship (since 10/04)– Fabien Latry, INRIA Fellowship (since 10/04)– Mathieu Minard, Industrial Fellowship -- Thomson (since 10/02)– Nicolas Palix, INRIA Fellowship (since 10/04)
� External collaborator– Julia Lawall, DIKU, University of Copenhagen
INRIA - LaBRIPhoenix Proposal Oct 20043
Research Area
�������� �����
� ��� ����
� ��������
�������� �����
� ��� ����
� ��������
����������������
INRIA - LaBRIPhoenix Proposal Oct 20044
Requirements
�������� �����
� ��� ����
� ��������
�������� �����
� ��� ����
� ��������
����������������
� Software intensive� Robustness critical� Performance critical
INRIA - LaBRIPhoenix Proposal Oct 20045
Requirements
� Software intensive� Robustness critical� Performance critical
INRIA - LaBRIPhoenix Proposal Oct 20046
Requirements
� Hardware features� Network capabilities� Customer needs
� Software intensive� Robustness critical� Performance critical
INRIA - LaBRIPhoenix Proposal Oct 20047
Requirements
� Hardware features� Network capabilities� Customer needs
� Software intensive� Robustness critical� Performance critical
Research Issues� Low level and intricate� Multiple areas of expertise� Time-to-market
INRIA - LaBRIPhoenix Proposal Oct 20048
Requirements
� Commodity services� Safety, security, dependability…� Openness vs. robustness
� Software intensive� Robustness critical� Performance critical
INRIA - LaBRIPhoenix Proposal Oct 20049
Requirements
� Safety, security, dependability…� Commodity services� Openness vs. robustness
� Software intensive� Robustness critical� Performance critical
Research Issues� Correctness� Resource control� Security
INRIA - LaBRIPhoenix Proposal Oct 200410
Requirements
� Space and time� Multimedia activities� Multiple layers
� Software intensive� Robustness critical� Performance critical
INRIA - LaBRIPhoenix Proposal Oct 200411
Requirements
� Space and time� Multimedia activities� All levels
� Software intensive� Robustness critical� Performance critical
Research Issues� Time/space optimization� Activity specific� Multiple layers
INRIA - LaBRIPhoenix Proposal Oct 200412
Claim: Progr. Language = Enabling Technology
→ Language design→ Program analysis→ Program transformation
� Software intensive� Robustness critical� Performance critical
INRIA - LaBRIPhoenix Proposal Oct 200413
Claim: Progr. Language = Enabling Technology
� Language design� Program analysis� Program transformation
� DS notations & abstractions� High level� Concise
INRIA - LaBRIPhoenix Proposal Oct 200414
Claim: Progr. Language = Enabling Technology
� Language design� Program analysis� Program transformation
� Critical DS properties� Detected/guaranteed properties� Design parameters
INRIA - LaBRIPhoenix Proposal Oct 200415
Claim: Progr. Language = Enabling Technology
� Language design� Program analysis� Program transformation
� Time/space optimizations� DS analyses� DS optimizations
INRIA - LaBRIPhoenix Proposal Oct 200416
Required Expertise
� Programming languages� Software engineering� Systems� Networking� Telecommunications
INRIA - LaBRIPhoenix Proposal Oct 200417
Our Expertise
� Programming languages� Software engineering� Systems� Networking� Telecommunications
INRIA - LaBRIPhoenix Proposal Oct 200418
Our Expertise
� Programming languages� Software engineering� Systems� Networking� Telecommunications
� Program specialization� Domain-specific languages
INRIA - LaBRIPhoenix Proposal Oct 200419
Program Specialization
���������� �������� ��������������
�������������
���������
�������������
���������
��������������
������
����������
���������
��������������
������
�� �
��������������
�����������
��������
���������������� ��� �������
� ��������
INRIA - LaBRIPhoenix Proposal Oct 200420
An Example: Sockets
i nt t cp_mi ni _sendmsg ( st r uct sock * sk, voi d * msg, i nt si ze){
i nt t ocopy=0, copi ed=0;whi l e ( t ocopy = ( s i ze < sk- >t cp- >mss) ? si ze : sk- >t cp- >mss) {
i f ( copi ed = ( f r ee_space ( sk- >wr i t e_queue- >pr ev. space) ) ) {i f ( copi ed > t ocopy) copi ed = t ocopy;add_dat a ( sk- >wr i t e_queue. pr ev, msg, copi ed) ;s i ze = s i ze - copi ed; msg = msg + copi ed;
}el se {
st r uct skbuf f * skb = al l oc_new_skb( ) ;add_dat a( skb, msg, t ocopy) ;s i ze = s i ze - t ocopy; msg = msg + t ocopy;ent ai l ( sk- >wr i t e_queue, skb) ;
}}
r et ur n s i ze;}
INRIA - LaBRIPhoenix Proposal Oct 200421
An Example: Sockets
i nt t cp_mi ni _sendmsg ( st r uct sock * sk, voi d * msg, i nt si ze){
i nt t ocopy=0, copi ed=0;whi l e ( t ocopy = ( s i ze < sk- >t cp- >mss) ? si ze : sk- >t cp- >mss) {
i f ( copi ed = ( f r ee_space ( sk- >wr i t e_queue- >pr ev. space) ) ) {i f ( copi ed > t ocopy) copi ed = t ocopy;add_dat a ( sk- >wr i t e_queue. pr ev, msg, copi ed) ;s i ze = s i ze - copi ed; msg = msg + copi ed;
}el se {
st r uct skbuf f * skb = al l oc_new_skb( ) ;add_dat a( skb, msg, t ocopy) ;s i ze = s i ze - t ocopy; msg = msg + t ocopy;ent ai l ( sk- >wr i t e_queue, skb) ;
}}
r et ur n s i ze;}
������������������� ������������������������� ���������������������������
INRIA - LaBRIPhoenix Proposal Oct 200422
An Example: Sockets
i nt t cp_mi ni _sendmsg ( st r uct sock * sk, voi d * msg, i nt si ze){
i nt t ocopy=0, copi ed=0;whi l e ( t ocopy = ( s i ze < sk- >t cp- >mss) ? si ze : sk- >t cp- >mss) {
i f ( copi ed = ( f r ee_space ( sk- >wr i t e_queue- >pr ev. space) ) ) {i f ( copi ed > t ocopy) copi ed = t ocopy;add_dat a ( sk- >wr i t e_queue. pr ev, msg, copi ed) ;s i ze = s i ze - copi ed; msg = msg + copi ed;
}el se {
st r uct skbuf f * skb = al l oc_new_skb( ) ;add_dat a( skb, msg, t ocopy) ;s i ze = s i ze - t ocopy; msg = msg + t ocopy;ent ai l ( sk- >wr i t e_queue, skb) ;
}}
r et ur n s i ze;}
������������������� ������������������������� ���������������������������
INRIA - LaBRIPhoenix Proposal Oct 200423
An Example: Sockets
i nt t cp_mi ni _sendmsg ( st r uct sock * sk, voi d * msg, i nt si ze){
i nt t ocopy=0, copi ed=0;whi l e ( t ocopy = ( s i ze < sk- >t cp- >mss) ? si ze : sk- >t cp- >mss) {
i f ( copi ed = ( f r ee_space ( sk- >wr i t e_queue- >pr ev. space) ) ) {i f ( copi ed > t ocopy) copi ed = t ocopy;add_dat a ( sk- >wr i t e_queue. pr ev, msg, copi ed) ;s i ze = si ze - copi ed; msg = msg + copi ed;
}el se {
st r uct skbuf f * skb = al l oc_new_skb( ) ;add_dat a( skb, msg, t ocopy) ;s i ze = si ze - t ocopy; msg = msg + t ocopy;ent ai l ( sk- >wr i t e_queue, skb) ;
}}
r et ur n s i ze;}
������������������� ������������������������� ���������������������������
INRIA - LaBRIPhoenix Proposal Oct 200424
An Example: Sockets
i nt t cp_mi ni _sendmsg ( st r uct sock * sk, voi d * msg, i nt si ze){
i nt t ocopy=0, copi ed=0;whi l e ( t ocopy = ( s i ze < sk- >t cp- >mss) ? si ze : sk- >t cp- >mss) {
i f ( copi ed = ( f r ee_space ( sk- >wr i t e_queue- >pr ev. space) ) ) {i f ( copi ed > t ocopy) copi ed = t ocopy;add_dat a ( sk- >wr i t e_queue. pr ev, msg, copi ed) ;s i ze = si ze - copi ed; msg = msg + copi ed;
}el se {
st r uct skbuf f * skb = al l oc_new_skb( ) ;add_dat a( skb, msg, t ocopy) ;s i ze = si ze - t ocopy; msg = msg + t ocopy;ent ai l ( sk- >wr i t e_queue, skb) ;
}}
r et ur n s i ze;}
�����������������
INRIA - LaBRIPhoenix Proposal Oct 200425
An Example: Sockets
i nt t cp_mi ni _sendmsg ( voi d * msg){
st r uct skbuf f * skb = al l oc_new_skb( ) ;add_dat a( skb, msg, 1400) ;ent ai l ( sk- >wr i t e_queue, skb) ;
r et ur n 0;}
�����������������
INRIA - LaBRIPhoenix Proposal Oct 200426
Program Specialization: Contributions
� Specialization declarations� Program analyses
– Context/flow/return sensitive binding-time analysis
– Evaluation-time analysis– Action analysis
� Program transformations– Compile time– Run time– Data specialization
� Program specializer: Tempo
� Languages: C, C++, Java� Software architectures� Components:
– IPC– RPC– Signals– TCP/IP
� Gains: time (and/or) space������������������ ������������������� ������������ ��������
�����������������������������������������������
INRIA - LaBRIPhoenix Proposal Oct 200427
Our Domain-Specific Languages
� DSL development methodologies ������������������ DSLs
– Devil – A DSL for device drivers ��������� ���� ������– Plan-P – A DSL for programmable routers ��� �����– Spidle – A DSL for stream processing � �������– Call/C – A DSL for telephony services– …
INRIA - LaBRIPhoenix Proposal Oct 200428
Domain-Specific Languages: Benefits
� Domain-specific notations and abstractions� Domain-specific verifications� Domain-specific optimizations� Domain-specific code generation� Domain-specific development tools
INRIA - LaBRIPhoenix Proposal Oct 200429
Domain-Specific Languages
� Domain-specific notations and abstractions– Abstractions (port, register, variable)– Behavioral types (stable, volatile, trigger)
� Domain-specific verifications– Strong typing (def., R/W, size)– No omission (at least once)– No double definition (at most once)
� Domain-specific optimizations– I/O transactions
� Domain-specific code generation– Multiple targets (I/O, memory, I2C)
� Domain-specific development tools– Textual tools– Graphical tools
������
������
����
� ����������
���
��
�����
INRIA - LaBRIPhoenix Proposal Oct 200430
An Example: Devil
out b( MSE_READ_X_LOW, MSE_CONTROL_PORT) ;dx = ( i nb( MSE_DATA_PORT) & 0xf ) ;out b( MSE_READ_X_HI GH, MSE_CONTROL_PORT) ;dx | = ( i nb( MSE_DATA_PORT) & 0xf ) << 4;out b( MSE_READ_Y_LOW, MSE_CONTROL_PORT ) ;dy = ( i nb( MSE_DATA_PORT) & 0xf ) ;out b( MSE_READ_Y_HI GH, MSE_CONTROL_PORT) ;but t ons = i nb( MSE_DATA_PORT) ;dy | = ( but t ons & 0xf ) << 4;
Exi st i ngcode
. . .var i abl e dx = x_hi gh[ 3. . 0] # x_l ow[ 3. . 0] , vol at i l e : s i gned i nt ( 8) ;var i abl e dy = y_hi gh[ 3. . 0] # y_l ow[ 3. . 0] , vol at i l e : s i gned i nt ( 8) ;
����
INRIA - LaBRIPhoenix Proposal Oct 200431
TelecommunicationsWhen Teaching Meets Research
� Telephony over IP (dept. of Telecom @ ENSEIRB)– Courses– Labs
� Signalling platforms – SIP based– SER / LiveCom / Servlet– Deployed– Programmed
INRIA - LaBRIPhoenix Proposal Oct 200432
Research Directions
� DSLs for communication services� Supporting infrastructure� Application areas
INRIA - LaBRIPhoenix Proposal Oct 200433
Research Directions
������
!�"�����
!��������
������
#�������
#�������
� DSLs for communication services� Supporting infrastructure� Application areas
INRIA - LaBRIPhoenix Proposal Oct 200434
Research Directions
������
!�"�����
!��������
������
#�������
#�������
� DSLs for communication services– A DSL paradigm for protocol-based service families ���������– Service robustness– Capability-based DSLs– Resource control
�������
D SL
������������������������������������������
��������$�%��
INRIA - LaBRIPhoenix Proposal Oct 200435
Research Directions
������
!�"�����
!��������
������
#�������
#�������
� DSLs for communication services– A DSL paradigm for protocol-based service families– Service robustness– Capability-based DSLs– Resource control
D SL
���%�
�����#������� #�������
���������
������������
INRIA - LaBRIPhoenix Proposal Oct 200436
Research Directions
������
!�"�����
!��������
������
#�������
#�������
� DSLs for communication services– A DSL paradigm for protocol-based service families– Service robustness– Capability-based DSLs– Resource control �������
��������
������������
&'�()������ �
�*���
+� (����
, �
INRIA - LaBRIPhoenix Proposal Oct 200437
Research Directions
������
!�"�����
!��������
������
#�������
#�������
� DSLs for communication services– A DSL paradigm for protocol-based service families– Service robustness– Capability-based DSLs– Resource control
�������
��������!��-
�������
���������
.���������
+��������
!��-
�������
!��-
�������
!��-
�������
INRIA - LaBRIPhoenix Proposal Oct 200438
Research Directions
#��%��������
������
!�"�����
!��������
#�������
#�������
� Supporting infrastructure– Programmable client-server model ��������– High-performance servers– High-performance systems components
��������#/
��������#
��������#0
��������#�
Sv(rq, ctx(p) )= rp
INRIA - LaBRIPhoenix Proposal Oct 200439
Research Directions
1�%2(#������-
������
!�"�����
!��������
#�������
#�������
� Supporting infrastructure– Programmable client-server model
– High-performance servers– High-performance systems components
������
���������������
��� ��������� ����������
INRIA - LaBRIPhoenix Proposal Oct 200440
Research Directions
������
!�"�����
!��������
#�������
#�������
� Supporting infrastructure– Programmable client-server model
– High-performance servers– High-performance systems components �����������������
������
�����%��� ���
�����%���������
�����������
'��%�
�������
INRIA - LaBRIPhoenix Proposal Oct 200441
Research Directions
#��%��������
������
!�"�����
!��������
!��#
!��#
� Application areas– Multimedia streaming services � �������– Telephony services
��������#/
��������#
��������#0
��������#�
Sv(rq, ctx(p) )= rp
��������%���%���3���� ��
� �����������������
� ��� *� �2
� ������%
� #����������,
INRIA - LaBRIPhoenix Proposal Oct 200442
Research Directions
#��%��������
������
!�"�����
!��������
�.#
�.#
� Application area– Multimedia streaming services– Telephony services ���������
��������#/
��������#
��������#0
��������#�
Sv(rq, ctx(p) )= rp
����������%���3�����4�
� ����
� #������
� ������%
� #����������,
INRIA - LaBRIPhoenix Proposal Oct 200443
Session Initiation Protocol
� SIP: Session Initiation Protocol (IETF)� Signalling protocol� Purpose
– Initiate, modify and terminate sessions between parties– Locate parties– Invoke applications: VoIP, video, IM, alerts, games…
� Client-Server model� IP based (openness)
INRIA - LaBRIPhoenix Proposal Oct 200444
Programming Telephony Services:Existing Solutions
� Safe but too restrictive– SIP Call Processing Language (SIP-CPL)
� Expressive but unsafe– Microsoft SIP APIs – C#– SIP Express Router – C-like and C– SIP Servlet – Java – …
INRIA - LaBRIPhoenix Proposal Oct 200445
Programming Telephony Services:Call/C
� Domain-specific notations and abstractions
– Types (return value, SIP addr)– Exceptions (timers, resources…)– Events (provisional responses)
� Domain-specific verifications– No call loss– Valid state transition
� Domain-specific optimizations– Server state management
� Domain-specific code generation– Exception handling (multiple
platforms)
� Domain-specific development tools
– Textual tools– Graphical tools
INRIA - LaBRIPhoenix Proposal Oct 200446
An Example of a Telephony ServiceIn Call/C
depl oyment open gr oup_head_i nf o;
r esponse i ncomi ng( ) {
st r uct user _i nf o user = get _gr oup_head_i nf o( ) ;r esponse r ;
sel ect ( SUBJECT) {case " Member" :
sel ect ( r = f or war d { } ) {case /Error/Client/Busy:
r = f or war d { user . assi st ant _head } ;case /Error/Client:
r = f or war d { user . voi cemai l } ;}
case " Private" :r = f or war d { user . home, user . voi cemai l } ;
case " Group" :r = par f or war d { user . gr oup_member s } ; i f ( r ! = /Success/Ok) r = f or war d { user . voi cemai l } ;
case " Voicemail" :r = f or war d { user . voi cemai l } ;
def aul t :r = f or war d { user . secr et ar y } ;
}r et ur n r ;
}
INRIA - LaBRIPhoenix Proposal Oct 200447
An Example of a Telephony ServiceIn SER (1) – Preliminaries
# - - - - - - - - - - - gl obal conf i gur at i on par amet er s - - - - - - - - - - - - -
check_vi a=no
dns=no
r ev_dns=no
f i f o=" / t mp/ ser _f i f o“
# - - - - - - - - - - - - - - - - - - modul e l oadi ng - - - - - - - - - - - - - - - - - - - - - - - -
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ mysql . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ sl . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ t m. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ r r . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ maxf wd. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ usr l oc. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ r egi st r ar . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ aut h. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ aut h_db. so“
# - - - - - - - - - - - - - - - - - speci f i c modul e l oadi ng- - - - - - - - - - - - - - - - - -
# Thi s modul e i s l oaded t o expor t r ewr i t i ng ur i f unct i ons
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ gr oup_head_i nf o. so“ -
# - - - - - - - - - - - - - - - - - set t i ng modul e- speci f i c par amet er s - - - -
modpar am( " usr l oc" , " db_mode" , 2)
modpar am( " aut h_db" , " cal cul at e_ha1" , yes)
modpar am( " r r " , " enabl e_f ul l _l r " , 1)
INRIA - LaBRIPhoenix Proposal Oct 200448
An Example of a Telephony ServiceIn SER (2) – Main Routing Logic
r out e{i f ( ! mf _pr ocess_maxf wd_header ( " 10" ) ) {
s l _send_r epl y( " 483" , " Too Many Hops" ) ;br eak;
} ;i f ( msg: l en > max_l en ) {
s l _send_r epl y( " 513" , " Message t oo bi g" ) ;br eak;
} ;r ecor d_r out e( ) ;i f ( l oose_r out e( ) ) {
t _r el ay( ) ;br eak;
} ;
i f ( ur i ==mysel f ) {i f ( met hod==" REGI STER" ) {
i f ( ! www_aut hor i ze( " bor abor a. ensei r b. f r " , " subscr i ber " ) ) {www_chal l enge( " bor abor a. ensei r b. f r " , " 0" ) ;br eak;
} ;save( " l ocat i on" ) ;br eak;
} ;i f ( ! l ookup( " l ocat i on" ) ) {
s l _send_r epl y( " 404" , " Not Found" ) ;br eak;
} ;i f ( met hod==" I NVI TE" ){
i f ( ! www_aut hor i ze( " bor abor a. ensei r b. f r " , " subscr i ber " ) ) {www_chal l enge( " bor abor a. ensei r b. f r " , " 0" ) ;br eak;
} ;r out e( 1) ;
} ;
} ;i f ( ! t _r el ay( ) ) { s l _r epl y_er r or ( ) ; } ;
}
INRIA - LaBRIPhoenix Proposal Oct 200449
An Example of a Telephony ServiceIn SER (3) – Specific Routing Logic
r out e[ 1] {i f ( i s_pr esent _hf ( " Subj ect " ) ) {
i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : [ ] * Member [ \ r \ n] [ \ n] " ) ) {i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;t _on_f ai l ur e( " 1" ) ;
} ;i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : [ ] * Pr i vat e[ \ r \ n] [ \ n] " ) ) {
r ewr i t eur i _home( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;t _on_f ai l ur e( " 2" ) ;
} ;i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : [ ] * Gr oup[ \ r \ n] [ \ n] " ) ) {
r ewr i t eur i _gr oup_member s( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;t _on_f ai l ur e( " 3" ) ;
} ;i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : [ ] * Voi cemai l [ \ r \ n] [ \ n] " ) ) {
r ewr i t eur i _voi cemai l ( ) ;i f ( ! t _r el ay( ) ) {s l _r epl y_er r or ( ) ;
} ;}
el se i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : [ ] * Secr et ar y[ \ r \ n] [ \ n] " ) ) {r ewr i t eur i _secr et ar y( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
} ;}
}
INRIA - LaBRIPhoenix Proposal Oct 200450
An Example of a Telephony ServiceIn SER (4) – Failure Handlers
f ai l ur e_r out e[ 1] {i f ( st at us == " 486" ) {
r ewr i t eur i _assi st ant head( ) ;} ;i f ( st at us =~ " 4. . " && st at us! =" 486" ) {
r ewr i t eur i _voi cemai l ( ) ;} ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
}
f ai l ur e_r out e[ 2] {i f ( st at us =~ " 6. . " ) {
s l _r epl y_er r or ( ) ;}el se {
r ewr i t eur i _voi cemai l ( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
} ;}
f ai l ur e_r out e[ 3] {r ewr i t eur i _voi cemai l ( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
}
INRIA - LaBRIPhoenix Proposal Oct 200451
# - - - - - - - - - - - gl obal conf i gur at i on par amet er s - - - - - - - - - - - - -
check_vi a=no
dns=no
r ev_dns=no
f i f o=" / t mp/ ser _f i f o“
# - - - - - - - - - - - - - - - - - - modul e l oadi ng - - - - - - - - - - - - - - - - - - - - - - - -
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ mysql . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ s l . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ t m. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ r r . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ maxf wd. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ usr l oc. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ r egi st r ar . so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ aut h. so"
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ aut h_db. so“
# - - - - - - - - - - - - - - - - - speci f i c modul e l oadi ng- - - - - - - - - - - - - - - - - -
# Thi s modul e i s l oaded t o expor t r ewr i t i ng ur i f unct i ons
l oadmodul e " / usr / l ocal / / l i b/ ser / modul es/ gr oup_head_i nf o. so“ -
# - - - - - - - - - - - - - - - - - set t i ng modul e- speci f i c par amet er s - - - -
modpar am( " usr l oc" , " db_mode" , 2)
modpar am( " aut h_db" , " cal cul at e_ha1" , yes)
modpar am( " r r " , " enabl e_f ul l _l r " , 1)
DSL Benefits
r out e[ 1] {i f ( i s_pr esent _hf ( " Subj ect " ) ) {
i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : \[ ] * Member [ \ r \ n] [ \ n] " ) ) {
i f ( ! t _r el ay( ) ) {s l _r epl y_er r or ( ) ;
} ;t _on_f ai l ur e( " 1" ) ;
} ;i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : \
[ ] * Pr i vat e[ \ r \ n] [ \ n] " ) ) {r ewr i t eur i _home( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;t _on_f ai l ur e( " 2" ) ;
} ;i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : \
[ ] * Gr oup[ \ r \ n] [ \ n] " ) ) {r ewr i t eur i _gr oup_member s( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;t _on_f ai l ur e( " 3" ) ;
} ;i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : \
[ ] * Voi cemai l [ \ r \ n] [ \ n] " ) ) {r ewr i t eur i _voi cemai l ( ) ;i f ( ! t _r el ay( ) ) {s l _r epl y_er r or ( ) ;
} ;}
el se i f ( sear ch( " ^ [ Ss] [ Uu] [ Bb] [ J j ] [ Ee] [ Cc] [ Tt ] : \[ ] * Secr et ar y[ \ r \ n] [ \ n] " ) ) {
r ewr i t eur i _secr et ar y( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
} ;}
}
r out e{i f ( ! mf _pr ocess_maxf wd_header ( " 10" ) ) {
s l _send_r epl y( " 483" , " Too Many Hops" ) ;br eak;
} ;i f ( msg: l en > max_l en ) {
s l _send_r epl y( " 513" , " Message t oo bi g" ) ;br eak;
} ;r ecor d_r out e( ) ;i f ( l oose_r out e( ) ) {
t _r el ay( ) ;br eak;
} ;
i f ( ur i ==mysel f ) {i f ( met hod==" REGI STER" ) {
i f ( ! www_aut hor i ze( " bor abor a. ensei r b. f r " , " subscr i ber " ) ) {www_chal l enge( " bor abor a. ensei r b. f r " , " 0" ) ;br eak;
} ;save( " l ocat i on" ) ;br eak;
} ;i f ( ! l ookup( " l ocat i on" ) ) {
s l _send_r epl y( " 404" , " Not Found" ) ;br eak;
} ;i f ( met hod==" I NVI TE" ){
i f ( ! www_aut hor i ze( " bor abor a. ensei r b. f r " , " subscr i ber " ) ) {www_chal l enge( " bor abor a. ensei r b. f r " , " 0" ) ;br eak;
} ;r out e( 1) ;
} ;
} ;i f ( ! t _r el ay( ) ) { s l _r epl y_er r or ( ) ; } ;
}
f ai l ur e_r out e[ 1] {i f ( s t at us == " 486" ) {
r ewr i t eur i _assi st ant head( ) ;} ;i f ( s t at us =~ " 4. . " && st at us! =" 486" ) {
r ewr i t eur i _voi cemai l ( ) ;} ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
}
f ai l ur e_r out e[ 2] {i f ( s t at us =~ " 6. . " ) {
s l _r epl y_er r or ( ) ;}el se {
r ewr i t eur i _voi cemai l ( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
} ;}
f ai l ur e_r out e[ 3] {r ewr i t eur i _voi cemai l ( ) ;i f ( ! t _r el ay( ) ) {
s l _r epl y_er r or ( ) ;} ;
}
depl oyment open gr oup_head_i nf o;
r esponse i ncomi ng( ) {st r uct user _i nf o user = get _gr oup_head_i nf o( ) ;r esponse r ;
sel ect ( SUBJECT) {case " Member" :
sel ect ( r = f or war d { } ) {case /Error/Client/Busy:
r = f or war d { user . assi st ant _head } ;case /Error/Client:
r = f or war d { user . voi cemai l } ;}
case " Private" :r = f or war d { user . home, user . voi cemai l } ;
case " Group" :r = par f or war d { user . gr oup_member s } ; i f ( r ! = /Success/Ok) r = f or war d { user . voi cemai l } ;
case " Voicemail" :r = f or war d { user . voi cemai l } ;
def aul t :r = f or war d { user . secr et ar y } ;
}r et ur n r ;
}
� High level� Low expertise
� Concise� Robustness
INRIA - LaBRIPhoenix Proposal Oct 200452
Funding
� Embedded Systems [Microsoft / 2003-2004]� Web Services [Microsoft / 2003-2004]� ACI Security COrSS [2003-2006]� Ambiant Intelligence for the Networked Home
Environment (AMIGO) [E.U. / 2004-2007]� Robust Multimedia Applications for Mobile Terminals
[Region Aquitaine / 2003-2004]� 1 industrial fellowship [CIFRE]
INRIA - LaBRIPhoenix Proposal Oct 200453
Academic Collaborations
� Inside INRIA– Arles – Ubiquitous computing– Obasco – DSL & operating systems
� Outside INRIA– Julia Lawall, DIKU, University of Copenhagen – DSL, specialization,
program analysis– Calton Pu, Georgia Institute of Technology – DSL & systems
specialization– Jonathan Walpole, Wu-Chang Feng, Wu-Chi Fen, Portland State
University – Multimedia streaming, DSL for operating systems and networking
INRIA - LaBRIPhoenix Proposal Oct 200454
Visibility
� Invited talks: ������� ������!"#$%$&'���(�� )*%'+,-��� .$#*!)�.",���/)-.01!2.#%!'3����
� PC member of conferences: ������� �������������� �������������������
� Award: “Best Ph.D. Thesis” from ACM SIGOPS France
� Community building: IFIP working group 2.11 (Program Generation)
� Publications (results)
INRIA - LaBRIPhoenix Proposal Oct 200455
Conclusions
� Hot area: creation of communication services� Strong interest:
– Academic– Industry
� Approach: programming language technologies� Numerous research issues:
– Foundational work– Promising applications