diff --git a/Makefile b/Makefile
index e5172eb..ff523ed 100644
--- a/Makefile
+++ b/Makefile
@@ -684,7 +684,7 @@
 	@($(SPHINX_SCRIPTS_DIR)/sphinx-make.sh venv)
 
 .PHONY: docs
-docs: $(DOCS_DIR) docs-venv
+docs: $(DOCS_DIR)
 	@($(SPHINX_SCRIPTS_DIR)/sphinx-make.sh html)
 
 .PHONY: docs-clean
diff --git a/docs/about.rst b/docs/about.rst
index eae97b2..06dc7c4 100644
--- a/docs/about.rst
+++ b/docs/about.rst
@@ -4,6 +4,6 @@
 About
 =====
 
-**VPP Version:** 20.01-rc0~594-g340c15c6e
+**VPP Version:** 20.01-rc0~785-g1063f2ae8
 
-**Built on:** Wed Nov  6 18:47:36 GMT 2019
+**Built on:** Tue Dec 10 19:22:28 GMT 2019
diff --git a/docs/gettingstarted/users/configuring/startup.rst b/docs/gettingstarted/users/configuring/startup.rst
index ecb143f..6ec2b97 100644
--- a/docs/gettingstarted/users/configuring/startup.rst
+++ b/docs/gettingstarted/users/configuring/startup.rst
@@ -1,27 +1,23 @@
 .. _startup:
 
