Title: Research Proposal The Phoenix Project
1Research ProposalThe Phoenix Project
October 2004 Bordeaux
2Personnel
- 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) - Laurence Caillot, Industrial Fellowship --
Altexia (since 10/03) - 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
3Research Area
- Network
- Telecom
- Computer
- Broadcast
Service Creation
4Requirements
- Network
- Telecom
- Computer
- Broadcast
- Software intensive
- Robustness critical
- Performance critical
Service Creation
5Requirements
- Software intensive
- Robustness critical
- Performance critical
6Requirements
- Hardware features
- Network capabilities
- Customer needs
- Software intensive
- Robustness critical
- Performance critical
7Requirements
- Research Issues
- Low level and intricate
- Multiple areas of expertise
- Time-to-market
- Hardware features
- Network capabilities
- Customer needs
- Software intensive
- Robustness critical
- Performance critical
8Requirements
- Commodity services
- Safety, security, dependability
- Openness vs. robustness
- Software intensive
- Robustness critical
- Performance critical
9Requirements
- Research Issues
- Correctness
- Resource control
- Security
- Safety, security, dependability
- Commodity services
- Openness vs. robustness
- Software intensive
- Robustness critical
- Performance critical
10Requirements
- Software intensive
- Robustness critical
- Performance critical
- Space and time
- Multimedia activities
- Multiple layers
11Requirements
- Research Issues
- Time/space optimization
- Activity specific
- Multiple layers
- Software intensive
- Robustness critical
- Performance critical
- Space and time
- Multimedia activities
- All levels
12Claim Progr. Language Enabling Technology
- Language design
- Program analysis
- Program transformation
- Software intensive
- Robustness critical
- Performance critical
13Claim Progr. Language Enabling Technology
- DS notations abstractions
- High level
- Concise
- Language design
- Program analysis
- Program transformation
14Claim Progr. Language Enabling Technology
- Language design
- Program analysis
- Program transformation
- Critical DS properties
- Detected/guaranteed properties
- Design parameters
15Claim Progr. Language Enabling Technology
- Language design
- Program analysis
- Program transformation
- Time/space optimizations
- DS analyses
- DS optimizations
16Required Expertise
- Programming languages
- Software engineering
- Systems
- Networking
- Telecommunications
17Our Expertise
- Programming languages
- Software engineering
- Systems
- Networking
- Telecommunications
18Our Expertise
- Programming languages
- Software engineering
- Systems
- Networking
- Telecommunications
- Program specialization
- Domain-specific languages
19Program Specialization
Component developer
Component user
Specializable component
Specialization values
Source code
Specialization declarations
Specialization
Analyses Transformations
Specializable component
Specialized component
20An Example Sockets
int tcp_mini_sendmsg (struct sock sk, void msg,
int size) int tocopy0, copied0 while
(tocopy (size lt sk-gttcp-gtmss) ? size
sk-gttcp-gtmss) if (copied (free_space
(sk-gtwrite_queue-gtprev.space))) if (copied gt
tocopy) copied tocopy add_data
(sk-gtwrite_queue.prev, msg, copied) size
size - copied msg msg copied
else struct skbuff skb alloc_new_skb()
add_data(skb, msg, tocopy) size size -
tocopy msg msg tocopy entail
(sk-gtwrite_queue, skb) return size
21An Example Sockets
constant_size_sendtcp_mini_sendmsg
( socket(struct sock) S() sk, S(int) size)
int tcp_mini_sendmsg (struct sock sk, void msg,
int size) int tocopy0, copied0 while
(tocopy (size lt sk-gttcp-gtmss) ? size
sk-gttcp-gtmss) if (copied (free_space
(sk-gtwrite_queue-gtprev.space))) if (copied gt
tocopy) copied tocopy add_data
(sk-gtwrite_queue.prev, msg, copied) size
size - copied msg msg copied
else struct skbuff skb alloc_new_skb()
add_data(skb, msg, tocopy) size size -
tocopy msg msg tocopy entail
(sk-gtwrite_queue, skb) return size
22An Example Sockets
constant_size_sendtcp_mini_sendmsg
( socket(struct sock) S() sk, S(int) size)
int tcp_mini_sendmsg (struct sock sk, void msg,
int size) int tocopy0, copied0 while
(tocopy (size lt sk-gttcp-gtmss) ? size
sk-gttcp-gtmss) if (copied (free_space
(sk-gtwrite_queue-gtprev.space))) if (copied gt
tocopy) copied tocopy add_data
(sk-gtwrite_queue.prev, msg, copied) size
size - copied msg msg copied
else struct skbuff skb alloc_new_skb()
add_data(skb, msg, tocopy) size size -
tocopy msg msg tocopy entail
(sk-gtwrite_queue, skb) return size
23An Example Sockets
constant_size_sendtcp_mini_sendmsg
( socket(struct sock) S() sk, S(int) size)
int tcp_mini_sendmsg (struct sock sk, void msg,
int size) int tocopy0, copied0 while
(tocopy (size lt sk-gttcp-gtmss) ? size
sk-gttcp-gtmss) if (copied (free_space
(sk-gtwrite_queue-gtprev.space))) if (copied gt
tocopy) copied tocopy add_data
(sk-gtwrite_queue.prev, msg, copied) size
size - copied msg msg copied
else struct skbuff skb alloc_new_skb()
add_data(skb, msg, tocopy) size size -
tocopy msg msg tocopy entail
(sk-gtwrite_queue, skb) return size
24An Example Sockets
sk size 1400
int tcp_mini_sendmsg (struct sock sk, void msg,
int size) int tocopy0, copied0 while
(tocopy (size lt sk-gttcp-gtmss) ? size
sk-gttcp-gtmss) if (copied (free_space
(sk-gtwrite_queue-gtprev.space))) if (copied gt
tocopy) copied tocopy add_data
(sk-gtwrite_queue.prev, msg, copied) size
size - copied msg msg copied
else struct skbuff skb alloc_new_skb()
add_data(skb, msg, tocopy) size size -
tocopy msg msg tocopy entail
(sk-gtwrite_queue, skb) return size
25An Example Sockets
sk size 1400
int tcp_mini_sendmsg (void msg) struct skbuff
skb alloc_new_skb() add_data(skb, msg,
1400) entail (sk-gtwrite_queue, skb) return
0
26Program 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
SOSP95, POPL96, PLDI99, ECOOP99, ASE00,
CD02, EMSOFT04, LCN04 HOSC99, HOSC00,
TOCS01, TOPLAS03, HOSC04, SCP04
27Our Domain-Specific Languages
- DSL development methodologies PLILP98, LNCS04
- DSLs
- Devil A DSL for device drivers ASE00,
OSDI00, DSN01 - Plan-P A DSL for programmable routers SRDS97
- Spidle A DSL for stream processing GPCE03
- Call/C A DSL for telephony services
-
28Domain-Specific Languages Benefits
- Domain-specific notations and abstractions
- Domain-specific verifications
- Domain-specific optimizations
- Domain-specific code generation
- Domain-specific development tools
29Domain-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
Application
API
System
API
Driver
DevIL
DI
Device
30An Example Devil
Devil
... variable dx x_high3..0 x_low3..0,
volatile signed int(8) variable dy
y_high3..0 y_low3..0, volatile signed
int(8)
31TelecommunicationsWhen Teaching Meets Research
- Telephony over IP (dept. of Telecom _at_ ENSEIRB)
- Courses
- Labs
- Signalling platforms SIP based
- SER / LiveCom / Servlet
- Deployed
- Programmed
32Research Directions
- DSLs for communication services
- Supporting infrastructure
- Application areas
33Research Directions
- DSLs for communication services
- Supporting infrastructure
- Application areas
Requests
Server
Client
Protocol
Protocol
Responses
34Research Directions
- DSLs for communication services
- A DSL paradigm for protocol-based service
families LNCS04 - Service robustness
- Capability-based DSLs
- Resource control
Service Logic
Service
Service
Service
DSL
Service
Service
Service
Service
Requests
Server
Client
Protocol
Protocol
Responses
35Research Directions
- DSLs for communication services
- A DSL paradigm for protocol-based service
families - Service robustness
- Capability-based DSLs
- Resource control
Protocol
Platform
Domain
Design
DSL
Transformers
Analyzers
Requests
Server
Client
Protocol
Protocol
Responses
36Research Directions
- DSLs for communication services
- A DSL paradigm for protocol-based service
families - Service robustness
- Capability-based DSLs
- Resource control
(Un-)trusted Owner End-user
Capabilities
Service
Compiler
Requests
Server
Client
Protocol
Protocol
Responses
37Research Directions
- DSLs for communication services
- A DSL paradigm for protocol-based service
families - Service robustness
- Capability-based DSLs
- Resource control
Service
Res. Control
Compiler
Server
Res. Control
Deployment
Res. Control
Invocation
Requests
Execution
Res. Control
Client
Protocol
Protocol
Responses
38Research Directions
- Supporting infrastructure
- Programmable client-server model ASE03
- High-performance servers
- High-performance systems components
Service P1
Sv(rq, ctx(p) ) rp
Service P2
Service P3
Requests
Service P4
Programmable Server
Protocol
Protocol
Responses
39Research Directions
- Supporting infrastructure
- Programmable client-server model
- High-performance servers
- High-performance systems components
DS optimizations
DS adaptations
DS analyses
Requests
High-Perform. Server
Client
Protocol
Protocol
Responses
40Research Directions
- Supporting infrastructure
- Programmable client-server model
- High-performance servers
- High-performance systems components
LCN04,EMSOFT04
Configurable OS
Usage Context
Specializer
Requests
Server
Client
Protocol
Protocol
Responses
Configured OS
41Research Directions
- Application areas
- Multimedia streaming services GPCE03
- Telephony services
Streaming logic Spidle
- Terminal features
- Bandwidth
- Billing
- Preferences
Service P1
Sv(rq, ctx(p) ) rp
Service P2
Service P3
Requests
Service P4
Programmable Server
RTSP
RTSP
Responses
42Research Directions
- Application area
- Multimedia streaming services
- Telephony services ICIN04
Service logic Call/C
- Time
- Parties
- Billing
- Preferences
Service P1
Sv(rq, ctx(p) ) rp
Service P2
Service P3
Requests
Service P4
Programmable Server
SIP
SIP
Responses
43Session 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)
44Programming Telephony ServicesExisting 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
45Programming Telephony ServicesCall/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
46An Example of a Telephony ServiceIn Call/C
deployment open group_head_info response
incoming() struct user_info user
get_group_head_info() response r select
(SUBJECT) case "Member" select (r
forward ) case /Error/Client/Busy
r forward user.assistant_head
case /Error/Client r forward
user.voicemail case "Private" r
forward user.home, user.voicemail case
"Group" r par forward user.group_members
if (r ! /Success/Ok) r forward
user.voicemail case "Voicemail" r
forward user.voicemail default r
forward user.secretary return r
47An Example of a Telephony ServiceIn SER (1)
Preliminaries
----------- global configuration parameters
------------- check_viano dnsno
rev_dnsno fifo"/tmp/ser_fifo
------------------ module loading
------------------------ loadmodule
"/usr/local//lib/ser/modules/mysql.so" loadmodule
"/usr/local//lib/ser/modules/sl.so" loadmodule
"/usr/local//lib/ser/modules/tm.so" loadmodule
"/usr/local//lib/ser/modules/rr.so" loadmodule
"/usr/local//lib/ser/modules/maxfwd.so" loadmodule
"/usr/local//lib/ser/modules/usrloc.so" loadmodul
e "/usr/local//lib/ser/modules/registrar.so" loadm
odule "/usr/local//lib/ser/modules/auth.so" loadmo
dule "/usr/local//lib/ser/modules/auth_db.so
-----------------specific module
loading------------------ This module is loaded
to export rewriting uri functions loadmodule
"/usr/local//lib/ser/modules/group_head_info.so-
----------------- setting module-specific
parameters ---- modparam("usrloc", "db_mode",
2) modparam("auth_db", "calculate_ha1",
yes) modparam("rr", "enable_full_lr", 1)
48An Example of a Telephony ServiceIn SER (2)
Main Routing Logic
route if (!mf_process_maxfwd_header("10"))
sl_send_reply("483","Too Many Hops")
break if ( msglen gt max_len )
sl_send_reply("513", "Message too big")
break record_route() if
(loose_route()) t_relay() break
if (urimyself) if
(method"REGISTER") if
(!www_authorize("borabora.enseirb.fr",
"subscriber")) www_challenge("borabora.e
nseirb.fr", "0") break
save("location") break if
(!lookup("location")) sl_send_reply("404",
"Not Found") break
if(method"INVITE") if
(!www_authorize("borabora.enseirb.fr",
"subscriber")) www_challenge("borabora.e
nseirb.fr", "0") break
route(1) if (!t_relay())
sl_reply_error()
49An Example of a Telephony ServiceIn SER (3)
Specific Routing Logic
route1 if(is_present_hf("Subject"))
if(search("SsUuBbJjEeCcTt
Member\r\n\n")) if(!t_relay())
sl_reply_error()
t_on_failure("1") if(search("SsUu
BbJjEeCcTt Private\r\n\n"))
rewriteuri_home() if(!t_relay())
sl_reply_error()
t_on_failure("2")
if(search("SsUuBbJjEeCcTt
Group\r\n\n")) rewriteuri_group_membe
rs() if(!t_relay())
sl_reply_error()
t_on_failure("3")
if(search("SsUuBbJjEeCcTt
Voicemail\r\n\n"))
rewriteuri_voicemail() if(!t_relay())
sl_reply_error() else
if(search("SsUuBbJjEeCcTt
Secretary\r\n\n"))
rewriteuri_secretary() if(!t_relay())
sl_reply_error()
50An Example of a Telephony ServiceIn SER (4)
Failure Handlers
failure_route1 if(status "486")
rewriteuri_assistanthead() if(status
"4.." status!"486") rewriteuri_voicemail(
) if(!t_relay()) sl_reply_error()
failure_route2 if(status "6..")
sl_reply_error() else
rewriteuri_voicemail() if(!t_relay())
sl_reply_error() failure_route3
rewriteuri_voicemail() if(!t_relay())
sl_reply_error()
51DSL Benefits
deployment open group_head_info response
incoming() struct user_info user
get_group_head_info() response r select
(SUBJECT) case "Member" select (r
forward ) case /Error/Client/Busy
r forward user.assistant_head
case /Error/Client r forward
user.voicemail case "Private" r
forward user.home, user.voicemail case
"Group" r par forward user.group_members
if (r ! /Success/Ok) r forward
user.voicemail case "Voicemail" r
forward user.voicemail default r
forward user.secretary return r
- High level
- Low expertise
- Concise
- Robustness
route1 if(is_present_hf("Subject"))
if(search("SsUuBbJjEeCcTt\
Member\r\n\n"))
if(!t_relay()) sl_reply_error()
t_on_failure("1")
if(search("SsUuBbJjEeCcTt\
Private\r\n\n"))
rewriteuri_home() if(!t_relay())
sl_reply_error()
t_on_failure("2")
if(search("SsUuBbJjEeCcTt\
Group\r\n\n"))
rewriteuri_group_members()
if(!t_relay()) sl_reply_error()
t_on_failure("3")
if(search("SsUuBbJjEeCcTt\
Voicemail\r\n\n"))
rewriteuri_voicemail() if(!t_relay())
sl_reply_error() else
if(search("SsUuBbJjEeCcTt\
Secretary\r\n\n"))
rewriteuri_secretary() if(!t_relay())
sl_reply_error()
----------- global configuration parameters
------------- check_viano dnsno
rev_dnsno fifo"/tmp/ser_fifo
------------------ module loading
------------------------ loadmodule
"/usr/local//lib/ser/modules/mysql.so" loadmodule
"/usr/local//lib/ser/modules/sl.so" loadmodule
"/usr/local//lib/ser/modules/tm.so" loadmodule
"/usr/local//lib/ser/modules/rr.so" loadmodule
"/usr/local//lib/ser/modules/maxfwd.so" loadmodule
"/usr/local//lib/ser/modules/usrloc.so" loadmodul
e "/usr/local//lib/ser/modules/registrar.so" loadm
odule "/usr/local//lib/ser/modules/auth.so" loadmo
dule "/usr/local//lib/ser/modules/auth_db.so
-----------------specific module
loading------------------ This module is loaded
to export rewriting uri functions loadmodule
"/usr/local//lib/ser/modules/group_head_info.so-
----------------- setting module-specific
parameters ---- modparam("usrloc", "db_mode",
2) modparam("auth_db", "calculate_ha1",
yes) modparam("rr", "enable_full_lr", 1)
route if (!mf_process_maxfwd_header("10"))
sl_send_reply("483","Too Many Hops")
break if ( msglen gt max_len )
sl_send_reply("513", "Message too big")
break record_route() if
(loose_route()) t_relay() break
if (urimyself) if
(method"REGISTER") if
(!www_authorize("borabora.enseirb.fr",
"subscriber")) www_challenge("borabora.e
nseirb.fr", "0") break
save("location") break if
(!lookup("location")) sl_send_reply("404",
"Not Found") break
if(method"INVITE") if
(!www_authorize("borabora.enseirb.fr",
"subscriber")) www_challenge("borabora.e
nseirb.fr", "0") break
route(1) if (!t_relay())
sl_reply_error()
failure_route1 if(status "486")
rewriteuri_assistanthead() if(status
"4.." status!"486") rewriteuri_voicemail(
) if(!t_relay()) sl_reply_error()
failure_route2 if(status "6..")
sl_reply_error() else
rewriteuri_voicemail() if(!t_relay())
sl_reply_error() failure_route3
rewriteuri_voicemail() if(!t_relay())
sl_reply_error()
52Funding
- 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 - 2 industrial fellowships CIFRE
53Academic 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
54Visibility
- Invited talks GPCE03, LDTA02, Microsoft01-03,
Dagstuhl03, GeorgiaTech03, Yale University04 - PC member of conferences CC05, PLDI04,
ECOOP04, PLDI02, ESOP02, POPL00 - Award Best Ph.D. Thesis from ACM SIGOPS France
- Community building IFIP working group 2.11
(Program Generation) - Publications (results)
55Conclusions
- Hot area creation of communication services
- Strong interest
- Academic
- Industry
- Approach programming language technologies
- Numerous research issues
- Foundational work
- Promising applications