From fd.io
Jump to: navigation, search
VPP Facts

Project Lead: Dave Barach

  • Dave Barach
  • Florin Coras
  • Benoit Ganne
  • John Lo
  • Chris Luke
  • Damjan Marion
  • Neale Ranns
  • Matthew Smith
  • Ole Trøan
  • Paul Vinciguerra
  • Dave Wallace
  • Ed Warnicke
  • Andrew Yourtchenko

Repository: git clone https://gerrit.fd.io/r/vpp
Mailing List: vpp-dev@lists.fd.io
Jenkins: jenkins silo
Gerrit Patches: code patches/reviews
Bugs: VPP bugs


What is VPP? - An introduction to the open-source Vector Packet Processing (VPP) platform

VPP - Working Environments - Environments/distributions, etc... that VPP builds/run on.

Feature Summary - A list of features included in VPP

Current Data

Start Here

To get started with VPP check out:


The VPP (Vector Packet Processor) documents can be found in several places. These include

VPP is the core technology behind the FD.io Project. The best place to learn how VPP fits in to the larger FD.io project is the FD.io Main Site. The Fd.io main site also provides a description of how to Get Started Using and Developing with VPP.

The VPP User Documents is the most complete and up to date description of VPP. To get started as a user of VPP look at Getting Started as a VPP User. To get started as a VPP developer look at Get Started as a VPP Developer. To contribute to the user documents look at Writing VPP User Documents.

The VPP Wiki VPP is the simplest and quickest way for advanced developers to share use cases, release plans, project information and more.

The VPP Source Code is documented using Doxygen. The most complete description of the VPP debug CLI is part of these documents. Learn how to document the VPP source code at Writing VPP Source Code Documents.

More VPP related documents:

Get Involved

Getting started with VPP development

Installing VPP binaries from packages - using APT/YUM to install VPP

Pulling, Building, Hacking, and Pushing VPP Code - Explains how to get up and going with the vpp code base. NOTE: supercedes Setting Up Your Dev Environment

Building and Installing A VPP Package - Explains how to build, install and test a VPP package

Alternative builds - various platform and feature specific VPP builds

Reporting Bugs - Explains how to report a bug, specifically: how to gather the required information

Python Version Policy - Explains the selection and support of Python in use for many of the development tools.

VPP Troubleshooting - Various tips/tricks for commonly seen issues

Dive Deeper

The VPP API - design and implementation of the VPP API

API Change Process - Change your production-grade APIs in a compatible way without inhibiting innovation

Build System Deep Dive - A close look at the components of the build system.

Introduction To IP Adjacency - An explanation of the characteristics of IP adjacency and its uses.

Introduction To N-tuple Classifiers - An explanation of classifiers and how to create classifier tables and sessions.

Modifying The Packet Processing Directed Graph - An explanation of how a directed node graph processes packets, and possible ways to change the node graph.

Using VPP In A Multi-thread Model - An explanation of multi-thread modes, configurations, and setup.

Using VPP as a VXLAN Tunnel Terminator - An explanation of the VXLAN tunnel terminator, its features, architecture, and API support.

Adding a VPP tunnel encapsulation - How to add a tunnel encapsulation type to vpp.

Using VPP IPSec and IKEv2 - An explanation of IPSec and IKEv2 configuration.

Reference Material

VPP Software Architecture

VPP Command-line Interface (CLI) User Guide

VPP Command-line Arguments and startup configuration

Writing VPP Documentation

Performance Analysis Tools

How to spot missing prefetches

Buffer Opaque Layout

Feature Arc infrastructure

DPOs and Feature Arcs

Per-feature Notes

VPP Host Stack

Bounded-index extensible hash infrastructure


Deep dive code walkthrough VoDs (recorded at 2016 FD.io pre-launch Event)

VPP video tutorials (collection of short video tutorials).

VPP Howtos (collection of step-by-step howto guides).

VPP training events (videos of VPP training events).

Progressive Tutorial in Using VPP

Use Cases

Use VPP as a Router Between Namespaces - An example configuration of the VPP platform as a router.

Use VPP with dynamic TAP interfaces as a Router Between Containers - Another example of inter-namespace/inter-container routing, using TAP interfaces.

Use VPP to Connect VMs Using Vhost-User Interface - An example of connecting two virtual machines using VPP L2 Bridge and vhost-user interfaces.

Use VPP to Chain VMs Using Vhost-User Interface - An example of chaining two virtual machines and connecting to physical interface.

Use VPP as an LW46 (MAP-E) Terminator - An example configuration of the VPP platform as an lw46 (MAP-E) terminator.

Use VPP for IPv6 Segment Routing - An example of how to leverage SRv6 to create an overlay VPN with underlay optimization.

Use VPP MPLS - Examples for programming VPP for MPLS P/PE support..

Use VPP IP Multicast - Examples for programming VPP for IP Multicast..

Use VPP BIER - Examples for programming VPP for BIER..

Use VPP for Policy Based Routing - Examples for programming VPP for PBR support..

Interconnecting vRouters with VPP - An example to interconnect vRoutes (xrv9000) with VPP using vhost-user feature and VLAN tagging

