VPP

From fd.io
Revision as of 20:18, 26 May 2016 by Hagbard (Talk | contribs)

Jump to: navigation, search
VPP Facts

Project Lead: Dave Barach
Committers:

  • Dave Barach
  • Damjan Marion
  • Dave Wallace
  • John Lo
  • Ole Troan
  • Bud Grise
  • Ed Warnicke
  • Matt Spanik
  • Stefan Kobza
  • Chris Luke
  • Florin Coras
  • Keith Burns

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

Get Involved

Start Here

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

Feature Summary

Pulling, Building, Hacking, and Pushing VPP Code - Explains how to get up and going with the vpp code base.

Setting Up Your Dev Environment - Explains how to set up your development environment and the requirements for using the build tools. Superceded by the more recent Pulling, Building, Hacking, and Pushing VPP Code

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

VPP Troubleshooting - Various tips/tricks for commonly seen issues

Installing VPP binaries from packages

Dive Deeper

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.

The VPP API

API Concepts

Python Language Binding

Java Language Binding

YANG model

Reference Material

VPP Command-line Interface (CLI) User Guide

VPP Command-line Arguments and startup configuration

Performance Analysis Tools

Buffer Opaque Layout

Tutorials

How To Use The Packet Generator and Packet Tracer

How To Build The Sample Plugin

How To Use The API Trace Tools

How To Optimize Performance (System Tuning)

How To Connect A PCI Interface To VPP

How to Create A Binary Control-plane API

Working with Honeycomb - Workflow

Code Walkthrough VoD Topic Index and Notes

Code Walkthrough VoD: Chapter 1 | VPP initialization

Code Walkthrough VoD: Chapter 2 | Performance and Measurements

Code Walkthrough VoD: Chapter 3 | VPP Bring-up and a simple ping test

Code Walkthrough VoD: Chapter 4 | VPP API

Code Walkthrough VoD: Chapter 5 | Build and Deploy a Plugin

Code Walkthrough VoD: Chapter 6 | Deep Dive into a sample plugin

Code Walkthrough VoD: Chapter 7 | VPP Binary API

Code Walkthrough VoD: Chapter 8 | Detour to explain more of VPP API test program

Code Walkthrough VoD: Chapter 9 | Q & A

Code Walkthrough VoD: Chapter 10 | Thread support in VPP

Code Walkthrough VoD: Chapter 11 | Misc Discussions

Code Walkthrough VoD: Chapter 12 | DPDK + VPP interaction

Code Walkthrough VoD: Chapter 13 | Discussion on rte_mbuf structure

Code Walkthrough VoD: Chapter 14 | How DPDK is patched and compiled in VPP

Code Walkthrough VoD: Chapter 15 | Q & A

Code Walkthrough VoD: Chapter 16 | Thank You

Video Tutorial: AARCH64_THUNDERX

Video Tutorial: VPP-based vSwitch Performance

Video Tutorial: vppfib walkthrough

Video Tutorial: vpp elog walkthrough

Video Tutorial: vppinfra walkthrough

Video Tutorial: vpp workflow walkthrough

Video Playlist: Training/Hackfest 2016-04-07

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 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 configuration of the VPP platform for IPv6 segment routing.

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