Skip to content
Snippets Groups Projects
David Hancock's avatar
David Hancock authored
All files were obsolete, though hp4_design.md may still
have some interest (but probably only to me).
This file was nevertheless removed
from the repo and moved to a local folder for archived
design analysis.
7eead577
History
Name Last commit Last update
hp4
mininet
tools
.gitignore
README.md
env.sh

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.

The main development effort has been the HyPer4 persona, a P4 program capable of emulating other P4 programs. Other components of HyPer4 include a data plane management unit(DPMU), which is not yet implemented, but in concept is similar in purpose to the Flowvisor controller/switch proxy. The DPMU intercepts commands meant for foo.p4 and, assuming foo.p4 is currently being emulated by the HyPer4 persona, translates the commands to those relevant to hp4_persona.p4. The DPMU also provides resource management and isolation support for multiple programs being emulated by the persona at the same time.

Demo branch

If you want to see the version HyPer4 as it was when the 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).