-=======================================
-VPP Configuration File - 'startup.conf'
-=======================================
-
+==========================================
+VPP Configuration - CLI and 'startup.conf'
+==========================================
 
 After a successful installation, VPP installs a startup config file named
 *startup.conf* in the */etc/vpp/* directory. This file can be tailored to
 make VPP run as desired, but contains default values for typical installations.
 
-Below are more details about this file and the parameters and values it contains.
-
-Introduction
-------------
-
-The VPP network stack comes with several configuration options that can be
-provided either on the command line when VPP is started, or in a configuration
-file. Specific applications built on the stack have been known to require a dozen
-arguments, depending on requirements.
+Below are more details about this file and some of the the parameters and values
+it contains.
 
 Command-line Arguments
 ----------------------
 
+Before we describe details of the startup configuration file (startup.conf) it
+should be mentioned that VPP can be started without a startup configuration
+file.
+
 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. For example, to start VPP with configuration data via the
@@ -47,14 +43,21 @@
 
     (gdb) run unix interactive
 
-Configuration File
-------------------
 
-It is also possible to supply the configuration parameters in a startup
-configuration. The path of the file 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:
+Startup Configuration File (startup.conf)
+-----------------------------------------
+
+The more typical way to specify the startup configuration to VPP is with the
+startup configuration file (startup.conf).
+
+The path of the file is provided to the VPP application on the command line.
+This is typically at /etc/vpp/startup.conf. If VPP is installed as a package
+a default startup.conf file is provided at this location.
+
+The format of the configuration file is a simple text file with the same content
+as the command line.
+
+**A very simple startup.conf file:**
 
 .. code-block:: console
 
@@ -65,521 +68,791 @@
       full-coredump
       cli-listen localhost:5002
     }
-    
+
     api-trace {
       on
     }
-    
+
     dpdk {
       dev 0000:03:00.0
     }
 
-VPP is then instructed to load this file with the -c option. For example:
+VPP is instructed to load this file with the -c option. For example:
 
 .. code-block:: console
 
     $ sudo /usr/bin/vpp -c /etc/vpp/startup.conf
 
-When the VPP service is started, VPP is started with this option via another
-installed file, vpp.service (Ubuntu: /lib/systemd/system/vpp.service and
-CentOS: /usr/lib/systemd/system/vpp.service). See *'ExecStart'* below:
-
-.. code-block:: console
-
-    $ cat /lib/systemd/system/vpp.service
-    [Unit]
-    Description=vector packet processing engine
-    After=network.target
-    
-    [Service]
-    Type=simple
-    ExecStartPre=-/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api
-    ExecStartPre=-/sbin/modprobe uio_pci_generic
-    ExecStart=/usr/bin/vpp -c /etc/vpp/startup.conf
-    ExecStopPost=/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api
-    Restart=always
-    
-    [Install]
-    WantedBy=multi-user.target
-
-
 Configuration Parameters
 ------------------------
 
-Below is the list of section names and their associated parameters. This is not
-an exhaustive list of parameters available. The command-line argument parsers
-can be found in the source code by searching for instances of the
-**VLIB_CONFIG_FUNCTION** and **VLIB_EARLY_CONFIG_FUNCTION** macro.
+Below is the list of some section names and their associated parameters.
+This is not an exhaustive list, but should give you an idea of how VPP can be configured.
+
+For all of the configuration parameters search the source code for instances of
+**VLIB_CONFIG_FUNCTION** and **VLIB_EARLY_CONFIG_FUNCTION**.
 
 For example, the invocation *'VLIB_CONFIG_FUNCTION (foo_config, "foo")'* will
 cause the function *'foo_config'* to receive all parameters given in a
-parameter block named "foo": "foo { arg1 arg2 arg3 ... }". 
+parameter block named "foo": "foo { arg1 arg2 arg3 ... }".
 
+The unix section
+----------------
 
-List of Basic Parameters:
--------------------------
-
-| unix_ 
-| dpdk_ 
-| cpu_  
-
-List of Advanced Parameters:
-----------------------------
-
-| acl-plugin_ 
-| api-queue_
-| api-segment_
-| api-trace_
-| buffers_
-| cj_
-| dns_
-| heapsize_
-| ip_
-| ip6_
-| l2learn_
-| l2tp_
-| logging_
-| mactime_
-| map_
-| mc_
-| nat_
-| oam_
-| plugins_
-| plugin_path_
-| punt_
-| session_
-| socketsvr_
-| stats_
-| statseg_
-| tapcli_
-| tcp_
-| tls_
-| tuntap_
-| vhost-user_
-| vlib_
-
-.. _unix:
-
-"unix" Parameters
-_________________
-
-Configure VPP startup and behavior type attributes, as well and any OS based
+Configures VPP startup and behavior type attributes, as well and any OS based
 attributes.
 
- * **interactive**
-     Attach CLI to stdin/out and provide a debugging command line interface.
-     Implies nodaemon.
-     
-     **Example:** interactive
-     
- * **nodaemon**
-     Do not fork / background the vpp process. Typical when invoking VPP
-     applications from a process monitor. Set by default in the default
-     *'startup.conf'* file.
-     
-     **Example:** nodaemon
-     
- * **log <filename>**
-     Logs the startup configuration and all subsequent CLI commands in filename.
-     Very useful in situations where folks don't remember or can't be bothered
-     to include CLI commands in bug reports. The default *'startup.conf'* file
-     is to write to *'/var/log/vpp/vpp.log'*.
-     
-     In VPP 18.04, the default log file location was moved from '/tmp/vpp.log'
-     to '/var/log/vpp/vpp.log' . The VPP code is indifferent to the file location.
-     However, if SELinux is enabled, then the new location is required for the file
-     to be properly labeled. Check your local *'startup.conf'* file for the log file
-     location on your system.
-     
-     **Example:** log /var/log/vpp/vpp-debug.log
-     
- * **exec|startup-config <filename>**
-     Read startup operational configuration from filename. The contents of the file
-     will be performed as though entered at the CLI. The two keywords are aliases
-     for the same function; if both are specified, only the last will have an effect.
-     The file contains CLI commands, for example:
+.. code-block:: console
 
-     | $ cat /usr/share/vpp/scripts/interface-up.txt
-     | set interface state TenGigabitEthernet1/0/0 up
-     | set interface state TenGigabitEthernet1/0/1 up
-     
-     **Example:** startup-config /usr/share/vpp/scripts/interface-up.txt
-     
- * **gid number|name>**
-     Sets the effective group ID to the input group ID or group name of the calling
-     process.
-     
-     **Example:** gid vpp
-     
- * **full-coredump**
-     Ask the Linux kernel to dump all memory-mapped address regions, instead of
-     just text+data+bss.
-     
-     **Example:** full-coredump
-     
- * **coredump-size unlimited|<n>G|<n>M|<n>K|<n>**
+  unix {
+    nodaemon
+    log /var/log/vpp/vpp.log
+    full-coredump
+    cli-listen /run/vpp/cli.sock
+    gid vpp
+  }
+
+nodaemon
+^^^^^^^^
+
+Do not fork / background the vpp process. Typical when invoking VPP
+applications from a process monitor. Set by default in the default
+*'startup.conf'* file.
+
+.. code-block:: console
+
+   nodaemon
+
+interactive
+^^^^^^^^^^^
+
+Attach CLI to stdin/out and provide a debugging command line interface.
+
+.. code-block:: console
+
+   interactive
+
+log <filename>
+^^^^^^^^^^^^^^
+
+Logs the startup configuration and all subsequent CLI commands in filename.
+Very useful in situations where folks don't remember or can't be bothered
+to include CLI commands in bug reports. The default *'startup.conf'* file
+is to write to *'/var/log/vpp/vpp.log'*.
+
+In VPP 18.04, the default log file location was moved from '/tmp/vpp.log'
+to '/var/log/vpp/vpp.log' . The VPP code is indifferent to the file location.
+However, if SELinux is enabled, then the new location is required for the file
+to be properly labeled. Check your local *'startup.conf'* file for the log file
+location on your system.
+
+.. code-block:: console
+
+   log /var/log/vpp/vpp-debug.log
+
+exec | startup-config <filename>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Read startup operational configuration from filename. The contents of the file
+will be performed as though entered at the CLI. The two keywords are aliases
+for the same function; if both are specified, only the last will have an effect.
+
+A file of CLI commands might look like:
+
+.. code-block:: console
+
+   $ cat /usr/share/vpp/scripts/interface-up.txt
+   set interface state TenGigabitEthernet1/0/0 up
+   set interface state TenGigabitEthernet1/0/1 up
+
+Parameter Example:
+
+.. code-block:: console
+
+     startup-config /usr/share/vpp/scripts/interface-up.txt
+
+gid <number | name>
+^^^^^^^^^^^^^^^^^^^
+
+Sets the effective group ID to the input group ID or group name of the calling
+process.
+
+.. code-block:: console
+
+   gid vpp
+
+full-coredump
+^^^^^^^^^^^^^
+
+Ask the Linux kernel to dump all memory-mapped address regions, instead of
+just text+data+bss.
+
+.. code-block:: console
+
+   full-coredump
+
+coredump-size unlimited | <n>G | <n>M | <n>K | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
      Set the maximum size of the coredump file. The input value can be set in
      GB, MB, KB or bytes, or set to *'unlimited'*.
-     
-     **Example:** coredump-size unlimited
-     
- * **cli-listen <ipaddress:port>|<socket-path>**
+
+.. code-block:: console
+
+   coredump-size unlimited
+
+cli-listen <ipaddress:port> | <socket-path>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
      Bind the CLI to listen at address localhost on TCP port 5002. This will
      accept an ipaddress:port pair or a filesystem path; in the latter case a
      local Unix socket is opened instead. The default *'startup.conf'* file
      is to open the socket *'/run/vpp/cli.sock'*.
-     
-     **Example:** cli-listen localhost:5002
-     **Example:** cli-listen /run/vpp/cli.sock
-     
- * **cli-line-mode**
+
+.. code-block:: console
+
+     cli-listen localhost:5002
+     cli-listen /run/vpp/cli.sock
+
+cli-line-mode
+^^^^^^^^^^^^^
+
      Disable character-by-character I/O on stdin. Useful when combined with,
      for example, emacs M-x gud-gdb.
-     
-     **Example:** cli-line-mode
-     
- * **cli-prompt <string>**
+
+.. code-block:: console
+
+   cli-line-mode
+
+cli-prompt <string>
+^^^^^^^^^^^^^^^^^^^
+
      Configure the CLI prompt to be string.
-     
-     **Example:** cli-prompt vpp-2
-     
- * **cli-history-limit <n>**
+
+.. code-block:: console
+
+     cli-prompt vpp-2
+
+cli-history-limit <n>
+^^^^^^^^^^^^^^^^^^^^^
+
      Limit command history to <n> lines. A value of 0 disables command history.
      Default value: 50
-     
-     **Example:** cli-history-limit 100
-     
- * **cli-no-banner**
+
+.. code-block:: console
+
+     cli-history-limit 100
+
+cli-no-banner
+^^^^^^^^^^^^^
+
      Disable the login banner on stdin and Telnet connections.
-     
-     **Example:** cli-no-banner
-     
- * **cli-no-pager**
+
+.. code-block:: console
+
+     cli-no-banner
+
+cli-no-pager
+^^^^^^^^^^^^
+
      Disable the output pager.
-     
-     **Example:** cli-no-pager
-     
- * **cli-pager-buffer-limit <n>**
+
+.. code-block:: console
+
+     cli-no-pager
+
+cli-pager-buffer-limit <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
      Limit pager buffer to <n> lines of output. A value of 0 disables the
      pager. Default value: 100000
-     
-     **Example:** cli-pager-buffer-limit 5000
-     
- * **runtime-dir <dir>**
+
+.. code-block:: console
+
+     cli-pager-buffer-limit 5000
+
+runtime-dir <dir>
+^^^^^^^^^^^^^^^^^
+
      Set the runtime directory, which is the default location for certain
      files, like socket files. Default is based on User ID used to start VPP.
      Typically it is *'root'*, which defaults to *'/run/vpp/'*. Otherwise,
      defaults to *'/run/user/<uid>/vpp/'*.
-     
-     **Example:** runtime-dir /tmp/vpp
-     
- * **poll-sleep-usec <n>**
-     Add a fixed-sleep between main loop poll. Default is 0, which is not to
-     sleep.
-     
-     **Example:** poll-sleep-usec 100
-     
- * **pidfile <filename>**
-     Writes the pid of the main thread in the given filename.
-     
-     **Example:** pidfile /run/vpp/vpp1.pid
-
-.. _dpdk:
-
-"dpdk" Parameters
-_________________
-
-Command line DPDK configuration controls a number of parameters, including
-device whitelisting, the number of CPUs available for launching
-dpdk-eal-controlled threads, the number of I/O buffers, and the process
-affinity mask. In addition, the DPDK configuration function attempts to support
-all of the DPDK EAL configuration parameters.
-
-All of the DPDK EAL options should be available.
-See ../src/plugins/dpdk/device/dpdk_priv.h, look at the set of
-"foreach_eal_XXX" macros.
-
-Popular options include:
- * **dev <pci-dev>**
-     White-list [as in, attempt to drive] a specific PCI device. PCI-dev is a
-     string of the form "DDDD:BB:SS.F" where:
-     
-        | DDDD = Domain
-        | BB = Bus Number
-        | SS = Slot number
-        | F = Function
-     
-     This is the same format used in the linux sysfs tree (i.e.
-     /sys/bus/pci/devices) for PCI device directory names.
-     
-     **Example:** dev 0000:02:00.0
-     
- * **dev <pci-dev> { .. }**
-     When whitelisting specific interfaces by specifying PCI address,
-     additional custom parameters can also be specified. Valid options include:
-
-      * **num-rx-queues <n>**
-          Number of receive queues. Also enables RSS. Default value is 1.
-      * **num-tx-queues <n>**
-          Number of transmit queues. Default is equal to number of worker
-          threads or 1 if no workers treads.
-      * **num-rx-desc <n>**
-          Number of descriptors in receive ring. Increasing or reducing number
-          can impact performance. Default is 1024.
-      * **num-rt-desc <n>**
-          Number of descriptors in transmit ring. Increasing or reducing number
-          can impact performance. Default is 1024.
-      * **workers**
-          TBD
-      * **vlan-strip-offload on|off**:
-          VLAN strip offload mode for interface. VLAN stripping is off by default
-          for all NICs except VICs, using ENIC driver, which has VLAN stripping on
-          by default.
-      * **hqos**
-          Enable the Hierarchical Quality-of-Service (HQoS) scheduler, default is
-          disabled. This enables HQoS on specific output interface.
-      * **hqos { .. }**
-          HQoS can also have its own set of custom parameters. Setting a custom
-          parameter also enables HQoS.
-
-          * **hqos-thread <n>**
-              HQoS thread used by this interface. To setup a pool of threads that
-              are shared by all HQoS interfaces, set via the*'cpu'* section using
-              either *'corelist-hqos-threads'* or *'coremask-hqos-threads'*.
-
-      * **rss**
-          TBD
-     
-     **Example:**
-     
-                 | dev 0000:02:00.1 {
-                 |    num-rx-queues 2 
-                 |    num-tx-queues 2
-                 | }
-
- * **vdev <eal-command>**
-     Provide a DPDK EAL command to specify bonded Ethernet interfaces, operating
-     modes and PCI addresses of slave links. Only XOR balanced (mode 2) mode is
-     supported.
-     
-     **Example:**
-
-                 | vdev eth_bond0,mode=2,slave=0000:0f:00.0,slave=0000:11:00.0,xmit_policy=l34
-                 | vdev eth_bond1,mode=2,slave=0000:10:00.0,slave=0000:12:00.0,xmit_policy=l34
-
- * **num-mbufs <n>**
-     Increase number of buffers allocated. May be needed in scenarios with
-     large number of interfaces and worker threads, or a lot of physical
-     interfaces with multiple RSS queues. Value is per CPU socket. Default is
-     16384.
-     
-     **Example:** num-mbufs 128000
-
- * **no-pci**
-     When VPP is started, if an interface is not owned by the linux kernel
-     (interface is administratively down), VPP will attempt to manage the
-     interface. *'no-pci'* indicates that VPP should not walk the PCI table
-     looking for interfaces.
-     
-     **Example:** no-pci
-
- * **no-hugetlb**
-     Don't use huge TLB pages. Potentially useful for running simulator images.
-     
-     **Example:** no-hugetlb
-
- * **kni <n>**
-     Number of KNI interfaces. Refer to the DPDK documentation.
-     
-     **Example:** kni 2
-
- * **uio-driver uio_pci_generic|igb_uio|vfio-pci|auto**
-     Change UIO driver used by VPP. Default is *'auto'*.
-     
-     **Example:** uio-driver igb_uio
-
- * **socket-mem <n>**
-     Change hugepages allocation per-socket, needed only if there is need for
-     larger number of mbufs. Default is 64 hugepages on each detected CPU
-     socket.
-     
-     **Example:** socket-mem 2048,2048
-
-**Other options include:**
-
- * **enable-tcp-udp-checksum**
-     Enables UDP/TCP RX checksum offload.
-     
-     **Example:** enable-tcp-udp-checksum
-
- * **no-multi-seg**
-     Disable multi-segment buffers, improves performance but disables Jumbo MTU
-     support.
-     
-     **Example:** no-multi-seg
-
- * **no-tx-checksum-offload**
-     Disables UDP/TCP TX checksum offload. Typically needed for use faster
-     vector PMDs (together with no-multi-seg).
-     
-     **Example:** no-tx-checksum-offload
-
- * **decimal-interface-names**
-     Format DPDK device names with decimal, as opposed to hexadecimal. 
-     
-     **Example:** decimal-interface-names
-
- * **log-level  emergency|alert|critical|error|warning|notice|info|debug**
-     Set the log level for DPDK logs. Default is *'notice'*.
-     
-     **Example:** log-level error
-
- * **dev default { .. }**
-     Change default settings for all interfaces. This sections supports the
-     same set of custom parameters described in *'dev <pci-dev> { .. }*'.
-     
-     **Example:**
-
-                 | dev default {
-                 |    num-rx-queues 3
-                 |    num-tx-queues 3
-                 | }
-
-.. _cpu:
-
-"cpu" Parameters
-________________
-
-Command-line CPU configuration controls the creation of named thread types, and
-the cpu affinity thereof. In the VPP there is one main thread and optionally
-the user can create worker(s). The main thread and worker thread(s) can be
-pinned to CPU core(s) automatically or manually.
-
-**Automatic Pinning:**
-
- * **workers <n>**
-     Create <n> worker threads.
-     
-     **Example:** workers 4
-
- * **io <n>**
-     Create <n> i/o threads.
-     
-     **Example:** io 2
- 
- * **main-thread-io**
-     Handle i/o devices from thread 0, hand off traffic to worker threads.
-     Requires "workers <n>".
-     
-     **Example:** main-thread-io
- 
- * **skip-cores <n>**
-     Sets number of CPU core(s) to be skipped (1 ... N-1). Skipped CPU core(s)
-     are not used for pinning main thread and working thread(s). The main thread
-     is automatically pinned to the first available CPU core and worker(s) are
-     pinned to next free CPU core(s) after core assigned to main threadLeave
-     the low nn bits of the process affinity mask clear.
-     
-     **Example:** skip-cores 4
-
-**Manual Pinning:**
-
- * **main-core <n>**
-     Assign main thread to a specific core.
-     
-     **Example:** main-core 1
-     
- * **coremask-workers <hex-mask>**
-     Place worker threads according to the bitmap hex-mask.
-     
-     **Example:** coremask-workers 0x0000000000C0000C
-     
- * **corelist-workers <list>**
-     Same as coremask-workers but accepts a list of cores instead of a bitmap.
-     
-     **Example:** corelist-workers 2-3,18-19
-     
- * **coremask-io <hex-mask>**
-     Place I/O threads according to the bitmap hex-mask.
-     
-     **Example:** coremask-io 0x0000000003000030
-     
- * **corelist-io <list>**
-     Same as coremask-io but accepts a list of cores instead of a bitmap.
-     
-     **Example:** corelist-io 4-5,20-21
-     
- * **coremask-hqos-threads <hex-mask>**
-     Place HQoS threads according to the bitmap hex-mask. A HQoS thread can
-     run multiple HQoS objects each associated with different output interfaces.
-     
-     **Example:** coremask-hqos-threads 0x000000000C0000C0
-
- * **corelist-hqos-threads <list>**
-     Same as coremask-hqos-threads but accepts a list of cores instead of a
-     bitmap.
-     
-     **Example:** corelist-hqos-threads 6-7,22-23
-
-**Other:**
-
- * **use-pthreads**
-     TBD
-     
-     **Example:** use-pthreads
-
- * **thread-prefix <prefix>**
-     Set a prefix to be prepended to each thread name. The thread name already
-     contains an underscore. If not provided, the default is *'vpp'*.
-     Currently, prefix used on threads: *'vpp_main'*, *'vpp_stats'*
-     
-     **Example:** thread-prefix vpp1
-
- * **scheduler-policy rr|fifo|batch|idle|other**
-     TBD
-     
-     **Example:** scheduler-policy fifo
-
- * **scheduler-priority <n>**
-     Set the scheduler priority. Only valid if the *'scheduler-policy'* is set
-     to *'fifo'* or *'rr'*. The valid ranges for the scheduler priority depends
-     on the *'scheduler-policy'* and the current kernel version running. The
-     range is typically 1 to 99, but see the linux man pages for *'sched'* for
-     more details. If this value is not set, the current linux kernel default
-     is left in place.
-     
-     **Example:** scheduler-priority 50
-
- * **<thread-name> <count>**
-     Set the number of threads for a given thread (by name). Some threads, like
-     *'stats'*, have a fixed number of threads and cannot be changed. List of
-     possible threads include (but not limited too): hqos-threads, workers
-     
-     **Example:** hqos-threads 2
-
-.. note::
-
-    The "main" thread always occupies the lowest core-id specified in the
-    DPDK [process-level] coremask.
-
-Here's a full-bore manual placement example:
 
 .. code-block:: console
 
-   /usr/bin/vpp  unix interactive tuntap disable cpu { main-thread-io coremask-workers 18 coremask-stats 4 } dpdk { coremask 1e }
-   
-   # taskset -a -p <vpe-pid>
-   pid 16251's current affinity mask: 2        # main thread
-   pid 16288's current affinity mask: ffffff   # DPDK interrupt thread (not bound to a core)
-   pid 16289's current affinity mask: 4        # stats thread
-   pid 16290's current affinity mask: 8        # worker thread 0
-   pid 16291's current affinity mask: 10       # worker thread 1
+     runtime-dir /tmp/vpp
+
+poll-sleep-usec <n>
+^^^^^^^^^^^^^^^^^^^
+
+     Add a fixed-sleep between main loop poll. Default is 0, which is not to
+     sleep.
+
+.. code-block:: console
+
+     poll-sleep-usec 100
+
+pidfile <filename>
+^^^^^^^^^^^^^^^^^^
+
+     Writes the pid of the main thread in the given filename.
+
+.. code-block:: console
+
+     pidfile /run/vpp/vpp1.pid
 
 
-.. _acl-plugin:
+The api-trace Section
+---------------------
 
-"acl-plugin" Parameters
-_______________________
+The ability to trace, dump, and replay control-plane API traces makes all the
+difference in the world when trying to understand what the control-plane has
+tried to ask the forwarding-plane to do.
+
+Typically, one simply enables the API message trace scheme:
+
+.. code-block:: console
+
+   api-trace {
+     api-trace on
+   }
+
+on | enable
+^^^^^^^^^^^
+
+     Enable API trace capture from the beginning of time, and arrange for a
+     post-mortem dump of the API trace if the application terminates abnormally.
+     By default, the (circular) trace buffer will be configured to capture
+     256K traces. The default *'startup.conf'* file has trace enabled by default,
+     and unless there is a very strong reason, it should remain enabled.
+
+.. code-block:: console
+
+    on
+
+nitems <n>
+^^^^^^^^^^
+
+     Configure the circular trace buffer to contain the last <n> entries. By
+     default, the trace buffer captures the last 256K API messages received.
+
+.. code-block:: console
+
+    nitems 524288
+
+save-api-table <filename>
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+     Dumps the API message table to /tmp/<filename>.
+
+.. code-block:: console
+
+    save-api-table apiTrace-07-04.txt
+
+
+The api-segment Section
+-----------------------
+
+These values control various aspects of the binary API interface to VPP.
+
+The default looks like the following:
+
+.. code-block:: console
+
+   api-segment {
+     gid vpp
+   }
+
+
+prefix <path>
+^^^^^^^^^^^^^
+
+     Sets the prefix prepended to the name used for shared memory (SHM)
+     segments. The default is empty, meaning shared memory segments are created
+     directly in the SHM directory *'/dev/shm'*. It is worth noting that on
+     many systems *'/dev/shm'* is a symbolic link to somewhere else in the file
+     system; Ubuntu links it to *'/run/shm'*.
+
+.. code-block:: console
+
+    prefix /run/shm
+
+uid <number | name>
+^^^^^^^^^^^^^^^^^^^
+
+     Sets the user ID or name that should be used to set the ownership of the
+     shared memory segments. Defaults to the same user that VPP is started
+     with, probably root.
+
+.. code-block:: console
+
+    uid root
+
+gid <number | name>
+^^^^^^^^^^^^^^^^^^^
+
+     Sets the group ID or name that should be used to set the ownership of the
+     shared memory segments. Defaults to the same group that VPP is started
+     with, probably root.
+
+.. code-block:: console
+
+    gid vpp
+
+**The following parameters should only be set by those that are familiar with the
+interworkings of VPP.**
+
+baseva <x>
+^^^^^^^^^^
+
+     Set the base address for SVM global region. If not set, on AArch64, the
+     code will try to determine the base address. All other default to
+     0x30000000.
+
+.. code-block:: console
+
+    baseva 0x20000000
+
+global-size <n>G | <n>M | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+     Set the global memory size, memory shared across all router instances,
+     packet buffers, etc. If not set, defaults to 64M. The input value can be
+     set in GB, MB or bytes.
+
+.. code-block:: console
+
+    global-size 2G
+
+global-pvt-heap-size <n>M | size <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+     Set the size of the global VM private mheap. If not set, defaults to 128k.
+     The input value can be set in MB or bytes.
+
+.. code-block:: console
+
+    global-pvt-heap-size size 262144
+
+api-pvt-heap-size <n>M | size <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+     Set the size of the api private mheap. If not set, defaults to 128k.
+     The input value can be set in MB or bytes.
+
+.. code-block:: console
+
+    api-pvt-heap-size 1M
+
+api-size <n>M | <n>G | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+     Set the size of the API region. If not set, defaults to 16M. The input
+     value can be set in GB, MB or bytes.
+
+.. code-block:: console
+
+    api-size 64M
+
+The socksvr Section
+-------------------
+
+Enables a Unix domain socket which processes binary API messages. See
+.../vlibmemory/socket_api.c.  If this parameter is not set, vpp
+won't process binary API messages over sockets.
+
+.. code-block:: console
+
+   socksvr {
+      # Explicitly name a socket file
+      socket-name /run/vpp/api.sock
+      or
+      # Use defaults as described below
+      default
+   }
+
+The "default" keyword instructs vpp to use /run/vpp/api.sock when
+running as root, otherwise to use /run/user/<uid>/api.sock.
+
+The cpu Section
+---------------
+
+In the VPP there is one main thread and optionally the user can create worker(s)
+The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
+
+.. code-block:: console
+
+   cpu {
+      main-core 1
+      corelist-workers 2-3,18-19
+   }
+
+
+Manual pinning of thread(s) to CPU core(s)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+main-core
+^^^^^^^^^
+
+Set logical CPU core where main thread runs, if main core is not set VPP will use
+core 1 if available
+
+.. code-block:: console
+
+   main-core 1
+
+corelist-workers
+^^^^^^^^^^^^^^^^
+
+Set logical CPU core(s) where worker threads are running
+
+.. code-block:: console
+
+   corelist-workers 2-3,18-19
+
+Automatic pinning of thread(s) to CPU core(s)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+skip-cores number
+^^^^^^^^^^^^^^^^^
+
+Sets number of CPU core(s) to be skipped (1 ... N-1), Skipped CPU core(s) are
+not used for pinning main thread and working thread(s).
+
+The main thread is automatically pinned to the first available CPU core and worker(s)
+are pinned to next free CPU core(s) after core assigned to main thread
+
+.. code-block:: console
+
+   skip-cores 4
+
+workers number
+^^^^^^^^^^^^^^
+
+Specify a number of workers to be created Workers are pinned to N consecutive
+CPU cores while skipping "skip-cores" CPU core(s) and main thread's CPU core
+
+.. code-block:: console
+
+   workers 2
+
+scheduler-policy other | batch | idle | fifo | rr
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Set scheduling policy and priority of main and worker threads
+
+Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
+idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
+
+.. code-block:: console
+
+   scheduler-policy fifo
+
+scheduler-priority number
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Scheduling priority is used only for "real-time policies (fifo and rr),
+and has to be in the range of priorities supported for a particular policy
+
+.. code-block:: console
+
+   scheduler-priority 50
+
+The buffers Section
+-------------------
+
+.. code-block:: console
+
+   buffers {
+      buffers-per-numa 128000
+      default data-size 2048
+   }
+
+buffers-per-numa number
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Increase number of buffers allocated, needed only in scenarios with
+large number of interfaces and worker threads. Value is per numa node.
+Default is 16384 (8192 if running unpriviledged)
+
+.. code-block:: console
+
+   buffers-per-numa 128000
+
+default data-size number
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Size of buffer data area, default is 2048
+
+.. code-block:: console
+
+   default data-size 2048
+
+
+The dpdk Section
+----------------
+
+.. code-block:: console
+
+   dpdk {
+      dev default {
+         num-rx-desc 512
+         num-tx-desc 512
+      }
+
+      dev 0000:02:00.1 {
+         num-rx-queues 2
+         name eth0
+      }
+   }
+
+dev <pci-dev> | default { .. }
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+White-list [as in, attempt to drive] a specific PCI device. PCI-dev is a
+string of the form "DDDD:BB:SS.F" where:
+
+* DDDD = Domain
+* BB = Bus Number
+* SS = Slot number
+* F = Function
+
+If the keywork **default** is used the values will apply to all the devices.
+
+This is the same format used in the linux sysfs tree (i.e./sys/bus/pci/devices)
+for PCI device directory names.
+
+.. code-block:: console
+
+   dpdk {
+      dev default {
+         num-rx-desc 512
+         num-tx-desc 512
+      }
+
+dev <pci-dev> { .. }
+^^^^^^^^^^^^^^^^^^^^
+
+Whitelist specific interface by specifying PCI address. When whitelisting specific
+interfaces by specifying PCI address, additional custom parameters can also be
+specified. Valid options include:
+
+.. code-block:: console
+
+   dev 0000:02:00.0
+   dev 0000:03:00.0
+
+blacklist <pci-dev>
+^^^^^^^^^^^^^^^^^^^
+
+Blacklist specific device type by specifying PCI vendor:device Whitelist entries
+take precedence
+
+.. code-block:: console
+
+   blacklist 8086:10fb
+
+name interface-name
+^^^^^^^^^^^^^^^^^^^
+
+Set interface name
+
+.. code-block:: console
+
+   dev 0000:02:00.1 {
+      name eth0
+   }
+
+num-rx-queues <n>
+^^^^^^^^^^^^^^^^^
+
+Number of receive queues. Also enables RSS. Default value is 1.
+
+.. code-block:: console
+
+   dev 0000:02:00.1 {
+      num-tx-queues <n>
+   }
+
+num-tx-queues <n>
+^^^^^^^^^^^^^^^^^
+
+Number of transmit queues. Default is equal to number of worker threads
+or 1 if no workers treads.
+
+.. code-block:: console
+
+   dev 000:02:00.1 {
+      num-tx-queues <n>
+   }
+
+num-rx-desc <n>
+^^^^^^^^^^^^^^^
+
+Number of descriptors in receive ring. Increasing or reducing number
+can impact performance. Default is 1024.
+
+.. code-block:: console
+
+   dev 000:02:00.1 {
+      num-rx-desc <n>
+   }
+
+vlan-strip-offload on | off
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+VLAN strip offload mode for interface. VLAN stripping is off by default
+for all NICs except VICs, using ENIC driver, which has VLAN stripping on
+by default.
+
+.. code-block:: console
+
+   dev 000:02:00.1 {
+      vlan-strip-offload on|off
+   }
+
+uio-driver driver-name
+^^^^^^^^^^^^^^^^^^^^^^
+
+Change UIO driver used by VPP, Options are: igb_uio, vfio-pci, uio_pci_generic
+or auto (default)
+
+
+.. code-block:: console
+
+   uio-driver vfio-pci
+
+no-multi-seg
+^^^^^^^^^^^^
+
+Disable multi-segment buffers, improves performance but disables Jumbo MTU support
+
+.. code-block:: console
+
+   no-multi-seg
+
+socket-mem <n>
+^^^^^^^^^^^^^^
+
+Change hugepages allocation per-socket, needed only if there is need for
+larger number of mbufs. Default is 256M on each detected CPU socket
+
+.. code-block:: console
+
+   socket-mem 2048,2048
+
+no-tx-checksum-offload
+^^^^^^^^^^^^^^^^^^^^^^
+
+Disables UDP / TCP TX checksum offload. Typically needed for use faster
+vector PMDs (together with no-multi-seg)
+
+.. code-block:: console
+
+   no-tx-checksum-offload
+
+enable-tcp-udp-checksum
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Enable UDP / TCP TX checksum offload This is the reversed option of
+'no-tx-checksum-offload'
+
+.. code-block:: console
+
+   enable-tcp-udp-checksum
+
+The plugins Section
+-------------------
+
+Configure VPP plugins.
+
+.. code-block:: console
+
+   plugins {
+      path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
+      plugin dpdk_plugin.so enable
+   }
+
+path pathname
+^^^^^^^^^^^^^
+
+Adjust the plugin path depending on where the VPP plugins are.
+
+.. code-block:: console
+
+   path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
+
+plugin plugin-name | default enable | disable
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Disable all plugins by default and then selectively enable specific plugins
+
+.. code-block:: console
+
+   plugin default disable
+   plugin dpdk_plugin.so enable
+   plugin acl_plugin.so enable
+
+Enable all plugins by default and then selectively disable specific plugins
+
+.. code-block:: console
+
+   plugin dpdk_plugin.so disable
+   plugin acl_plugin.so disable
+
+Th statseg Section
+^^^^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+   statseg {
+      per-node-counters on
+    }
+
+socket-name <filename>
+^^^^^^^^^^^^^^^^^^^^^^
+
+Name of the stats segment socket defaults to /run/vpp/stats.sock.
+
+.. code-block:: console
+
+   socket-name /run/vpp/stats.sock
+
+size <nnn>[KMG]
+^^^^^^^^^^^^^^^
+
+The size of the stats segment, defaults to 32mb
+
+.. code-block:: console
+
+   size 1024M
+
+per-node-counters on | off
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Defaults to none
+
+.. code-block:: console
+
+   per-node-counters on
+
+update-interval <f64-seconds>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the segment scrape / update interval
+
+.. code-block:: console
+
+   update-interval 300
+
+
+Some Advanced Parameters:
+-------------------------
+
+
+acl-plugin Section
+------------------
 
 These parameters change the configuration of the ACL (access control list) plugin,
 such as how the ACL bi-hash tables are initialized.
@@ -594,213 +867,142 @@
 (16\*8 bit key and 8\*8 bit value pairs) **ACL plugin FA interface sessions**
 are initialized.
 
- * **connection hash buckets <n>**
-     Sets the number of hash buckets (rounded up to a power of 2) in each
-     of the two bi-hash tables. Defaults to 64\*1024 (65536) hash buckets.
-     
-     **Example:** connection hash buckets 65536
-     
- * **connection hash memory <n>**
-     Sets the allocated memory size (in bytes) for each of the two bi-hash tables.
-     Defaults to 1073741824 bytes.
-     
-     **Example:** connection hash memory 1073741824
-     
- * **connection count max <n>**
-     Sets the maximum number of pool elements when allocating each per-worker
-     pool of sessions for both bi-hash tables. Defaults to 500000 elements in each pool.
-     
-     **Example:** connection count max 500000
-     
- * **main heap size <n>G|<n>M|<n>K|<n>**
-     Sets the size of the main memory heap that holds all the ACL module related
-     allocations (other than hash.) Default size is 0, but during
-     ACL heap initialization is equal to
-     *per_worker_size_with_slack * tm->n_vlib_mains + bihash_size + main_slack*.
-     Note that these variables are partially based on the
-     **connection table per-interface parameters** mentioned above.
-     
-     **Example:** main heap size 3G
+connection hash buckets <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of hash buckets (rounded up to a power of 2) in each
+of the two bi-hash tables. Defaults to 64\*1024 (65536) hash buckets.
+
+.. code-block:: console
+
+   connection hash buckets 65536
+
+connection hash memory <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for each of the two bi-hash tables.
+Defaults to 1073741824 bytes.
+
+.. code-block:: console
+
+   connection hash memory 1073741824
+
+connection count max <n>
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the maximum number of pool elements when allocating each per-worker
+pool of sessions for both bi-hash tables. Defaults to 500000 elements in each pool.
+
+.. code-block:: console
+
+   connection count max 500000
+
+main heap size <n>G | <n>M | <n>K | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the size of the main memory heap that holds all the ACL module related
+allocations (other than hash.) Default size is 0, but during
+ACL heap initialization is equal to
+*per_worker_size_with_slack * tm->n_vlib_mains + bihash_size + main_slack*.
+Note that these variables are partially based on the
+**connection table per-interface parameters** mentioned above.
+
+.. code-block:: console
+
+   main heap size 3G
 
 The next three parameters, *hash lookup heap size*, *hash lookup hash buckets*,
 and *hash lookup hash memory*, modify the initialization of the bi-hash lookup
 table used by the ACL plugin. This table is initialized when attempting to apply
 an ACL to the existing vector of ACLs looked up during packet processing
 (but it is found that the table does not exist / has not been initialized yet.)
-     
- * **hash lookup heap size  <n>G|<n>M|<n>K|<n>**
-     Sets the size of the memory heap that holds all the miscellaneous allocations
-     related to hash-based lookups. Default size is 67108864 bytes.
-     
-     **Example:** hash lookup heap size 70M
-     
- * **hash lookup hash buckets <n>**
-     Sets the number of hash buckets (rounded up to a power of 2) in the bi-hash
-     lookup table. Defaults to 65536 hash buckets.
-     
-     **Example:** hash lookup hash buckets 65536
-     
- * **hash lookup hash memory <n>**
-     Sets the allocated memory size (in bytes) for the bi-hash lookup table.
-     Defaults to 67108864 bytes.
-     
-     **Example:** hash lookup hash memory 67108864
-     
- * **use tuple merge <n>**
-     Sets a boolean value indicating whether or not to use TupleMerge
-     for hash ACL's. Defaults to 1 (true), meaning the default implementation
-     of hashing ACL's **does use** TupleMerge.
-     
-     **Example:** use tuple merge 1
-     
- * **tuple merge split threshold <n>**
-     Sets the maximum amount of rules (ACE's) that can collide in a bi-hash
-     lookup table before the table is split into two new tables. Splitting ensures
-     less rule collisions by hashing colliding rules based on their common tuple
-     (usually their maximum common tuple.) Splitting occurs when the
-     *length of the colliding rules vector* is greater than this threshold amount.
-     Defaults to a maximum of 39 rule collisions per table.
-     
-     **Example:** tuple merge split threshold 30
-     
- * **reclassify sessions <n>**
-     Sets a boolean value indicating whether or not to take the epoch of the session
-     into account when dealing with re-applying ACL's or changing already applied ACL's.
-     Defaults to 0 (false), meaning the default implementation **does NOT** take the
-     epoch of the session into account.
-     
-     **Example:** reclassify sessions 1
+
+hash lookup heap size  <n>G | <n>M | <n> K | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the size of the memory heap that holds all the miscellaneous allocations
+related to hash-based lookups. Default size is 67108864 bytes.
+
+.. code-block:: console
+
+   hash lookup heap size 70M
+
+hash lookup hash buckets <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of hash buckets (rounded up to a power of 2) in the bi-hash
+lookup table. Defaults to 65536 hash buckets.
+
+.. code-block:: console
+
+   hash lookup hash buckets 65536
+
+hash lookup hash memory <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for the bi-hash lookup table.
+Defaults to 67108864 bytes.
+
+.. code-block:: console
+
+   hash lookup hash memory 67108864
+
+use tuple merge <n>
+^^^^^^^^^^^^^^^^^^^
+
+Sets a boolean value indicating whether or not to use TupleMerge
+for hash ACL's. Defaults to 1 (true), meaning the default implementation
+of hashing ACL's does use TupleMerge.
+
+.. code-block:: console
+
+   use tuple merge 1
+
+tuple merge split threshold <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the maximum amount of rules (ACE's) that can collide in a bi-hash
+lookup table before the table is split into two new tables. Splitting ensures
+less rule collisions by hashing colliding rules based on their common tuple
+(usually their maximum common tuple.) Splitting occurs when the
+*length of the colliding rules vector* is greater than this threshold amount.
+Defaults to a maximum of 39 rule collisions per table.
+
+.. code-block:: console
+
+   tuple merge split threshold 30
+
+reclassify sessions <n>
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets a boolean value indicating whether or not to take the epoch of the session
+into account when dealing with re-applying ACL's or changing already applied ACL's.
+Defaults to 0 (false), meaning the default implementation does NOT take the
+epoch of the session into account.
+
+.. code-block:: console
+
+   reclassify sessions 1
 
 .. _api-queue:
 
-"api-queue" Parameters
-______________________
+api-queue Section
+-----------------
 
-The following parameters should only be set by those that are familiar with the
-interworkings of VPP.
+length  <n>
+^^^^^^^^^^^
 
- * **length  <n>**
-     Sets the api queue length. Minimum valid queue length is 1024, which is
-     also the default.
-     
-     **Example:** length 2048
+Sets the api queue length. Minimum valid queue length is 1024, which is
+also the default.
 
-.. _api-segment:
+.. code-block:: console
 
-"api-segment" Parameters
-________________________
-
-These values control various aspects of the binary API interface to VPP.
-
- * **prefix <path>**
-     Sets the prefix prepended to the name used for shared memory (SHM)
-     segments. The default is empty, meaning shared memory segments are created
-     directly in the SHM directory *'/dev/shm'*. It is worth noting that on
-     many systems *'/dev/shm'* is a symbolic link to somewhere else in the file
-     system; Ubuntu links it to *'/run/shm'*.
-     
-     **Example:** prefix /run/shm
-
- * **uid <number|name>**
-     Sets the user ID or name that should be used to set the ownership of the
-     shared memory segments. Defaults to the same user that VPP is started
-     with, probably root.
-
-     **Example:** uid root
-
- * **gid <number|name>**
-     Sets the group ID or name that should be used to set the ownership of the
-     shared memory segments. Defaults to the same group that VPP is started
-     with, probably root.
-     
-     **Example:** gid vpp
-
-The following parameters should only be set by those that are familiar with the
-interworkings of VPP.
-
- * **baseva <x>**
-     Set the base address for SVM global region. If not set, on AArch64, the
-     code will try to determine the base address. All other default to
-     0x30000000.
-     
-     **Example:** baseva 0x20000000
-
- * **global-size <n>G|<n>M|<n>**
-     Set the global memory size, memory shared across all router instances,
-     packet buffers, etc. If not set, defaults to 64M. The input value can be
-     set in GB, MB or bytes.
-     
-     **Example:** global-size 2G
-
- * **global-pvt-heap-size <n>M|size <n>**
-     Set the size of the global VM private mheap. If not set, defaults to 128k.
-     The input value can be set in MB or bytes.
-     
-     **Example:** global-pvt-heap-size size 262144
-
- * **api-pvt-heap-size <n>M|size <n>**
-     Set the size of the api private mheap. If not set, defaults to 128k.
-     The input value can be set in MB or bytes.
-     
-     **Example:** api-pvt-heap-size 1M
-
- * **api-size <n>M|<n>G|<n>**
-     Set the size of the API region. If not set, defaults to 16M. The input
-     value can be set in GB, MB or bytes.
-     
-     **Example:** api-size 64M
-
-.. _api-trace:
-
-"api-trace" Parameters
-______________________
-
-The ability to trace, dump, and replay control-plane API traces makes all the
-difference in the world when trying to understand what the control-plane has
-tried to ask the forwarding-plane to do.
-
- * **on|enable**
-     Enable API trace capture from the beginning of time, and arrange for a
-     post-mortem dump of the API trace if the application terminates abnormally.
-     By default, the (circular) trace buffer will be configured to capture
-     256K traces. The default *'startup.conf'* file has trace enabled by default,
-     and unless there is a very strong reason, it should remain enabled.
-     
-     **Example:** on
-
- * **nitems <n>**
-     Configure the circular trace buffer to contain the last <n> entries. By
-     default, the trace buffer captures the last 256K API messages received.
-     
-     **Example:** nitems 524288
-
- * **save-api-table <filename>**
-     Dumps the API message table to /tmp/<filename>.
-     
-     **Example:** save-api-table apiTrace-07-04.txt
-
-Typically, one simply enables the API message trace scheme:
-
-     api-trace { on }
-
-.. _buffers:
-
-"buffers" Parameters
-____________________
-
-Command line Buffer configuration controls buffer management.
-
- * **memory-size-in-mb <n>**
-     Configure the memory size used for buffers. If not set, VPP defaults
-     to 32MB.
-     
-     **Example:** memory-size-in-mb 64
-
+   length 2048
 
 .. _cj:
 
-"cj" Parameters
-_______________
+cj Section
+----------
 
 The circular journal (CJ) thread-safe circular log buffer scheme is
 occasionally useful when chasing bugs. Calls to it should not be checked in.
@@ -808,258 +1010,243 @@
 When enabled, the number of records must be provided, there is no default
 value.
 
- * **records <n>**
-     Configure the number of circular journal records in the circular buffer.
-     The number of records should be a power of 2.
-     
-     **Example:** records 131072
+records <n>
+^^^^^^^^^^^
 
- * **on**
-     Turns on logging at the earliest possible moment.
-     
-     **Example:** on
+Configure the number of circular journal records in the circular buffer.
+The number of records should be a power of 2.
 
-.. _dns:
+.. code-block:: console
 
-"dns" Parameters
-________________
+   records 131072
 
- * **max-cache-size <n>**
-     Set the maximum number of active elements allowed in the pool of
-     dns cache entries. When resolving an expired entry or adding a new
-     static entry and the max number of active entries is reached,
-     a random, non-static entry is deleted. Defaults to 65535 entries.
-     
-     **Example:** max-cache-size 65535
-     
- * **max-ttl <n>**
-     Currently not implemented. Defaults to 86400 seconds (24 hours.)
-     
-     **Example:** max-ttl 86400
+on
+^^
 
-.. _heapsize:
+Turns on logging at the earliest possible moment.
 
-"heapsize" Parameters
-_____________________
+.. code-block:: console
+
+   on
+
+dns Section
+-----------
+
+max-cache-size <n>
+^^^^^^^^^^^^^^^^^^
+
+Set the maximum number of active elements allowed in the pool of
+dns cache entries. When resolving an expired entry or adding a new
+static entry and the max number of active entries is reached,
+a random, non-static entry is deleted. Defaults to 65535 entries.
+
+.. code-block:: console
+
+   max-cache-size 65535
+
+heapsize Section
+-----------------
 
 Heapsize configuration controls the size of the main heap. The heap size is
 configured very early in the boot sequence, before loading plug-ins or doing
 much of anything else.
 
- * **heapsize <n>M|<n>G**
-     Specifies the size of the heap in MB or GB. The default is 1GB. Setting the
-     main heap size to 4GB or more requires recompilation of the entire system
-     with CLIB_VEC64 > 0. See .../clib/clib/vec_bootstrap.h.
-     
-     **Example:** heapsize 2G
+heapsize <n>M | <n>G
+^^^^^^^^^^^^^^^^^^^^
 
-.. _ip:
+Specifies the size of the heap in MB or GB. The default is 1GB. Setting the
+main heap size to 4GB or more requires recompilation of the entire system
+with CLIB_VEC64 > 0. See .../clib/clib/vec_bootstrap.h.
 
-"ip" Parameters
-_______________
+.. code-block:: console
+
+   heapsize 2G
+
+ip Section
+----------
 
 IPv4 heap configuration. he heap size is configured very early in the boot
 sequence, before loading plug-ins or doing much of anything else.
 
- * **heap-size <n>G|<n>M|<n>K|<n>**
-     Set the IPv4 mtrie heap size, which is the amount of memory dedicated to
-     the destination IP lookup table. The input value can be set in GB, MB, KB
-     or bytes. The default value is 32MB.
-     
-     **Example:** heap-size 64M
+heap-size <n>G | <n>M | <n>K | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-.. _ip6:
+Set the IPv4 mtrie heap size, which is the amount of memory dedicated to
+the destination IP lookup table. The input value can be set in GB, MB, KB
+or bytes. The default value is 32MB.
 
-"ip6" Parameters
-________________
+.. code-block:: console
+
+   heap-size 64M
+
+ip6 Section
+-----------
 
 IPv6 heap configuration. he heap size is configured very early in the boot
 sequence, before loading plug-ins or doing much of anything else.
 
 
- * **heap-size <n>G|<n>M|<n>K|<n>**
-     Set the IPv6 forwarding table heap size. The input value can be set in GB,
-     MB, KB or bytes. The default value is 32MB.
-     
-     **Example:** heap-size 64M
-     
- * **hash-buckets <n>**
-     Set the number of IPv6 forwarding table hash buckets. The default value is
-     64K (65536).
-     
-     **Example:** hash-buckets 131072
+heap-size <n>G | <n>M | <n>K | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-.. _l2learn:
+Set the IPv6 forwarding table heap size. The input value can be set in GB,
+MB, KB or bytes. The default value is 32MB.
 
-"l2learn" Parameters
-____________________
+.. code-block:: console
+
+   heap-size 64M
+
+hash-buckets <n>
+^^^^^^^^^^^^^^^^
+
+Set the number of IPv6 forwarding table hash buckets. The default value is
+64K (65536).
+
+.. code-block:: console
+
+   hash-buckets 131072
+
+l2learn Section
+---------------
 
 Configure Layer 2 MAC Address learning parameters.
 
- * **limit <n>**
-     Configures the number of L2 (MAC) addresses in the L2 FIB at any one time,
-     which limits the size of the L2 FIB to <n> concurrent entries.  Defaults to
-     4M entries (4194304).
-     
-     **Example:** limit 8388608
+limit <n>
+^^^^^^^^^
 
-.. _l2tp:
+Configures the number of L2 (MAC) addresses in the L2 FIB at any one time,
+which limits the size of the L2 FIB to <n> concurrent entries.  Defaults to
+4M entries (4194304).
 
-"l2tp" Parameters
-_________________
+.. code-block:: console
+
+   limit 8388608
+
+l2tp Section
+------------
 
 IPv6 Layer 2 Tunnelling Protocol Version 3 (IPv6-L2TPv3) configuration controls
 the method used to locate a specific IPv6-L2TPv3 tunnel. The following settings
 are mutually exclusive:
 
- * **lookup-v6-src**
-     Lookup tunnel by IPv6 source address.
-     
-     **Example:** lookup-v6-src
-     
- * **lookup-v6-dst**
-     Lookup tunnel by IPv6 destination address.
-     
-     **Example:** lookup-v6-dst
-     
- * **lookup-session-id**
-     Lookup tunnel by L2TPv3 session identifier.
-     
-     **Example:** lookup-session-id
+lookup-v6-src
+^^^^^^^^^^^^^
 
-.. _logging:
+Lookup tunnel by IPv6 source address.
 
-"logging" Parameters
-____________________
+.. code-block:: console
 
- * **size <n>**
-     Number of entries in the global logging buffer. Defaults to 512.
-     
-     **Example:** size 512
-     
- * **unthrottle-time <n>**
-     Set the global value for the time to wait (in seconds) before resuming logging of a log subclass that exceeded the per-subclass message-per-second threshold.  Defaults to 3.
-     
-     **Example:** unthrottle-time 3
-     
- * **default-log-level emerg|alert|crit|err|warn|notice|info|debug|disabled**
-     Set the default logging level of the system log.  Defaults to notice.
-     
-     **Example:** default-log-level notice
-     
- * **default-syslog-log-level emerg|alert|crit|err|warn|notice|info|debug|disabled**
-     Set the default logging level of the syslog target.  Defaults to warning.
-     
-     **Example:** default-syslog-log-level warning
+   lookup-v6-src
 
-.. _mactime:
+lookup-v6-dst
+^^^^^^^^^^^^^
 
-"mactime" Parameters
-____________________
+Lookup tunnel by IPv6 destination address.
 
- * **lookup-table-buckets <n>**
-     Sets the number of hash buckets in the mactime bi-hash lookup table.
-     Defaults to 128 buckets.
-     
-     **Example:** lookup-table-buckets 128
-     
- * **lookup-table-memory <n>G|<n>M|<n>K|<n>**
-     Sets the allocated memory size (in bytes) for the mactime bi-hash lookup table.
-     The input value can be set in GB, MB, KB or bytes. The default value is 262144
-     (256 << 10) bytes or roughly 256KB.
-     
-     **Example:** lookup-table-memory 300K
-     
- * **timezone_offset <n>**
-     Sets the timezone offset from UTC. Defaults to an offset of -5 hours
-     from UTC (US EST / EDT.)
-     
-     **Example:** timezone_offset -5
+.. code-block:: console
 
-.. _map:
+   lookup-v6-dst
+
+lookup-session-id
+^^^^^^^^^^^^^^^^^
+
+Lookup tunnel by L2TPv3 session identifier.
+
+.. code-block:: console
+
+   lookup-session-id
+
+logging Section
+---------------
+
+size <n>
+^^^^^^^^
+
+Number of entries in the global logging buffer. Defaults to 512.
+
+.. code-block:: console
+
+   size 512
+
+nthrottle-time <n>
+^^^^^^^^^^^^^^^^^^
+
+Set the global value for the time to wait (in seconds) before resuming
+logging of a log subclass that exceeded the per-subclass message-per-second
+threshold.  Defaults to 3.
+
+.. code-block:: console
+
+   unthrottle-time 3
+
+default-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Set the default logging level of the system log.  Defaults to notice.
+
+.. code-block:: console
+
+   default-log-level notice
+
+default-syslog-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Set the default logging level of the syslog target.  Defaults to warning.
+
+.. code-block:: console
+
+   default-syslog-log-level warning
+
+mactime Section
+---------------
+
+lookup-table-buckets <n>
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of hash buckets in the mactime bi-hash lookup table.
+Defaults to 128 buckets.
+
+.. code-block:: console
+
+   lookup-table-buckets 128
+
+lookup-table-memory <n>G | <n>M | <n>K | <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for the mactime bi-hash lookup table.
+The input value can be set in GB, MB, KB or bytes. The default value is 262144
+(256 << 10) bytes or roughly 256KB.
+
+.. code-block:: console
+
+   lookup-table-memory 300K
+
+timezone_offset <n>
+^^^^^^^^^^^^^^^^^^^
+
+Sets the timezone offset from UTC. Defaults to an offset of -5 hours
+from UTC (US EST / EDT.)
+
+.. code-block:: console
+
+   timezone_offset -5
 
 "map" Parameters
-________________
+----------------
 
- * **customer edge**
-     Sets a boolean true to indicate that the MAP node is a Customer Edge (CE)
-     router. The boolean defaults to false, meaning the MAP node is not treated
-     as a CE router.
-     
-     **Example:** customer edge
+customer edge
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-.. _mc:
+Sets a boolean true to indicate that the MAP node is a Customer Edge (CE)
+router. The boolean defaults to false, meaning the MAP node is not treated
+as a CE router.
 
-"mc" Parameters
-_______________
+.. code-block:: console
 
-MC Test Process.
+   customer edge
 
- * **interface <name>**
-     TBD
-     
-     **Example:** TBD
-     
- * **n-bytes <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **max-n-bytes <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **min-n-bytes <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **seed <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **window <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **verbose**
-     TBD
-     
-     **Example:** verbose
-     
- * **no-validate**
-     TBD
-     
-     **Example:** no-validate
-     
- * **min-delay <n.n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **max-delay <n.n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **no-delay**
-     TBD
-     
-     **Example:** no-delay
-     
- * **n-packets <n.n>**
-     TBD
-     
-     **Example:** TBD
-
-.. _nat:
-
-
-"nat" Parameters
-________________
+nat Section
+-----------
 
 These parameters change the configuration of the NAT (Network address translation)
 plugin, such as how the NAT & NAT64 bi-hash tables are initialized, if the NAT is
@@ -1068,425 +1255,244 @@
 For each NAT per thread data, the following 4 parameters change how certain
 bi-hash tables are initialized.
 
- * **translation hash buckets <n>**
-     Sets the number of hash buckets in each of the two in/out NAT bi-hash lookup
-     tables. Defaults to 1024 buckets.
+translation hash buckets <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-     If the NAT is indicated to be endpoint dependent, which can be set with the
-     :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets
-     the number of hash buckets in each of the two endpoint dependent sessions
-     NAT bi-hash lookup tables.
-     
-     **Example:** translation hash buckets 1024
-     
- * **translation hash memory <n>**
-     Sets the allocated memory size (in bytes) for each of the two in/out NAT
-     bi-hash tables. Defaults to 134217728 (128 << 20) bytes, which is roughly 128 MB.
+Sets the number of hash buckets in each of the two in/out NAT bi-hash lookup
+tables. Defaults to 1024 buckets.
 
-     If the NAT is indicated to be endpoint dependent, which can be set with the
-     :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets the
-     allocated memory size for each of the two endpoint dependent sessions NAT bi-hash
-     lookup tables.
-     
-     **Example:** translation hash memory 134217728
-     
- * **user hash buckets <n>**
-     Sets the number of hash buckets in the user bi-hash lookup table
-     (src address lookup for a user.) Defaults to 128 buckets.
-     
-     **Example:** user hash buckets 128
-     
- * **user hash memory <n>**
-     Sets the allocated memory size (in bytes) for the user bi-hash lookup table
-     (src address lookup for a user.) Defaults to 67108864 (64 << 20) bytes,
-     which is roughly 64 MB.
-     
-     **Example:** user hash memory 67108864
-     
- * **max translations per user <n>**
-     Sets the maximum amount of dynamic and/or static NAT sessions each user can have.
-     Defaults to 100. When this limit is reached, the least recently used translation
-     is recycled.
-     
-     **Example:** max translations per user 50
-     
- * **outside VRF id <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **outside ip6 VRF id <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **inside VRF id <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **inside VRF id <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **static mapping only**
-     TBD
-     
-     **Example:** static mapping only
-     
- * **connection tracking**
-     TBD
-     
-     **Example:** connection tracking
-     
- * **deterministic**
-     Sets a boolean value to 1 indicating that the NAT is deterministic. Defaults to 0,
-     meaning the NAT is not deterministic.
-     
-     **Example:** deterministic
-     
- * **nat64 bib hash buckets <n>**
-     Sets the number of hash buckets in each of the two in/out NAT64 BIB bi-hash
-     tables. Defaults to 1024 buckets.
-     
-     **Example:** nat64 bib hash buckets 1024
-     
- * **nat64 bib hash memory <n>**
-     Sets the allocated memory size (in bytes) for each of the two in/out NAT64
-     BIB bi-hash tables. Defaults to 134217728 (128 << 20) bytes,
-     which is roughly 128 MB.
-     
-     **Example:** nat64 bib hash memory 134217728
-     
- * **nat64 st hash buckets <n>**
-     Sets the number of hash buckets in each of the two in/out NAT64 session table
-     bi-hash tables. Defaults to 2048 buckets.
-     
-     **Example:** nat64 st hash buckets 2048
-     
- * **nat64 st hash memory <n>**
-     Sets the allocated memory size (in bytes) for each of the two in/out NAT64 session
-     table bi-hash tables. Defaults to 268435456 (256 << 20) bytes, which is roughly
-     256 MB.
-     
-     **Example:** nat64 st hash memory 268435456
-     
- * **out2in dpo**
-     TBD
-     
-     **Example:** out2in dpo
-     
- * **dslite ce**
-     TBD
-     
-     **Example:** dslite ce
-     
+If the NAT is indicated to be endpoint dependent, which can be set with the
+:ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets
+the number of hash buckets in each of the two endpoint dependent sessions
+NAT bi-hash lookup tables.
+
+.. code-block:: console
+
+   translation hash buckets 1024
+
+translation hash memory <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for each of the two in/out NAT
+bi-hash tables. Defaults to 134217728 (128 << 20) bytes, which is roughly 128 MB.
+
+If the NAT is indicated to be endpoint dependent, which can be set with the
+:ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets the
+allocated memory size for each of the two endpoint dependent sessions NAT bi-hash
+lookup tables.
+
+.. code-block:: console
+
+   translation hash memory 134217728
+
+user hash buckets <n>
+^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of hash buckets in the user bi-hash lookup table
+(src address lookup for a user.) Defaults to 128 buckets.
+
+.. code-block:: console
+
+   user hash buckets 128
+
+user hash memory <n>
+^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for the user bi-hash lookup table
+(src address lookup for a user.) Defaults to 67108864 (64 << 20) bytes,
+which is roughly 64 MB.
+
+.. code-block:: console
+
+   user hash memory 67108864
+
+max translations per user <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the maximum amount of dynamic and/or static NAT sessions each user can have.
+Defaults to 100. When this limit is reached, the least recently used translation
+is recycled.
+
+.. code-block:: console
+
+   max translations per user 50
+
+deterministic
+^^^^^^^^^^^^^
+
+Sets a boolean value to 1 indicating that the NAT is deterministic. Defaults to 0,
+meaning the NAT is not deterministic.
+
+.. code-block:: console
+
+   deterministic
+
+nat64 bib hash buckets <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of hash buckets in each of the two in/out NAT64 BIB bi-hash
+tables. Defaults to 1024 buckets.
+
+.. code-block:: console
+
+   nat64 bib hash buckets 1024
+
+nat64 bib hash memory <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for each of the two in/out NAT64
+BIB bi-hash tables. Defaults to 134217728 (128 << 20) bytes,
+which is roughly 128 MB.
+
+.. code-block:: console
+
+   nat64 bib hash memory 134217728
+
+nat64 st hash buckets <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of hash buckets in each of the two in/out NAT64 session table
+bi-hash tables. Defaults to 2048 buckets.
+
+.. code-block:: console
+
+   nat64 st hash buckets 2048
+
+nat64 st hash memory <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the allocated memory size (in bytes) for each of the two in/out NAT64 session
+table bi-hash tables. Defaults to 268435456 (256 << 20) bytes, which is roughly
+256 MB.
+
+.. code-block:: console
+
+   nat64 st hash memory 268435456
+
 .. _endpointLabel:
 
- * **endpoint-dependent**
-     Sets a boolean value to 1, indicating that the NAT is endpoint dependent.
-     Defaults to 0, meaning the NAT is not endpoint dependent.
-     
-     **Example:** endpoint-dependent
+endpoint-dependent
+^^^^^^^^^^^^^^^^^^
 
-.. _oam:
+Sets a boolean value to 1, indicating that the NAT is endpoint dependent.
+Defaults to 0, meaning the NAT is not endpoint dependent.
 
-"oam" Parameters
-________________
+.. code-block:: console
+
+   endpoint-dependent
+
+oam Section
+-----------
 
 OAM configuration controls the (ip4-icmp) interval, and number of misses
 allowed before reporting an oam target down to any registered listener.
 
- * **interval <n.n>**
-     Interval, floating-point seconds, between sending OAM IPv4 ICMP messages.
-     Default is 2.04 seconds.
-     
-     **Example:** interval 3.5
-     
- * **misses-allowed <n>**
-     Number of misses before declaring an OAM target down. Default is 3 misses.
-     
-     **Example:** misses-allowed 5
+interval <n.n>
+^^^^^^^^^^^^^^
 
-.. _plugins:
+Interval, floating-point seconds, between sending OAM IPv4 ICMP messages.
+Default is 2.04 seconds.
 
-"plugins" Parameters
-____________________
+.. code-block:: console
 
-A plugin can be disabled by default. It may still be in an experimental phase
-or only be needed in special circumstances. If this is the case, the plugin can
-be explicitly enabled in *'startup.conf'*. Also, a plugin that is enabled by
-default can be explicitly disabled in *'startup.conf'*.
+   interval 3.5
 
-Another useful use of this section is to disable all the plugins, then enable
-only the plugins that are desired.
-
- * **path <path>**
-     Adjust the plugin path depending on where the VPP plugins are installed.
-     
-     **Example:** path /home/bms/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
-     
- * **name-filter <filter-name>**
-     TBD
-     
-     **Example:** TBD
-     
- * **vat-path <path>**
-     TBD
-     
-     **Example:** TBD
-     
- * **vat-name-filter <filter-name>**
-     TBD
-     
-     **Example:** TBD
-     
- * **plugin <plugin.so> { .. }**
-     Configure parameters for a given plugin. Valid parameters are as follows: 
-
-      * **enable**
-          Enable the given plugin.
-      * **disable**
-          Disable the given plugin.
-      * **skip-version-check**
-          In the plugin registration, if *'.version_required'* is set, the
-          plugin will not be loaded if there is version mismatch between
-          plugin and VPP. This can be bypassed by setting "skip-version-check"
-          for specific plugin.
-     
-     **Example:** plugin ila_plugin.so { enable skip-version-check }
-     
- * **plugin default { .. }**
-     Set the default behavior for all plugins. Valid parameters are as follows:
-     
-       * **disable**
-          Disable all plugins.
-     
-     **Example:**
-               | plugin default { disable }
-               | plugin dpdk_plugin.so { enable }
-               | plugin acl_plugin.so { enable }
-
-.. _plugin_path:
-
-"plugin_path" Parameters
-________________________
-
-Alternate syntax to choose plugin path. Plugin_path configuration controls the
-set of directories searched for vlib plugins. Supply a colon-separated list of
-(absolute) directory names: plugin_path dir1:dir2:...:dirN
-
-    **Example:** plugin_path /home/bms/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
-
-.. _punt:
-
-"punt" Parameters
-_________________
-
-Configuration parameters for the local TCP/IP stack punt infrastructure.
-
- * **socket <path>**
-     The filesystem pathname of a bound UNIX domain socket to be used with punt.
-     
-     **Example:** TBD
-
-.. _session:
-
-"session" Parameters
-____________________
-
- * **event-queue-length <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **preallocated-sessions <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **v4-session-table-buckets <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **v4-halfopen-table-buckets <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **v6-session-table-buckets <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **v6-halfopen-table-buckets <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **v4-session-table-memory <n>G|<n>M|<n>K|<n>**
-     TBD
-     The input value can be set in GB, MB, KB or bytes.
-     
-     **Example:** TBD
-     
- * **v4-halfopen-table-memory <n>G|<n>M|<n>K|<n>**
-     TBD
-     The input value can be set in GB, MB, KB or bytes.
-     
-     **Example:** TBD
-     
- * **v6-session-table-memory <n>G|<n>M|<n>K|<n>**
-     TBD
-     The input value can be set in GB, MB, KB or bytes.
-     
-     **Example:** TBD
-     
- * **v6-halfopen-table-memory <n>G|<n>M|<n>K|<n>**
-     TBD
-     The input value can be set in GB, MB, KB or bytes.
-     
-     **Example:** TBD
-     
- * **local-endpoints-table-memory <n>G|<n>M|<n>K|<n>**
-     TBD
-     The input value can be set in GB, MB, KB or bytes.
-     
-     **Example:** TBD
-     
- * **local-endpoints-table-buckets <n>**
-     TBD
-     
-     **Example:** TBD
-     
- * **evt_qs_memfd_seg**
-     TBD
-     
-     **Example:** evt_qs_memfd_seg
-
-.. _socketsvr:
-
-"socketsvr" Parameters
-______________________
-
-Create a socket server for API server (.../vlibmemory/socksvr_vlib.c.).
-If not set, API server doesn't run.
-
- * **socket-name <filename>**
-     Configure API socket filename.
-     
-     **Example:** socket-name /run/vpp/api.sock
-     
- * **default**
-     Use the default API socket (/run/api.sock).
-     
-     **Example:** default
-
-.. _stats:
-
-"stats" Parameters
-__________________
-
-Create a socket server for *'stats'* poller. If not set, 'stats'* poller
-doesn't run.
-
- * **socket-name <filename>**
-     Configure *'stats'* socket filename.
-     
-     **Example:** socket-name /run/vpp/stats.sock
-     
- * **default**
-     Use the default *'stats'* socket (/run/vpp/stats.sock).
-     
-     **Example:** default
-
-.. _statseg:
-
-"statseg" Parameters
-____________________
-
- * **size <n>G|<n>M|<n>K|<n>**
-     Sets the size of the memory mapped stats segment object *stat_segment*.
-     The input value can be set in GB, MB, KB or bytes. Defaults to 33554432
-     (32 << 20) bytes or roughly 32 MB.
-     
-     **Example:** size 32M
-     
-.. _tapcli:     
-
-"tapcli" Parameters
-___________________
+tapcli Section
+--------------
 
 Configuration parameters for TAPCLI (dynamic tap interface hookup.)
 
- * **mtu <n>**
-     Sets interface MTU (maximum transmission unit) size in bytes. This size
-     is also related to the number of MTU buffers. Defaults to 1500 bytes.
-     
-     **Example:** mtu 1500
-     
- * **disable**
-     Disables TAPCLI. Default is that TAPCLI is enabled.
-     
-     **Example:** disable
+mtu <n>
+^^^^^^^
 
-.. _tcp:
+Sets interface MTU (maximum transmission unit) size in bytes. This size
+is also related to the number of MTU buffers. Defaults to 1500 bytes.
 
-"tcp" Parameters
-________________
+.. code-block:: console
+
+   mtu 1500
+
+disable
+^^^^^^^
+
+Disables TAPCLI. Default is that TAPCLI is enabled.
+
+.. code-block:: console
+
+   disable
+
+
+tcp Section
+-----------
 
 Configuration parameters for TCP host stack utilities. The following
 preallocation parameters are related to the initialization of fixed-size,
 preallocation pools.
 
- * **preallocated-connections <n>**
-     Sets the number of preallocated TCP connections. Defaults to 0.
-     The preallocated connections per thread is related to this value,
-     equal to (preallocated_connections / (num_threads - 1)).
-     
-     **Example:** preallocated-connections 5
-     
- * **preallocated-half-open-connections <n>**
-     Sets the number of preallocated TCP half-open connections. Defaults to 0.
-     
-     **Example:** preallocated-half-open-connections 5
-     
- * **buffer-fail-fraction <n.n>**
-     Sets the TCP buffer fail fraction (a float) used for fault-injection
-     when debugging TCP buffer allocation. Its use is found in *tcp_debug.h*.
-     Defaults to 0.0.
-     
-     **Example:** buffer-fail-fraction 0.0
+preallocated-connections <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-.. _tls:
+Sets the number of preallocated TCP connections. Defaults to 0.
+The preallocated connections per thread is related to this value,
+equal to (preallocated_connections / (num_threads - 1)).
 
-"tls" Parameters
-________________
+.. code-block:: console
+
+   preallocated-connections 5
+
+preallocated-half-open-connections <n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the number of preallocated TCP half-open connections. Defaults to 0.
+
+.. code-block:: console
+
+   preallocated-half-open-connections 5
+
+buffer-fail-fraction <n.n>
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the TCP buffer fail fraction (a float) used for fault-injection
+when debugging TCP buffer allocation. Its use is found in *tcp_debug.h*.
+Defaults to 0.0.
+
+.. code-block:: console
+
+   buffer-fail-fraction 0.0
+
+
+tls Section
+-----------
 
 Configures TLS parameters, such as enabling the use of test certificates.
 These parameters affect the tlsmbedtls and tlsopenssl plugins.
 
- * **use-test-cert-in-ca**
-     Sets a boolean value to 1 to indicate during the initialization of a
-     TLS CA chain to attempt to parse and add test certificates to the chain.
-     Defaults to 0, meaning test certificates are not used.
-     
-     **Example:** use-test-cert-in-ca
-     
- * **ca-cert-path <filename>**
-     Sets the filename path of the location of TLS CA certificates, used when
-     initializing and loading TLS CA certificates during the initialization
-     of a TLS CA chain. If not set, the default filename path is
-     */etc/ssl/certs/ca-certificates.crt*.
-     
-     **Example:** ca-cert-path /etc/ssl/certs/ca-certificates.crt
+use-test-cert-in-ca
+^^^^^^^^^^^^^^^^^^^
 
