Difference between revisions of "VPP"
AustinMarcos (Talk | contribs) (→Use Cases: Add link to IPv6 segment routing) |
(→Get Involved) |
||
(297 intermediate revisions by 38 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | {{Project Facts |
+ | |name=VPP | ||
+ | |shortname=vpp | ||
+ | |jiraName=VPP | ||
+ | |projectLead=Damjan Marion | ||
+ | |committers= | ||
+ | * Dave Barach | ||
+ | * Florin Coras | ||
+ | * Benoit Ganne | ||
+ | * Mohammed Hawari | ||
+ | * John Lo | ||
+ | * Chris Luke | ||
+ | * Damjan Marion | ||
+ | * Neale Ranns | ||
+ | * Matthew Smith | ||
+ | * Ole Trøan | ||
+ | * Paul Vinciguerra | ||
+ | * Dave Wallace | ||
+ | * Ed Warnicke | ||
+ | * Andrew Yourtchenko | ||
+ | * Fan Zhang | ||
+ | }} | ||
− | + | ==Summary== | |
− | [[VPP/ | + | [[VPP/What is VPP?|What is VPP?]] - An introduction to the open-source Vector Packet Processing (VPP) platform |
− | [[VPP/Build, install, and test images|Building and Installing A VPP Package]] - Explains how to build, install and test a VPP package. | + | [[ VPP - Working Environments ]] - Environments/distributions, etc... that VPP builds/run on. |
+ | |||
+ | [[VPP/Features| Feature Summary]] - A list of features included in VPP | ||
+ | |||
+ | == Get Involved == | ||
+ | |||
+ | * [[VPP/Meeting|VPP Meeting]] | ||
+ | * [https://lists.fd.io/mailman/listinfo/vpp-dev Join the VPP Mailing List] | ||
+ | * [[IRC | Join fdio-vpp IRC channel]] | ||
+ | * [[Projects/vpp/Release_Plans/Release_Plan_24.10| 24.10 Release Plan]] | ||
+ | * [[VPP/Committers/SMEs | Committer subject matter expert list - who should I add as a reviewer to review my patch?]] | ||
+ | * [[VPP/Working with the 16.06 Throttle Branch|Working with Throttle Branches]] | ||
+ | * [[VPP/Installing VPP binaries from packages| Getting the Current Release]] | ||
+ | * [[VPP/CodeStyleConventions | Coding Style]] | ||
+ | * Static Analysis, see [//scan.coverity.com/projects/fd-io-vpp Latest Coverity Run Results] | ||
+ | * Gerrit Code Review, see [https://gerrit.fd.io/r/q/project:vpp+is:open Open VPP Gerrit Changes] or [https://github.com/vpp-dev/vpp-gerrit-report Daily VPP Gerrit Report sorted by status] | ||
+ | |||
+ | ==VPP Documentation== | ||
+ | |||
+ | 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 [https://fd.io FD.io Main Site]. | ||
+ | |||
+ | The [https://fd.io/docs/vpp/master VPP User Documents] is the most complete and up to date description of VPP. To get started as a user of VPP look at the '''Getting Started''' section. For developer guidance, look at the '''Developer Documentation''' section. To contribute to the user documents look at the '''Contributing''' section. | ||
+ | |||
+ | More VPP related documents: | ||
+ | |||
+ | * CSIT Test Reports: [https://fd.io/documentation/csit by VPP version] | ||
+ | |||
+ | * [https://wiki.fd.io/view/File:Fd.io_vpp_overview_29.03.17.pptx VPP design and implementation overview (Powerpoint)] | ||
+ | |||
+ | * [http://stackalytics.com/?release=all&project_type=fdio-group&metric=commits&module=vpp Code Contribution Metrics] | ||
+ | |||
+ | ==Getting started with VPP development== | ||
+ | |||
+ | [[VPP/Installing VPP binaries from packages|Installing VPP binaries from packages]] - using APT/YUM to install VPP | ||
+ | |||
+ | [[VPP/Pulling,_Building,_Running,_Hacking_and_Pushing_VPP_Code| Pulling, Building, Hacking, and Pushing VPP Code]] - Explains how to get up and going with the vpp code base. | ||
+ | |||
+ | [[VPP/Build, install, and test images|Building and Installing A VPP Package]] - Explains how to build, install and test a VPP package | ||
+ | |||
+ | [[VPP/BuildArtifactRetentionPolicy|VPP CI Build Artifact Retention Policy]] - Retention policy for VPP build artifacts uploaded to [https://packagecloud.io/fdio Packagecloud.io/fdio] by CI jobs | ||
+ | |||
+ | [https://fd.io/docs/vpp/master/contributing/reportingissues/index.html Reporting Bugs] - Explains how to report a bug, specifically: how to gather the required information | ||
+ | |||
+ | [[VPP/PythonVersionPolicy|Python Version Policy]] - Explains the selection and support of Python in use for many of the development tools. | ||
==Dive Deeper== | ==Dive Deeper== | ||
+ | |||
+ | [[VPP/The VPP API|The VPP API]] - design and implementation of the VPP API | ||
+ | |||
+ | [[VPP/ApiChangeProcess|API Change Process]] - Change your production-grade APIs in a compatible way without inhibiting innovation | ||
[[VPP/Build_System_Deep_Dive|Build System Deep Dive]] - A close look at the components of the build system. | [[VPP/Build_System_Deep_Dive|Build System Deep Dive]] - A close look at the components of the build system. | ||
Line 18: | Line 86: | ||
[[VPP/Using VPP In A Multi-thread Model|Using VPP In A Multi-thread Model]] - An explanation of multi-thread modes, configurations, and setup. | [[VPP/Using VPP In A Multi-thread Model|Using VPP In A Multi-thread Model]] - An explanation of multi-thread modes, configurations, and setup. | ||
+ | |||
+ | [[VPP/Using VPP as a VXLAN Tunnel Terminator|Using VPP as a VXLAN Tunnel Terminator]] - An explanation of the VXLAN tunnel terminator, its features, architecture, and API support. | ||
+ | |||
+ | [[VPP/How to add a tunnel encapsulation|Adding a VPP tunnel encapsulation]] - How to add a tunnel encapsulation type to vpp. | ||
+ | |||
+ | [[VPP/IPSec and IKEv2|Using VPP IPSec and IKEv2]] - An explanation of IPSec and IKEv2 configuration. | ||
==Reference Material== | ==Reference Material== | ||
− | [[VPP/ | + | [[VPP/Software Architecture | VPP Software Architecture]] |
− | [[VPP/Command-line Arguments | VPP | + | [https://fd.io/docs/vpp/master/cli-reference/gettingstarted/index.html VPP debug Command-line Interface (CLI) User Guide] |
+ | |||
+ | [[VPP/Command-line Arguments | VPP debug CLI arguments and startup configuration]] | ||
+ | |||
+ | [[VPP/Documentation | Writing VPP Documentation]] | ||
+ | |||
+ | [[VPP/Performance Analysis Tools | Performance Analysis Tools]] | ||
+ | |||
+ | [[VPP/Missing Prefetches | How to spot missing prefetches]] | ||
+ | |||
+ | [[VPP/Feature Arcs | Feature Arc infrastructure]] | ||
+ | |||
+ | [[VPP/DPOs and Feature Arcs|DPOs and Feature Arcs]] | ||
+ | |||
+ | [[VPP/Per-feature Notes|Per-feature Notes]] | ||
+ | |||
+ | [[VPP/HostStack | VPP Host Stack]] | ||
+ | |||
+ | [[VPP/Bihash | Bounded-index extensible hash infrastructure]] | ||
+ | |||
+ | [[VPP/MakeTestFramework | Make Test Framework]] | ||
==Tutorials== | ==Tutorials== | ||
− | [[VPP/ | + | [[VPP/Code Walkthrough VoDs | Deep dive code walkthrough VoDs]] (recorded at 2016 FD.io pre-launch Event) |
− | [[VPP/ | + | [[VPP/Tutorials | VPP video tutorials ]] (collection of short video tutorials). |
− | [[VPP/ | + | [[VPP/Howtos| VPP Howtos ]] (collection of step-by-step howto guides). |
− | [[VPP/ | + | [[VPP/Training Events | VPP training events ]] (videos of VPP training events). |
+ | |||
+ | [[VPP/Progressive VPP Tutorial| Progressive Tutorial in Using VPP]] | ||
==Use Cases== | ==Use Cases== | ||
[[VPP/Configure VPP As A Router Between Namespaces|Use VPP as a Router Between Namespaces]] - An example configuration of the VPP platform as a router. | [[VPP/Configure VPP As A Router Between Namespaces|Use VPP as a Router Between Namespaces]] - An example configuration of the VPP platform as a router. | ||
+ | |||
+ | [[VPP/Configure_VPP_TAP_Interfaces_For_Container_Routing|Use VPP with dynamic TAP interfaces as a Router Between Containers]] - Another example of inter-namespace/inter-container routing, using TAP interfaces. | ||
+ | |||
+ | [[VPP/Use VPP to connect VMs Using Vhost-User Interface|Use VPP to Connect VMs Using Vhost-User Interface]] - An example of connecting two virtual machines using VPP L2 Bridge and vhost-user interfaces. | ||
+ | |||
+ | [[VPP/Use VPP to Chain VMs Using Vhost-User Interface|Use VPP to Chain VMs Using Vhost-User Interface]] - An example of chaining two virtual machines and connecting to physical interface. | ||
[[VPP/Configure an LW46 (MAP-E) Terminator|Use VPP as an LW46 (MAP-E) Terminator]] - An example configuration of the VPP platform as an lw46 (MAP-E) terminator. | [[VPP/Configure an LW46 (MAP-E) Terminator|Use VPP as an LW46 (MAP-E) Terminator]] - An example configuration of the VPP platform as an lw46 (MAP-E) terminator. | ||
− | [[VPP/ | + | [[VPP/Segment_Routing_for_IPv6|Use VPP for IPv6 Segment Routing]] - An example of how to leverage SRv6 to create an overlay VPN with underlay optimization. |
+ | |||
+ | [[VPP/MPLS_FIB|Use VPP MPLS]] - Examples for programming VPP for MPLS P/PE support.. | ||
+ | |||
+ | [[VPP/MFIB|Use VPP IP Multicast]] - Examples for programming VPP for IP Multicast.. | ||
+ | |||
+ | [[VPP/MFIB|Use VPP BIER]] - Examples for programming VPP for BIER.. | ||
+ | |||
+ | [[VPP/ABF|Use VPP for Policy Based Routing]] - Examples for programming VPP for PBR support.. | ||
+ | |||
+ | [[VPP/Interconnecting vRouters with VPP|Interconnecting vRouters with VPP]] - An example to interconnect vRoutes (xrv9000) with VPP using vhost-user feature and VLAN tagging | ||
+ | |||
+ | [[VPP/Using_mTCP_user_mode_TCP_stack_with_VPP|Use user mode TCP stack with VPP]] - An example to use user mode TCP stack with VPP using netmap virtual interfaces | ||
+ | |||
+ | [[VPP/VPP Home Gateway|Use VPP as a Home Gateway]] - Configure VPP as a classic ipv4 NAT home gateway | ||
+ | |||
+ | [[VPP/VPP BFD Nexus|Setup Bi-directional Forwarding Detection]] - An example on how to setup BFD between VPP and a Cisco Nexus switch | ||
+ | |||
+ | [[VPP/EC2 instance with SRIOV|VPP on EC2 instance with SR-IOV support]] - An example of how to use VPP on EC2 instance with SR-IOV support | ||
+ | |||
+ | [https://wiki.fd.io/view/How_to_deploy_VPP_in_EC2_instance_and_use_it_to_connect_two_different_VPCs 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 === | ||
+ | |||
+ | *[[VPP/CommitterTasks/ReleasePlan| Release Plan ]] | ||
+ | |||
+ | *[[VPP/CommitterTasks/ApiFreeze| F0: API Freeze]] | ||
+ | |||
+ | *[[VPP/CommitterTasks/PullThrottleBranch| RC1: Pulling a Throttle Branch]] | ||
+ | |||
+ | *[[VPP/CommitterTasks/FinalReleaseCandidate| RC2: Final Release Candidate]] | ||
+ | |||
+ | *[[VPP/CommitterTasks/CutRelease| Formal Release]] | ||
+ | |||
+ | *[[VPP/CommitterTasks/CutPointRelease| Point Release (post Formal Release)]] | ||
+ | |||
+ | === Miscellaneous === | ||
+ | |||
+ | *[[VPP/Pushing and Testing a Tag| Pushing and Testing a Tag]] | ||
+ | |||
+ | == Projects == | ||
+ | [[VPP/NAT|NAT plugin]] - VPP CGN, NAT44, stateful NAT64 project | ||
+ | |||
+ | [[VPP/SecurityGroups|Security Groups]] - ACLs, Security Groups, Group Based Policy | ||
+ | |||
+ | [[VPP/IPFIX]] - IP Flow Information Export | ||
+ | |||
+ | [[VPP/AArch64]] - VPP on ARM64 | ||
+ | |||
+ | [[VPP/DHCPv6]] - DHCPv6 | ||
+ | |||
+ | [[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 [https://jira.fd.io/issues/?filter=11008 list of those in Jira]. | ||
+ | |||
+ | == Previous Release Plans == | ||
+ | * [[Projects/vpp/Release_Plans_Archive | Archived Release Plans]] | ||
+ | |||
+ | == List of all subpages (used or unused) == | ||
+ | |||
+ | {{Special:PrefixIndex |prefix=VPP|hideredirects=1}} |
Latest revision as of 14:01, 22 July 2024
VPP Facts |
Project Lead: Damjan Marion
Repository: git clone https://gerrit.fd.io/r/vpp |
Contents
Summary
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
Get Involved
- VPP Meeting
- Join the VPP Mailing List
- Join fdio-vpp IRC channel
- 24.10 Release Plan
- Committer subject matter expert list - who should I add as a reviewer to review my patch?
- Working with Throttle Branches
- Getting the Current Release
- Coding Style
- Static Analysis, see Latest Coverity Run Results
- Gerrit Code Review, see Open VPP Gerrit Changes or Daily VPP Gerrit Report sorted by status
VPP Documentation
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 VPP User Documents is the most complete and up to date description of VPP. To get started as a user of VPP look at the Getting Started section. For developer guidance, look at the Developer Documentation section. To contribute to the user documents look at the Contributing section.
More VPP related documents:
- CSIT Test Reports: by VPP version
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.
Building and Installing A VPP Package - Explains how to build, install and test a VPP package
VPP CI Build Artifact Retention Policy - Retention policy for VPP build artifacts uploaded to Packagecloud.io/fdio by CI jobs
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.
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 debug Command-line Interface (CLI) User Guide
VPP debug CLI arguments and startup configuration
How to spot missing prefetches
Bounded-index extensible hash infrastructure
Tutorials
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
Miscellaneous
Projects
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/DHCPv6 - DHCPv6
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.