Generating efficient protocol code from an abstract specification

  • Authors:
  • Walid Dabbous;Sean O'Malley;Claude Castelluccia

  • Affiliations:
  • INRIA, 2004, route des Lucioles - BP 93, 06902 Sophia Antipolis, France;Network Appliance, 319 N. Bernardo, Moutain View, CA;INRIA, 2004, route des Lucioles - BP 93, 06902 Sophia Antipolis, France

  • Venue:
  • Conference proceedings on Applications, technologies, architectures, and protocols for computer communications
  • Year:
  • 1996

Quantified Score

Hi-index 0.00

Visualization

Abstract

A protocol compiler takes as input an abstract specification of a protocol and generates an implementation of that protocol. Protocol compilers usually produce inefficient code both in terms of code speed and code size. In this paper, we show that the combination of two techniques makes it possible to build protocol compilers that generate efficient code. These techniques are i) the use of a compiler that generates from the specification a unique tree-shaped automaton (rather than multiple independent automata), and ii) the use of optimization techniques applied at the automaton level, i.e. on the branches of the trees.We have developed a protocol compiler that uses both these techniques. The compiler takes as input a protocol specification written in the synchronous language Esterel. The specification is compiled into a unique automaton by the Esterel front end compiler. The automaton is then optimized and converted into C code by our protocol optimizer called HIPPCO. HIPPCO improves code performance and reduces code size by simultaneously optimizing the performance of the common path and optimizing the size of the uncommon path. We evaluate the gain expected with our approach on a real-life example, namely a working subset of the TCP protocol generated from an Esterel specification. We compare the protocol code generated with our approach to that derived from the standard BSD TCP implementation. The results are very encouraging. HIPPCO-generated code executes up to 25 % fewer instructions than the BSD code for input packet processing while maintaining comparable code size.