Emu: Rapid Prototyping of Networking Services
- Nik Sultana ,
- Salvator Galea ,
- David Greaves ,
- Marcin Wojcik ,
- Jonny Shipton ,
- Richard G. Clegg ,
- Luo Mai ,
- Pietro Bressana ,
- Robert Soule ,
- Richard Mortier ,
- Paolo Costa ,
- Peter Pietzuch ,
- Jon Crowcroft ,
- Andrew W. Moore ,
- Noa Zilberman
USENIX Annual Technical Conference (ATC'17) |
Published by USENIX
Due to their performance and flexibility, FPGAs are an attractive platform for the execution of network functions. It has been a challenge for a long time though to make FPGA programming accessible to a large audience of developers. An appealing solution is to compile code from a general-purpose language to hardware using high-level synthesis. Unfortunately, current approaches to implement rich network functionality are insufficient because they lack: (i) libraries with abstractions for common network operations and data structures, (ii) bindings to the underlying “substrate” on the FPGA, and (iii) debugging and profiling support.
This paper describes Emu, a new standard library for an FPGA hardware compiler that enables developers to rapidly create and deploy network functionality. Emu allows for high-performance designs without being bound to particular packet processing paradigms. Furthermore, it supports running the same programs on CPUs, in Mininet, and on FPGAs, providing a better development environment that includes advanced debugging capabilities. We demonstrate that network functions implemented using Emu have only negligible resource and performance overheads compared with natively-written hardware versions.