Use user mode TCP stack with VPP - An example to use user mode TCP stack with VPP using netmap virtual interfaces

Use VPP as a Home Gateway - Configure VPP as a classic ipv4 NAT home gateway

Setup Bi-directional Forwarding Detection - An example on how to setup BFD between VPP and a Cisco Nexus switch

VPP on EC2 instance with SR-IOV support - An example of how to use VPP on EC2 instance with SR-IOV support

How to deploy VPP in an EC2 instance and use it to connect two different VPCs with SR functionalities - How to deploy VPP in an EC2 instance and how use it as router to connect two different VPCs with SR functionalities

VPP Committer Tasks

Release Milestones



NAT plugin - VPP CGN, NAT44, stateful NAT64 project

Security Groups - ACLs, Security Groups, Group Based Policy

VPP/IPFIX - IP Flow Information Export

VPP/AArch64 - VPP on ARM64


VPP/VOM - VPP Object Model

Starter Tasks

If you are looking for tasks to pick up as 'Starter Tasks' to start contributing, we keep a list of those in Jira.

Previous Release Plans

List of all subpages (used or unused)

VPPVPP-16.09 Test Report Performance DataVPP/AArch64
VPP/ABFVPP/API ConceptsVPP/API Versioning
VPP/Alternative buildsVPP/ApiChangeProcessVPP/ArtifactVersioning
VPP/Build, install, and test imagesVPP/Build System Deep DiveVPP/CodeStyleConventions
VPP/Code Walkthrough VoDVPP/Code Walkthrough VoD Topic IndexVPP/Code Walkthrough VoDs
VPP/CodingTipsVPP/Command-line ArgumentsVPP/Command-line Interface (CLI) Guide
VPP/CommitMessagesVPP/CommitterTasks/ApiFreezeVPP/CommitterTasks/Compare API Changes
VPP/Configuration ToolVPP/Configure VPP As A Router Between NamespacesVPP/Configure VPP TAP Interfaces For Container Routing
VPP/Configure an LW46 (MAP-E) TerminatorVPP/CoreFileMismatchVPP/CurrentData
VPP/DHCPKitVPP/DHCPv6VPP/DPOs and Feature Arcs
VPP/DocumentationVPP/EC2 instance with SRIOVVPP/FAQ
VPP/FIBVPP/Feature ArcsVPP/Features
VPP/Features/IPv6VPP/Getting VPP 16.06VPP/Getting VPP Release Binaries
VPP/How To Build The Sample PluginVPP/How To Connect A PCI Interface To VPPVPP/How To Optimize Performance (System Tuning)
VPP/How To Use The API Trace ToolsVPP/How To Use The C APIVPP/How To Use The Packet Generator and Packet Tracer
VPP/How to Create a VPP binary control-plane APIVPP/How to add a tunnel encapsulationVPP/Howtos
VPP/IP adjacency introductionVPP/IPv6 SR VIRL topology fileVPP/Installing VPP binaries from packages
VPP/Interconnecting vRouters with VPPVPP/Introduction To IP AdjacencyVPP/Introduction To N-tuple Classifiers
VPP/Java APIVPP/Java API/Plugin supportVPP/MFIB
VPP/MPLS FIBVPP/MacswappluginVPP/Meeting
VPP/Missing PrefetchesVPP/Modifying The Packet Processing Directed GraphVPP/NAT
VPP/OVNVPP/Per-feature NotesVPP/Performance Analysis Tools
VPP/Progressive VPP TutorialVPP/Pulling, Building, Running, Hacking and Pushing VPP CodeVPP/Pure L3 Between Namespaces with /32s
VPP/Pure L3 Container NetworkingVPP/Pushing and Testing a TagVPP/PythonVersionPolicy
VPP/Python APIVPP/QuickTrexSetupVPP/RM
VPP/Random Hints and Kinks for KVM usageVPP/STN TestingVPP/SecurityGroups
VPP/Segment Routing for IPv6VPP/Segment Routing for MPLSVPP/Setting Up Your Dev Environment
VPP/Software ArchitectureVPP/The VPP APIVPP/Training Events
VPP/Tutorial DPDK and MacSwapVPP/Tutorial Routing and SwitchingVPP/Tutorials
VPP/Use VPP to Chain VMs Using Vhost-User InterfaceVPP/Use VPP to connect VMs Using Vhost-User InterfaceVPP/Using VPP In A Multi-thread Model
VPP/Using VPP as a VXLAN Tunnel TerminatorVPP/Using mTCP user mode TCP stack with VPPVPP/VOM
VPP/VPPHostStack/TestHttpServerVPP/VPP BFD NexusVPP/VPP Home Gateway
VPP/What is ODP4VPP?VPP/What is VPP?VPP/Working with the 16.06 Throttle Branch
VPP/elogVPP/g2VPP/jira workflow
VPP - Working EnvironmentsVPP 16.06 DPDK PatchsetVPP Sandbox
VPP Sandbox/flowtableVPP Sandbox/mmbVPP Sandbox/router
VPP Sandbox/turbotapVPP Sandbox/vpp-userdemoVPP Usability Track