-.. _tuntap:
+Sets a boolean value to 1 to indicate during the initialization of a
+TLS CA chain to attempt to parse and add test certificates to the chain.
+Defaults to 0, meaning test certificates are not used.
 
-"tuntap" Parameters
-___________________
+.. code-block:: console
+
+   use-test-cert-in-ca
+
+ca-cert-path <filename>
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Sets the filename path of the location of TLS CA certificates, used when
+initializing and loading TLS CA certificates during the initialization
+of a TLS CA chain. If not set, the default filename path is
+*/etc/ssl/certs/ca-certificates.crt*.
+
+.. code-block:: console
+
+   ca-cert-path /etc/ssl/certs/ca-certificates.crt
+
+
+tuntap Section
+--------------
 
 The "tuntap" driver configures a point-to-point interface between the vpp
 engine and the local Linux kernel stack. This allows e.g. users to ssh to the
@@ -1496,84 +1502,118 @@
 "vnet" interface needs to manually configure, and VLAN and other settings if
 desired.
 
- * **enable|disable**
-     Enable or disable the tun/tap driver. 
-     
-     **Example:** enable
-     
- * **ethernet|ether**
-     Create a tap device (ethernet MAC) instead of a tun device (point-to-point
-     tunnel). The two keywords are aliases for the same function.
-     
-     **Example:** ethernet
-     
- * **have-normal-interface|have-normal**
-     Treat the host Linux stack as a routing peer instead of programming VPP
-     interface L3 addresses onto the tun/tap devices. The two keywords are
-     aliases for the same function.
-     
-     **Example:** have-normal-interface
-     
- * **name <name>**
-     Assign name to the tun/tap device.
-     
-     **Example:** name vpp1
 
