N. Sultana, S. Galea, D. Greaves, M. Wojcik, J. Shipton, R.G. Clegg, L. Mai, P. Bressana, R. Soule, R. Mortier, P. Costa, P. Pietzuch, J. Crowcroft, A. Moore, N. ZilbermanProc. USENIX ATC, 2017
Due to their performance and flexibility, FPGAs are an attractive platform for the execution of network functions. Making FPGA programming accessible to a large audience of developers, however, has been a challenge for a long time. Compiling code from a general-purpose languages to hardware using high-level synthesis is an appealing solution. Unfortunately, current approaches for implementing 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.