Nik Sultana, Salvator Galea, David Greaves, Marcin Wojcik, Jonny Shipton, Richard G. Clegg, Luo Mai, Pietro Bressana, Roberto Soule, Richard Mortier, Paulo Costa, Peter Pietzuch, Jon Crowcroft, Andrew Moore, Noa 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.
This paper describes a C# library that can be used to build networked programs which can compile to several target hardware and software platforms. This greatly eases development and debugging. The system is tested using NetFPGA as a target and performs almost as well as hand tuned code.