2016-05-03 16:34:59 -04:00
|
|
|
Vector Packet Processing
|
|
|
|
========================
|
|
|
|
|
2016-09-21 09:35:01 -04:00
|
|
|
## Introduction
|
2016-05-03 16:34:59 -04:00
|
|
|
|
|
|
|
The VPP platform is an extensible framework that provides out-of-the-box
|
|
|
|
production quality switch/router functionality. It is the open source version
|
|
|
|
of Cisco's Vector Packet Processing (VPP) technology: a high performance,
|
|
|
|
packet-processing stack that can run on commodity CPUs.
|
|
|
|
|
|
|
|
The benefits of this implementation of VPP are its high performance, proven
|
|
|
|
technology, its modularity and flexibility, and rich feature set.
|
|
|
|
|
|
|
|
For more information on VPP and its features please visit the
|
|
|
|
[FD.io website](http://fd.io/) and
|
|
|
|
[What is VPP?](https://wiki.fd.io/view/VPP/What_is_VPP%3F) pages.
|
|
|
|
|
|
|
|
|
2016-09-21 09:35:01 -04:00
|
|
|
## Changes
|
|
|
|
|
|
|
|
Details of the changes leading up to this version of VPP can be found under
|
|
|
|
@ref release_notes.
|
|
|
|
|
|
|
|
|
|
|
|
## Directory layout
|
2016-05-03 16:34:59 -04:00
|
|
|
|
|
|
|
Directory name | Description
|
|
|
|
---------------------- | -------------------------------------------
|
|
|
|
build-data | Build metadata
|
|
|
|
build-root | Build output directory
|
|
|
|
doxygen | Documentation generator configuration
|
|
|
|
dpdk | DPDK patches and build infrastructure
|
2016-12-28 09:44:47 -05:00
|
|
|
@ref src | VPP source code
|
|
|
|
@ref src/plugins | VPP bundled plugins directory
|
|
|
|
@ref src/svm | Shared virtual memory allocation library
|
|
|
|
src/tests | Unit tests
|
|
|
|
src/vat | VPP API test program
|
|
|
|
@ref src/vlib | VPP application library
|
|
|
|
@ref src/vlibapi | VPP API library
|
|
|
|
@ref src/vlibmemory | VPP Memory management
|
|
|
|
@ref src/vlibsocket | VPP Socket I/O
|
|
|
|
@ref src/vnet | VPP networking
|
|
|
|
@ref src/vpp | VPP application
|
|
|
|
@ref src/vpp-api | VPP application API bindings
|
|
|
|
@ref src/vppinfra | VPP core library
|
2016-05-03 16:34:59 -04:00
|
|
|
test | Unit tests
|
2017-02-17 00:10:53 -05:00
|
|
|
@ref src/vpp/api | Not-yet-relocated API bindings
|
2016-05-03 16:34:59 -04:00
|
|
|
|
|
|
|
|
2016-09-21 09:35:01 -04:00
|
|
|
## Getting started
|
2016-05-03 16:34:59 -04:00
|
|
|
|
|
|
|
In general anyone interested in building, developing or running VPP should
|
|
|
|
consult the [VPP wiki](https://wiki.fd.io/view/VPP) for more complete
|
|
|
|
documentation.
|
|
|
|
|
|
|
|
In particular, readers are recommended to take a look at [Pulling, Building,
|
|
|
|
Running, Hacking, Pushing](https://wiki.fd.io/view/VPP/Pulling,_Building,_Run
|
|
|
|
ning,_Hacking_and_Pushing_VPP_Code) which provides extensive step-by-step
|
|
|
|
coverage of the topic.
|
|
|
|
|
|
|
|
For the impatient, some salient information is distilled below.
|
|
|
|
|
|
|
|
|
2016-09-21 09:35:01 -04:00
|
|
|
### Quick-start: On an existing Linux host
|
2016-05-03 16:34:59 -04:00
|
|
|
|
|
|
|
To install system dependencies, build VPP and then install it, simply run the
|
|
|
|
build script. This should be performed a non-privileged user with `sudo`
|
|
|
|
access from the project base directory:
|
|
|
|
|
|
|
|
./build-root/vagrant/build.sh
|
|
|
|
|
|
|
|
If you want a more fine-grained approach because you intend to do some
|
|
|
|
development work, the `Makefile` in the root directory of the source tree
|
|
|
|
provides several convenience shortcuts as `make` targets that may be of
|
|
|
|
interest. To see the available targets run:
|
|
|
|
|
|
|
|
make
|
|
|
|
|
|
|
|
|
2016-09-21 09:35:01 -04:00
|
|
|
### Quick-start: Vagrant
|
2016-05-03 16:34:59 -04:00
|
|
|
|
|
|
|
The directory `build-root/vagrant` contains a `VagrantFile` and supporting
|
|
|
|
scripts to bootstrap a working VPP inside a Vagrant-managed Virtual Machine.
|
|
|
|
This VM can then be used to test concepts with VPP or as a development
|
|
|
|
platform to extend VPP. Some obvious caveats apply when using a VM for VPP
|
|
|
|
since its performance will never match that of bare metal; if your work is
|
|
|
|
timing or performance sensitive, consider using bare metal in addition or
|
|
|
|
instead of the VM.
|
|
|
|
|
|
|
|
For this to work you will need a working installation of Vagrant. Instructions
|
|
|
|
for this can be found [on the Setting up Vagrant wiki page]
|
|
|
|
(https://wiki.fd.io/view/DEV/Setting_Up_Vagrant).
|
|
|
|
|
|
|
|
|
2016-09-21 09:35:01 -04:00
|
|
|
## More information
|
2016-05-03 16:34:59 -04:00
|
|
|
|
2016-09-14 12:42:54 -04:00
|
|
|
Several modules provide documentation, see @subpage user_doc for more
|
|
|
|
information.
|
|
|
|
|
2016-05-03 16:34:59 -04:00
|
|
|
Visit the [VPP wiki](https://wiki.fd.io/view/VPP) for details on more
|
|
|
|
advanced building strategies and development notes.
|
2017-02-17 00:10:53 -05:00
|
|
|
|
|
|
|
|
|
|
|
## Test Framework
|
|
|
|
|
|
|
|
There is PyDoc generated documentation available for the VPP test framework. See @subpage test_framework_doc for details.
|