/ Papers / Melange: creating a "functional" internet
Journal paper in ACM SIGOPS Operating Systems Review (vol 41 issue 3), Jun 2007
PDF   URL   BibTeX   DOI  

Abstract. Most implementations of critical Internet protocols are written in type-unsafe languages such as C or C++ and are regularly vulnerable to serious security and reliability problems. Type-safe languages eliminate many errors but are not used to due to the perceived performance overheads. We combine two techniques to eliminate this performance penalty in a practical fashion: strong static typing and generative meta-programming. Static typing eliminates run-time type information by checking safety at compile-time and minimises dynamic checks. Meta-programming uses a single specification to abstract the low-level code required to transmit and receive packets. Our domain-specific language, MPL, describes Internet packet protocols and compiles into fast, zero-copy code for both parsing and creating these packets. MPL is designed for implementing quirky Internet protocols ranging from the low-level: Ethernet, IPv4, ICMP and TCP; to the complex application-level: SSH, DNS and BGP; and even file-system protocols such as 9P. We report on fully-featured SSH and DNS servers constructed using MPL and our OCaml framework Melange, and measure greater throughput, lower latency, better flexibility and more succinct source code than their C equivalents OpenSSH and BIND. Our quantitative analysis shows that the benefits of MPL-generated code overcomes the additional overheads of automatic garbage collection and dynamic bounds checking. Qualitatively, the flexibility of our approach shows that dramatic optimisations are easily possible.

Authors. Anil Madhavapeddy, Alex Ho, Tim Deegan, Dave Scott and Ripduman Sohan

See Also. This publication was part of my Functional Internet Services project.

News Updates

Jun 2007. «» Won best student paper for my PhD work on a high-performance functional packet parsing DSL at Eurosys 2007!
Jun 2005. «» Blogged about the OpenBSD C2K5 hackathon trip in Canada.