Nate Foster
Email: <jnfoster@cs.cornell.edu>
Additional Contacts:
Calin Cascaval, <cascaval@barefootnetworks.com>
Andy Fingerhut, <jafinger@cisco.com>
Peter Li, <pl488@cornell.edu>
P4 is a high-level programming language designed to express the packet-processing functionality of network routers. The language is developed by an open-source consortium, P4.org, and is now supported on several targets including FPGA-based platforms from Xilinx, and ASIC-based-platforms from Cisco and Arista. To enable portability across different targets, the P4 community has defined a standard architecture called the Portable Switch Architecture (PSA). The goal of this project is to complete the implementation of PSA on a reference software implementation, BMv2.
This systems-oriented project requires advanced knowledge of C++. In addition, background in networking and compilers at the undergraduate level, or a willingness to learn is essential.
Currently the BMv2 codebase has partially-complete implementation of PSA. To finish the job, we need to retarget the compiler to emit a JSON intermediate representation of a P4 program, and implement various packet-processing functions in the BMv2 codebase.
For modifying the compiler, much of the initial support for handling PSA programs is there. The project will complete any missing pieces of functionality. In addition, a set of test cases is needed.
For implementing packet-processing functions, we imagine refactoring the BMv2 codebase around a new, streamlined "extern" API, and then:
If successful, this project could have significant impact on a tool that is widely used by the open-source networking community. There may be possibilities to showcase the results of the work at industry-oriented events such as the annual P4 Workshop.