-Here's a typical multiple parameter invocation:
+enable|disable
+^^^^^^^^^^^^^^
 
-     | tuntap { ethernet have-normal-interface name vpp1 }
+Enable or disable the tun/tap driver.
 
-.. _vhost-user:
+.. code-block:: console
 
-"vhost-user" Parameters
-_______________________
+   enable
+
+ethernet|ether
+^^^^^^^^^^^^^^
+
+Create a tap device (ethernet MAC) instead of a tun device (point-to-point
+tunnel). The two keywords are aliases for the same function.
+
+.. code-block:: console
+
+   ethernet
+
+have-normal-interface|have-normal
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Treat the host Linux stack as a routing peer instead of programming VPP
+interface L3 addresses onto the tun/tap devices. The two keywords are
+aliases for the same function.
+
+.. code-block:: console
+
+   have-normal-interface
+
+name <name>
+^^^^^^^^^^^
+
+Assign name to the tun/tap device.
+
+.. code-block:: console
+
+   name vpp1
+
+
+vhost-user Section
+------------------
 
 Vhost-user configuration parameters control the vhost-user driver.
 
- * **coalesce-frames <n>**
-     Subject to deadline-timer expiration - see next item - attempt to transmit
-     at least <n> packet frames. Default is 32 frames.
-     
-     **Example:** coalesce-frames 64
-     
- * **coalesce-time <seconds>**
-     Hold packets no longer than (floating-point) seconds before transmitting
-     them. Default is 0.001 seconds
-     
-     **Example:** coalesce-time 0.002
-     
- * **dont-dump-memory**
-     vhost-user shared-memory segments can add up to a large amount of memory, so
-     it's handy to avoid adding them to corefiles when using a significant number
-     of such interfaces.
-     
-     **Example:** dont-dump-memory
+coalesce-frames <n>
+^^^^^^^^^^^^^^^^^^^
 
