FD.io VPP  v16.12-rc0-308-g931be3a
Vector Packet Processing
Startup Configuration

The VPP network stack comes with several configuration options that can be provided either on the command line or in a configuration file.

Specific applications built on the stack have been known to require a dozen arguments, depending on requirements. This section describes commonly-used options and parameters.

You can find command-line argument parsers in the source code by searching for instances of the VLIB_CONFIG_FUNCTION macro. The invocation VLIB_CONFIG_FUNCTION(foo_config, "foo") will cause the function foo_config to receive all the options and values supplied in a parameter block named "`foo`", for example: foo { arg1 arg2 arg3 ... }.

Todo:
Tell the nice people where this document lives so that the might help improve it!

Command-line arguments

Parameters are grouped by a section name. When providing more than one parameter to a section all parameters for that section must be wrapped in curly braces.

1 /usr/bin/vpp unix { interactive cli-listen 127.0.0.1:5002 }

Which will produce output similar to this:

<startup diagnostic messages>
    _______    _        _   _____  ___ 
 __/ __/ _ \  (_)__    | | / / _ \/ _ \
 _/ _// // / / / _ \   | |/ / ___/ ___/
 /_/ /____(_)_/\___/   |___/_/  /_/    

vpp# <start-typing>

When providing only one such parameter the braces are optional. For example, the following command argument, unix interactive does not have braces:

1 /usr/bin/vpp unix interactive

The command line can be presented as a single string or as several; anything given on the command line is concatenated with spaces into a single string before parsing.

VPP applications must be able to locate their own executable images. The simplest way to ensure this will work is to invoke a VPP application by giving its absolute path; for example: /usr/bin/vpp <options>. At startup, VPP applications parse through their own ELF-sections (primarily) to make lists of init, configuration, and exit handlers.

When developing with VPP, in gdb it's often sufficient to start an application like this at the (gdb) prompt:

1 run unix interactive

Configuration file

It is also possible to supply parameters in a startup configuration file the path of which is provided to the VPP application on its command line.

The format of the configuration file is a simple text file with the same content as the command line but with the benefit of being able to use newlines to make the content easier to read. For example:

1 unix {
2  nodaemon
3  log /tmp/vpp.log
4  full-coredump
5  cli-listen localhost:5002
6 }
7 api-trace {
8  on
9 }
10 dpdk {
11  dev 0000:03:00.0
12 }

VPP is then instructed to load this file with the -c option:

1 /usr/bin/vpp -c /etc/vpp/startup.conf

Index of startup command sections

plugins/snat-plugin/snat

vlib-api/vlibapi

vlib-api/vlibsocket

Unix Interface

Circular Journal

Command line session

vnet/vnet/devices/dpdk

vnet/vnet/devices/ssvm

vnet/vnet/devices/virtio

vnet/vnet/l2

vnet/vnet/l2tp

vnet/vnet/unix

vpp/oam

vpp/vnet