HyPer4
HyPer4 is a portable and dynamic solution for virtualizing the P4-programmable data plane.
Virtualization can take a single physical data plane and present the illusion of multiple data planes. Each virtual data plane on a network device can host a different packet processing program, i.e., function. These functions can be chained together in complex ways for arbitrary compositions. Or they can be isolated from each other in distinct network slices. Support for network function composition permits a modular development process, yielding advantages in independent debugging and optimization efforts. Support for slices permits support for multiple tenants, or mixes of research experiments and production operations, where each slice could involve completely distinct protocol headers and functions.
This repository is for the HyPer4 persona, a P4 program capable of emulating other P4 programs. Practical use of HyPer4 requires the controller. The controller includes a compiler, a linker/loader, a P4 API command interpreter, and a composer.
Demo branch
If you want to see the version HyPer4 as it was when the CoNEXT 2016 paper was produced, including working mininet demonstrations with step-by-step instructions, checkout the demo branch. In the demo branch, all instructions for running the demonstrations are in the README in the top directory. This branch assumes bmv2 at commit f53451a280b7bb27b5f2b8410ab086122ee77526, and has not been tested extensively on later versions of bmv2.
Related Work
The Flowvisor project virtualizes the control plane and relies on OpenFlow, which has a fixed data plane (relative to P4).