Project Proposals/p4vpp

Jump to: navigation, search



Project Contact Name and Email

Repository Name



P4 is a domain specific language that allows developers to write packet processing applications for a variety of architectures, including Switching ASICs, Network Processors and CPUs. The P4VPP project will enable these capabilities to be mapped onto the VPP dataplane software platform. The P4VPP project will build a P4 toolchain that maps the user supplied P4 program onto a VPP software platform, thereby minimizing the effort to create new features, and moving the complexity of achieving performance to the P4 compiler.

The goal of this project will be to create a functional framework first and foremost, and enable ongoing development to further optimize the performance results from the P4C VPP compiler backend.


The scope of the P4VPP project will be the creation of software tools that are necessary to enable a P4 program to compile and run on the VPP software platform. This minimally will include the target specific extensions to the P4C compiler to target the VPP platform, both in terms of the data-plane and the control plane interfaces. The packaging of the compiler artifacts will target a VPP plug-in model, allowing for out-of-tree development, packaging and release.

The project contributions will target the following capabilities:

  • P4C Compiler Backend that targets the VPP Software Platform, including both the data-plane packet manipulations, as well as the control plane interface into table/action population.
  • Generalized VPP libraries that can be used by the P4 compiler. These libraries will minimally include P4 table lookups (exact, ternary, range, and lpm) and P4 stateful memories such as counters and registers.
  • Low-level Performance instrumentation that can be used to measure and validate the results of compiler optimizations.
  • Compiler generation for API definition and backend implementation for all configurable parts of the P4 program, specifically match tables and action parameters
  • Toolchain generation of VPP specific build environment and plugin instrumentation that allows P4 programs to be built out-of-tree, and dynamically loaded into the VPP execution context.
  • P4 Program Fragments that can be used to test the P4VPP backend functional correctness.
  • P4 Programs and associated test harnesses that represent the VPP CSIT functional and performance test cases. The goal being to establish functional equivalency and performance baselines that can be used to compare the correctness of the compiler as well as the performance results.

Initial Committers

Vendor Neutral

P4 is an open specification development through the collaboration of a number of organizations, and is by design vendor and implementation neutral. Initially the P4VPP project will focus micro-processor optimizations and techniques as necessary to give the best possible performance on but not limited to Intel® server class microprocessors.

Meets Board Policy (including IPR, being within Board defined Scope etc)

Meets board policy as expressed in Technical Community Charter and IP Policy


  • Request for Project proposal consideration
    • Email: (place link to email to TSC proposing project, this can be obtained from TSC Archives
    • Date: (date proposed, makes it simpler to calculate the pre-requisite 2 week time period of gestation before being permitted to be voted on)