-.. _vlib:
+Subject to deadline-timer expiration - see next item - attempt to transmit
+at least <n> packet frames. Default is 32 frames.
 
-"vlib" Parameters
-_________________
+.. code-block:: console
+
+   coalesce-frames 64
+
+coalesce-time <seconds>
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Hold packets no longer than (floating-point) seconds before transmitting
+them. Default is 0.001 seconds
+
+.. code-block:: console
+
+   coalesce-time 0.002
+
+dont-dump-memory
+^^^^^^^^^^^^^^^^
+
+vhost-user shared-memory segments can add up to a large amount of memory, so
+it's handy to avoid adding them to corefiles when using a significant number
+of such interfaces.
+
+.. code-block:: console
+
+   dont-dump-memory
+
+
+vlib Section
+------------
 
 These parameters configure VLIB, such as allowing you to choose whether to
 enable memory traceback or a post-mortem elog dump.
 
- * **memory-trace**
-     Enables memory trace (mheap traceback.) Defaults to 0, meaning memory
-     trace is disabled.
-     
-     **Example:** memory-trace
-     
- * **elog-events <n>**
-     Sets the number of elements/events (the size) of the event ring
-     (a circular buffer of events.) This number rounds to a power of 2.
-     Defaults to 131072 (128 << 10) elements.
-     
-     **Example:** elog-events 4096
-     
- * **elog-post-mortem-dump**
-     Enables the attempt of a post-mortem elog dump to
-     */tmp/elog_post_mortem.<PID_OF_CALLING_PROCESS>* if os_panic or
-     os_exit is called.
-     
-     **Example:** elog-post-mortem-dump
- 
+memory-trace
+^^^^^^^^^^^^
+
+Enables memory trace (mheap traceback.) Defaults to 0, meaning memory
+trace is disabled.
+
+.. code-block:: console
+
+   memory-trace
+
+elog-events <n>
+^^^^^^^^^^^^^^^
+
+Sets the number of elements/events (the size) of the event ring
+(a circular buffer of events.) This number rounds to a power of 2.
+Defaults to 131072 (128 << 10) elements.
+
+.. code-block:: console
+
+   elog-events 4096
+
+elog-post-mortem-dump
+^^^^^^^^^^^^^^^^^^^^^
+
+Enables the attempt of a post-mortem elog dump to
+*/tmp/elog_post_mortem.<PID_OF_CALLING_PROCESS>* if os_panic or
+os_exit is called.
+
+.. code-block:: console
+
+   elog-post-mortem-dump
diff --git a/docs/gettingstarted/users/configutil/commandfour.rst b/docs/gettingstarted/users/configutil/commandfour.rst
deleted file mode 100644
index ea7c0a2..0000000
--- a/docs/gettingstarted/users/configutil/commandfour.rst
+++ /dev/null
@@ -1,112 +0,0 @@
-.. _config-command-four:
-
-**************************
-List/Install/Uninstall VPP
-**************************
-
-With command option "4" the user can list, install, or uninstall the FD.io VPP
-packages. If there are packages already installed, then the packages will be listed
-and the user will be asked if the packages should be uninstalled. If no packages are
-installed, then the user will be asked if the FD.io packages should be installed. The
-packages installed will be the latest released packages.
-
-Uninstalling the packages:
-
-.. code-block:: console
-
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command: 4
-    
-    These packages are installed on node localhost
-    Name                      Version
-    vpp                       18.04-release
-    vpp-api-lua               18.04-release
-    vpp-api-python            18.04-release
-    vpp-dbg                   18.04-release
-    vpp-dev                   18.04-release
-    vpp-dpdk-dev              17.01.1-release
-    vpp-dpdk-dkms             17.01.1-release
-    vpp-lib                   18.04-release
-    vpp-nsh-plugin            18.04
-    vpp-nsh-plugin-dbg        18.04
-    vpp-nsh-plugin-dev        18.04
-    vpp-plugins               18.04-release
-    
-    Do you want to uninstall these packages [y/N]? y
-    INFO:root: Local Command: service vpp stop
-    INFO:root:Uninstall Ubuntu
-    INFO:root: Local Command: dpkg -l | grep vpp
-    ....
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command:
-
-Installing the packages:
-
-.. code-block:: console
-
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command: 4
-    
-    There are no VPP packages on node localhost.
-    Do you want to install VPP [Y/n]? Y
-    INFO:root:  Ubuntu
-    INFO:root:Install Ubuntu
-    INFO:root: Local Command: ls /etc/apt/sources.list.d/99fd.io.list.orig
-    INFO:root:  /etc/apt/sources.list.d/99fd.io.list.orig
-    ....
-
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command: 4
-
-    These packages are installed on node localhost
-    Name                      Version
-    vpp                       18.04-release
-    vpp-api-lua               18.04-release
-    vpp-api-python            18.04-release
-    vpp-dbg                   18.04-release
-    vpp-dev                   18.04-release
-    vpp-dpdk-dev              17.01.1-release
-    vpp-dpdk-dkms             17.01.1-release
-    vpp-lib                   18.04-release
-    vpp-nsh-plugin            18.04
-    vpp-nsh-plugin-dbg        18.04
-    vpp-nsh-plugin-dev        18.04
-    vpp-plugins               18.04-release
-    
-    Do you want to uninstall these packages [y/N]? N
-
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command:
diff --git a/docs/gettingstarted/users/configutil/commandone.rst b/docs/gettingstarted/users/configutil/commandone.rst
deleted file mode 100644
index 33b6dbb..0000000
--- a/docs/gettingstarted/users/configutil/commandone.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-.. _config-command-one:
-
-***********************
-Show System Information
-***********************
-
-With command option "1" the user can inspect the system characteristics.
-
-This example shows a system that has not yet had VPP installed.
-
-.. code-block:: console
-
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command: 1
-    
-    ==============================
-    NODE: DUT1
-    
-    CPU:
-              Model name:    Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz
-                  CPU(s):    32
-      Thread(s) per core:    2
-      Core(s) per socket:    8
-               Socket(s):    2
-       NUMA node0 CPU(s):    0-7,16-23
-       NUMA node1 CPU(s):    8-15,24-31
-             CPU max MHz:    3600.0000
-             CPU min MHz:    1200.0000
-                     SMT:    Enabled
-    
-    VPP Threads: (Name: Cpu Number)
-    
-    Grub Command Line:
-      Current: BOOT_IMAGE=/vmlinuz-4.4.0-128-generic root=UUID=9930aeee-b1d3-4cf5-b0de-d95dbb7dec5e ro
-      Configured: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=8,9-10 nohz_full=8,9-10 rcu_nocbs=8,9-10"
-    
-    Huge Pages:
-      Total System Memory           : 65863384 kB
-      Total Free Memory             : 45911100 kB
-      Actual Huge Page Total        : 1024
-      Configured Huge Page Total    : 8192
-      Huge Pages Free               : 896
-      Huge Page Size                : 2048 kB
-    
-    Devices:
-    Total Number of Buffers: 25600
-    
-    Devices with link up (can not be used with VPP):
-    0000:08:00.0    enp8s0f0                  I350 Gigabit Network Connection
-    
-    Devices bound to kernel drivers:
-    0000:90:00.0    enp144s0                  VIC Ethernet NIC
-    0000:8f:00.0    enp143s0                  VIC Ethernet NIC
-    0000:84:00.0    enp132s0f0,enp132s0f0d1   Ethernet Controller XL710 for 40GbE QSFP+
-    0000:84:00.1    enp132s0f1,enp132s0f1d1   Ethernet Controller XL710 for 40GbE QSFP+
-    0000:08:00.1    enp8s0f1                  I350 Gigabit Network Connection
-    0000:02:00.0    enp2s0f0                  82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:02:00.1    enp2s0f1                  82599ES 10-Gigabit SFI/SFP+ Network Connection
-    
-    No devices bound to DPDK drivers
-    
-    VPP Service Status:
-      Not Installed
diff --git a/docs/gettingstarted/users/configutil/commandthree.rst b/docs/gettingstarted/users/configutil/commandthree.rst
deleted file mode 100644
index 589a367..0000000
--- a/docs/gettingstarted/users/configutil/commandthree.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-.. _config-command-three:
-
-************************
-Apply the Configuration
-************************
-
-After the configuration files have been examined and verified as correct, then the
-configuration can be applied by using command option '3'. After the configuration
-is applied, use option "1" to check the system configuration. Notice the default is
-NOT to change the grub file. If the option to change the grub command line is selected,
-then a reboot of the system will be required.
-
-.. code-block:: console
-
-   What would you like to do?
-
-   1) Show basic system information
-   2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-   3) Full configuration (WARNING: This will change the system configuration)
-   4) List/Install/Uninstall VPP.
-   q) Quit
-
-   Command: 3
-
-   We are now going to configure your system(s).
-
-   Are you sure you want to do this [Y/n]? y
-   These are the changes we will apply to
-   the huge page file (/etc/sysctl.d/80-vpp.conf).
-
-   1,2d0
-   < vm.nr_hugepages=1024
-   4,7c2,3
-   < vm.max_map_count=3096
-   ---
-   > vm.nr_hugepages=8192
-   > vm.max_map_count=17408
-   8a5
-   > kernel.shmmax=17179869184
-   10,15d6
-   < kernel.shmmax=2147483648
-
-   Are you sure you want to apply these changes [Y/n]? 
-   These are the changes we will apply to
-   the VPP startup file (/etc/vpp/startup.conf).
-
-   ---
-   > 
-   >   main-core 8
-   >   corelist-workers 9-10
-   > 
-   >   scheduler-policy fifo
-   >   scheduler-priority 50
-   > 
-   67,68c56,66
-   < # dpdk {
-   ---
-   > dpdk {
-   > 
-   >   dev 0000:86:00.0 { 
-   >     num-rx-queues 2
-   >   }
-   >   dev 0000:86:00.1 { 
-   >     num-rx-queues 2
-   >   }
-   >   num-mbufs 25600
-   > 
-   124c122
-   < # }
-   ---
-   > }
-
-   Are you sure you want to apply these changes [Y/n]? 
-
-   The configured grub cmdline looks like this:
-   GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=8,9-10 nohz_full=8,9-10 rcu_nocbs=8,9-10"
-
-   The current boot cmdline looks like this:
-   BOOT_IMAGE=/boot/vmlinuz-4.4.0-97-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro
-
-   Do you want to keep the current boot cmdline [Y/n]? 
diff --git a/docs/gettingstarted/users/configutil/commandtwo.rst b/docs/gettingstarted/users/configutil/commandtwo.rst
deleted file mode 100644
index c30663f..0000000
--- a/docs/gettingstarted/users/configutil/commandtwo.rst
+++ /dev/null
@@ -1,126 +0,0 @@
-.. _config-command-two:
-
-*******
-Dry Run
-*******
-
-With command option '2' (the config utility *dry run* option) the important
-configuration files are created so that the user can examine them, and then
-if they look reasonable apply them with command option 3. 
-
-The files for **Ubuntu** can be found in the root directory */usr/local/vpp/vpp-config/dryrun*
-and for **Centos** in directory */usr/vpp/vpp-config/dryrun*.
-
-The important configuration files are **/etc/vpp/startup.conf**, **/etc/sysctl.d/80-vpp.conf**,
-and **/etc/default/grub** 
-
-Startup.conf
-============
-
-FD.io VPP startup parameters are configured in the file **/etc/vpp/startup.conf**.
-The utility creates this file under the *vpp-config* root directory in the file *vpp/startup.conf*.
-The values in this file come from the questions asked about the devices, cores, rx queues,
-and tcp parameters.
-
-80-vpp.conf
-============
-
-The huge page configuration comes by setting values in the file **/etc/sysctl.d/80-vpp.conf**.
-The utility creates the file under the root directory in the file *sysctl.d/80-vpp.conf*. When asked the
-question about huge pages the correct values are put in the dryrun file.
-
-grub
-====
-
-CPUs can be isolated for use by VPP or other processes such as VMs using the grub
-configuration file. This file is **/etc/default/grub**. This file must be modified with
-care. It is possible to make your system unusable if this file is modified incorrectly.
-The dry run file is located under the *vpp-config* root directory and then default.
-
-***********************
-Executing the Dry Run
-***********************
-
-The following is an example of how to execute a dry run. Defaults should be picked first,
-and then the values increased accordingly.
-
-.. code-block:: console
-
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command: 2
-    
-    These devices have kernel interfaces, but appear to be safe to use with VPP.
-    
-    PCI ID          Kernel Interface(s)       Description
-    ------------------------------------------------------------------------------------------
-    0000:8f:00.0    enp143s0                  VIC Ethernet NIC
-    0000:84:00.0    enp132s0f0,enp132s0f0d1   Ethernet Controller XL710 for 40GbE QSFP+
-    0000:84:00.1    enp132s0f1,enp132s0f1d1   Ethernet Controller XL710 for 40GbE QSFP+
-    0000:08:00.1    enp8s0f1                  I350 Gigabit Network Connection
-    0000:02:00.0    enp2s0f0                  82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:02:00.1    enp2s0f1                  82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:86:00.0    enp134s0f0                82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:86:00.1    enp134s0f1                82599ES 10-Gigabit SFI/SFP+ Network Connection
-    
-    Would you like to use any of these device(s) for VPP [y/N]? y
-    Would you like to use device 0000:8f:00.0 for VPP [y/N]?
-    Would you like to use device 0000:84:00.0 for VPP [y/N]?
-    Would you like to use device 0000:84:00.1 for VPP [y/N]?
-    Would you like to use device 0000:08:00.1 for VPP [y/N]?
-    Would you like to use device 0000:02:00.0 for VPP [y/N]?
-    Would you like to use device 0000:02:00.1 for VPP [y/N]?
-    Would you like to use device 0000:86:00.0 for VPP [y/N]? y
-    Would you like to use device 0000:86:00.1 for VPP [y/N]? y
-    
-    These device(s) will be used by VPP.
-    
-    PCI ID          Description
-    ----------------------------------------------------------------
-    0000:86:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:86:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:90:00.0    VIC Ethernet NIC
-    
-    Would you like to remove any of these device(s) [y/N]? y
-    Would you like to remove 0000:86:00.0 [y/N]?
-    Would you like to remove 0000:86:00.1 [y/N]?
-    Would you like to remove 0000:90:00.0 [y/N]? y
-    
-    These device(s) will be used by VPP, please rerun this option if this is incorrect.
-    
-    PCI ID          Description
-    ----------------------------------------------------------------
-    0000:86:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:86:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection
-    
-    Your system has 32 core(s) and 2 Numa Nodes.
-    To begin, we suggest not reserving any cores for VPP or other processes.
-    Then to improve performance start reserving cores and adding queues as needed.
-    
-    How many core(s) shall we reserve for VPP [0-4][0]? 2
-    How many core(s) do you want to reserve for processes other than VPP? [0-15][0]?
-    Should we reserve 1 core for the VPP Main thread? [y/N]? y
-    How many RX queues per port shall we use for VPP [1-4][1]? 2
-    
-    How many active-open / tcp client sessions are expected [0-10000000][0]?
-    How many passive-open / tcp server sessions are expected [0-10000000][0]?
-    
-    There currently 896 2048 kB huge pages free.
-    Do you want to reconfigure the number of huge pages [y/N]? y
-    
-    There currently a total of 1024 huge pages.
-    How many huge pages do you want [1024 - 15644][1024]? 8192
-    
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command:
diff --git a/docs/gettingstarted/users/configutil/configapplied.rst b/docs/gettingstarted/users/configutil/configapplied.rst
deleted file mode 100644
index 70d483b..0000000
--- a/docs/gettingstarted/users/configutil/configapplied.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-.. _config-applied:
-
-*************************
-The Configuration Applied
-*************************
-
-After the configuration is applied the system parameters should be examined.
-
-.. code-block:: console
-
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    3) Full configuration (WARNING: This will change the system configuration)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command: 1
-    
-    ==============================
-    NODE: DUT1
-    
-    CPU:
-              Model name:    Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz
-                  CPU(s):    32
-      Thread(s) per core:    2
-      Core(s) per socket:    8
-               Socket(s):    2
-       NUMA node0 CPU(s):    0-7,16-23
-       NUMA node1 CPU(s):    8-15,24-31
-             CPU max MHz:    3600.0000
-             CPU min MHz:    1200.0000
-                     SMT:    Enabled
-    
-    VPP Threads: (Name: Cpu Number)
-      vpp_main  : 8
-      vpp_wk_1  : 10
-      vpp_wk_0  : 9
-      vpp_stats : 0
-    
-    Grub Command Line:
-      Current: BOOT_IMAGE=/vmlinuz-4.4.0-128-generic root=UUID=9930aeee-b1d3-4cf5-b0de-d95dbb7dec5e ro
-      Configured: GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=1,8,9-10 nohz_full=1,8,9-10 rcu_nocbs=1,8,9-10"
-    
-    Huge Pages:
-      Total System Memory           : 65863384 kB
-      Total Free Memory             : 31169292 kB
-      Actual Huge Page Total        : 8196
-      Configured Huge Page Total    : 8196
-      Huge Pages Free               : 7942
-      Huge Page Size                : 2048 kB
-    
-    Devices:
-    Total Number of Buffers: 25600
-    
-    Devices with link up (can not be used with VPP):
-    0000:08:00.0    enp8s0f0                  I350 Gigabit Network Connection
-    
-    Devices bound to kernel drivers:
-    0000:90:00.0    enp144s0                  VIC Ethernet NIC
-    0000:8f:00.0    enp143s0                  VIC Ethernet NIC
-    0000:84:00.0    enp132s0f0,enp132s0f0d1   Ethernet Controller XL710 for 40GbE QSFP+
-    0000:84:00.1    enp132s0f1,enp132s0f1d1   Ethernet Controller XL710 for 40GbE QSFP+
-    0000:08:00.1    enp8s0f1                  I350 Gigabit Network Connection
-    0000:02:00.0    enp2s0f0                  82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:02:00.1    enp2s0f1                  82599ES 10-Gigabit SFI/SFP+ Network Connection
-    
-    Devices bound to DPDK drivers:
-    0000:86:00.0                              82599ES 10-Gigabit SFI/SFP+ Network Connection
-    0000:86:00.1                              82599ES 10-Gigabit SFI/SFP+ Network Connection
-    
-    Devices in use by VPP:
-    Name                           Socket RXQs RXDescs TXQs TXDescs
-    TenGigabitEthernet86/0/0            1    2    1024    3    1024
-    TenGigabitEthernet86/0/1            1    2    1024    3    1024
-    
-    VPP Service Status:
-      active (running)
-
-.. toctree::
-
-   sysinfo
-
-
diff --git a/docs/gettingstarted/users/configutil/index.rst b/docs/gettingstarted/users/configutil/index.rst
deleted file mode 100644
index 6cf3a30..0000000
--- a/docs/gettingstarted/users/configutil/index.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-.. _configutil:
-
-#########################
-VPP Configuration Utility
-#########################
-
-This guide provides instructions on how to install and use the vpp configuration
-utility.
-
-The FD.io VPP Configuration Utility, or vpp-config, allows the user to configure
-FD.io VPP in a simple and safe manner. The utility takes input from the user and
-creates the configuration files in a dry run directory. The user should then examine
-these files for correctness. If the configuration files look correct, the user
-can then apply the configuration. Once the configuration is applied the user
-should then check the system configuration with the utility and see if it was
-applied correctly.
-
-This utility also includes a utility that can be used to install or uninstall FD.io VPP
-packages. This should be used to insure the latest tested release is installed.
-
-.. toctree::
-
-   installing
-   usingvppconfig
-   commandfour
-   commandone
-   commandtwo
-   commandthree
-   configapplied
-
diff --git a/docs/gettingstarted/users/configutil/installing.rst b/docs/gettingstarted/users/configutil/installing.rst
deleted file mode 100644
index d9fa561..0000000
--- a/docs/gettingstarted/users/configutil/installing.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-.. _installing:
-
-.. toctree::
-
-.. _installing-vpp-config:
-
-*********************
-Installing VPP-Config
-*********************
-
-The FD.io VPP configuration utility uses the `Python Package Index <https://pypi.org>`__
-or "pypi".
-
-To install FD.io vpp-config first install python pip.
-
-For Ubuntu execute:
-
-.. code-block:: console
-
-    $ sudo apt-get install python-pip
-
-For Centos execute:
-
-.. code-block:: console
-
-    $ sudo yum install install python-pip
-
-Then install the config utility itself.
-
-.. code-block:: console
-
-    $ sudo -H pip install vpp-config
diff --git a/docs/gettingstarted/users/configutil/sysinfo.rst b/docs/gettingstarted/users/configutil/sysinfo.rst
deleted file mode 100644
index 77dd1c7..0000000
--- a/docs/gettingstarted/users/configutil/sysinfo.rst
+++ /dev/null
@@ -1,50 +0,0 @@
-.. _sysinfo:
-
-CPU
----
-
-The CPU section of the system information is a summary of the CPU characteristics of the system.
-It is important to understand the CPU topology and frequency in order to understand what the VPP
-performance characteristics would be. 
-
-Threads
--------
-
-It usually is not needed, but VPP can be configured to run on isolated CPUs. In the example shown
-VPP is configured with 2 workers. The main thread is also configured to run on a separate CPU. The
-stats thread will always run on CPU 0. This utility will put the worker threads on CPUs that are
-associated with the ports that are configured.
-
-Grub Command Line
------------------
-
-In general the Grub command line does not need to be changed. If the system is running many processes
-it may be necessary to isolate CPUs for VPP or other processes.
-
-Huge Pages
-----------
-
-As default when VPP is configured the number of huge pages that will be configured will be 1024.
-This may not be enough. This section will show the total system memory and how many are configured.
-
-
-Devices
--------
-
-In the devices section we have the "Total Number of Buffers". This utility allocates the correct
-number of buffers. The number of buffers are calculated from the number of rx queues.
-
-VPP will not use links that are up. Those devices are shown with this utility.
-
-The devices bound to the kernel are not being used by VPP, but can be.
-
-The devices that are being used by VPP are shown with the interface name be used with VPP. The
-socket being used by the VPP port is also shown. Notice in this example the worker thread are
-on the correct CPU. The number of RX, TX Descriptors and TX queues are calculated from the number
-of RX queues.
-
-
-VPP Service Status
-------------------
-
-The VPP service status, will be installed, not installed, running or not.
diff --git a/docs/gettingstarted/users/configutil/usingvppconfig.rst b/docs/gettingstarted/users/configutil/usingvppconfig.rst
deleted file mode 100644
index 8694a83..0000000
--- a/docs/gettingstarted/users/configutil/usingvppconfig.rst
+++ /dev/null
@@ -1,52 +0,0 @@
-.. _usingvppconfig.rst:
-
-*******
-Running
-*******
-
-The vpp-config utility provides the user with several different menus. This allows the
-user to configure ports, some performance characteristics, the number of huge pages
-and install/uninstall the released FD.io packages.
-
-It is recommended that the menu command options, noted below as *"x)"*, are run in
-this order (command option 4 first, then options 1,2,3):
-
-#. :ref:`4) List/Install/Uninstall VPP <config-command-four>`
-#. :ref:`1) Show basic system information <config-command-one>`
-#. :ref:`2) Dry Run <config-command-two>`
-#. :ref:`3) Full Configuration <config-command-three>`
-
-Once vpp-config is installed as a root user, then run the following code:
-
-.. code-block:: console
-
-    $ sudo -H bash
-    # vpp-config
-    
-    Welcome to the VPP system configuration utility
-    
-    These are the files we will modify:
-        /etc/vpp/startup.conf
-        /etc/sysctl.d/80-vpp.conf
-        /etc/default/grub
-    
-    Before we change them, we'll create working copies in /usr/local/vpp/vpp-config/dryrun
-    Please inspect them carefully before applying the actual configuration (option 3)!
-    
-    What would you like to do?
-    
-    1) Show basic system information
-    2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)
-    4) List/Install/Uninstall VPP.
-    q) Quit
-    
-    Command:
-
-Default Values
-==============
-
-If you do not choose to modify the default for any of the questions prompted by vpp-config, then
-you may press the **ENTER** key to select the default options:
-
-* Questions that ask [Y/n], the capital letter Y is the default answer.
-* Numbers have their default within brackets, such as in [1024], the 1024 is the default.   
diff --git a/docs/gettingstarted/users/index.rst b/docs/gettingstarted/users/index.rst
index 7fdb282..e04889d 100644
--- a/docs/gettingstarted/users/index.rst
+++ b/docs/gettingstarted/users/index.rst
@@ -21,6 +21,5 @@
 .. toctree::
    :maxdepth: 2
 
-   configutil/index.rst
    configuring/index.rst
    running/index.rst
diff --git a/docs/usecases/vmxnet3.rst b/docs/usecases/vmxnet3.rst
index 37fdbc8..427ebba 100644
--- a/docs/usecases/vmxnet3.rst
+++ b/docs/usecases/vmxnet3.rst
@@ -113,10 +113,7 @@
 
     $ echo Y | sudo tee /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
 
-To bind interface to vfio-pci first install the :ref:`configutil`. This will
-download the dpdk_devbind.py script. It is located in
-*/usr/vpp/vpp-config/scripts* with Centos and
-*/usr/local/vpp/vpp-config/scripts* with Ubuntu.
+To bind interface to vfio-pci first install get the dpdk_devbind.py script.
 
 Bind the driver with the following commands:
 
