The formal approach using Esterel allows to apply various verification and optimization techniques to the automata of the application and its communication sub-system ( Xeve ). Besides it simplifies the software development life cycle (in the sense that what we specify should correspond exactly to what we finally execute) and provides readable and flexible programming reducing the code maintenance task.
The automatic approach consists in integrating the communication sub-system from a high level specification. According to the type of transmission desired (reliable, in-sequence, real-time, etc), appropriate protocols are integrated. Basicly these protocols are made of a set of modules that describe protocol mechanisms. These protocol mechanisms can be selected in an ever growing library and contribute to the following functionalities: error detection and correction, flow control, congestion control and in-sequence delivery.
In this documentation we will refer to the user when speaking of an end user who develops a distributed application without necessarly being an expert in communication protocols, and we will refer to the programmer when speaking of a protocol developper who wants to add new protocol mechanisms to the ALFred library in order to meat new application requirements.
The ALFred compiler has been developped during the HIPPARCH project (High Perfomance Protocol Architecture), which aims at investigating novel architectures for high performance communication protocols based on the Application Level Framing (ALF) concept. The ALF concept was introduced in a seminal paper by Clark and Tennenhouse in 1990. The ALF principle states that information should be packetized by the application into Application Data Units (ADUs), each of which should be at the same time a unit of transmission, a unit of control, and a unit of processing. The application is then able to receive the data out of sequence, sparing time. For example, an image server which transmit well identified blocs of an image, can display each bloc out of order and independantly from one another instead of remaining in idle state when some bloc is out of sequence.
ALFred is flexible enough to contribute to a platform to study new protocol implementation techniques. This protocol compiler generates the appropriate communication module of a given distributed application, taking into account the application and network requirements. The control part of the application is specified using Esterel while the data processing part is written in Java. The specific QoS of the application can be entered within an Emacs and/or Java-AWT menu. These application requirements are then used by the compiler to select the appropriate protocol mechanisms available in an Esterel library. Finally, all these Esterel specifications are compiled into an integrated Java specification which is the target langage. To achieve a more efficient execution scheme we could add some JIT stuff to the process ...
This version of the ALFred compiler is based on previous work synthetised in a JSAC'98 article. It naturally provides a refined mapping between QoS requirements and protocol mechanisms.