diff --git a/docs/gettingstarted/users/configuring/hugepages.rst b/docs/gettingstarted/users/configuring/hugepages.rst
new file mode 100644
index 0000000..42f6aa3
--- /dev/null
+++ b/docs/gettingstarted/users/configuring/hugepages.rst
@@ -0,0 +1,61 @@
+.. _hugepages:
+
+Huge Pages
+----------
+
+VPP requires *'hugepages'* to run. VPP will overwrite existing hugepage
+settings when VPP is installed. By default, VPP sets the number of hugepages on
+a system to 1024 2M hugepages (1G hugepages are no longer supported). This is
+the number of hugepages on the system, not just used by VPP. When VPP is
+installed, the following file is copied to the system and used to apply the
+hugepage settings on VPP installation and system reboot:
+
+.. code-block:: console
+
+    $ cat /etc/sysctl.d/80-vpp.conf
+    # Number of 2MB hugepages desired
+    vm.nr_hugepages=1024
+    
+    # Must be greater than or equal to (2 * vm.nr_hugepages).
+    vm.max_map_count=3096
+    
+    # All groups allowed to access hugepages
+    vm.hugetlb_shm_group=0
+    
+    # Shared Memory Max must be greator or equal to the total size of hugepages.
+    # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024
+    # If the existing kernel.shmmax setting  (cat /sys/proc/kernel/shmmax)
+    # is greater than the calculated TotalHugepageSize then set this parameter
+    # to current shmmax value.
+    kernel.shmmax=2147483648
+
+Depending on how the system is being used, this file can be updated to adjust
+the number of hugepages reserved on a system. Below are some examples of
+possible values.
+
+For a small VM with minimal workload:
+
+.. code-block:: console
+
+    vm.nr_hugepages=512
+    vm.max_map_count=2048
+    kernel.shmmax=1073741824
+
+For a large system running multiple VMs, each needing its own set of hugepages:
+
+.. code-block:: console
+
+    vm.nr_hugepages=32768
+    vm.max_map_count=66560
+    kernel.shmmax=68719476736
+
+
+.. note::
+
+    If VPP is being run in a Virtual Machine (VM), the VM must have hugepage
+    backing. When VPP is installed, it will attempt to overwrite existing
+    hugepage setting. If the VM does not have hugepage backing, this will fail,
+    but this may go unnoticed. When the VM is rebooted, on system startup,
+    *'vm.nr_hugepages'* will be reapplied, will fail, and the VM will abort kernel
+    boot, locking up the VM. To avoid this scenario, ensure the VM has enough
+    hugepage backing.
diff --git a/docs/gettingstarted/users/configuring/index.rst b/docs/gettingstarted/users/configuring/index.rst
new file mode 100644
index 0000000..75c5276
--- /dev/null
+++ b/docs/gettingstarted/users/configuring/index.rst
@@ -0,0 +1,13 @@
+.. _configuring:
+
+Configuring VPP
+===============
+
+There is some basic configuration that is need to run FD.io VPP. This section
+will describe some basic configuration. 
+
+.. toctree::
+   :maxdepth: 2
+
+   hugepages
+   startup
diff --git a/docs/gettingstarted/users/configuring/startup.rst b/docs/gettingstarted/users/configuring/startup.rst
new file mode 100644
index 0000000..7dd2c99
--- /dev/null
+++ b/docs/gettingstarted/users/configuring/startup.rst
@@ -0,0 +1,1477 @@
+.. _startup:
+
+
+.. toctree::
+
+
+=======================================
+VPP Configuration File - '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 parameter 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.
+
+Command-line Arguments
+----------------------
+
+Parameters are grouped by a section name. When providing more than one
+parameter to a section, all parameters for that section must be wrapped in
+curly braces. For example, to start VPP with configuration data via the
+command line with the section name *'unix'*:
+
+.. code-block:: console
+
+    $ sudo /usr/bin/vpp unix { interactive cli-listen 127.0.0.1:5002 }
+
+The command line can be presented as a single string or as several; anything
+given on the command line is concatenated with spaces into a single string
+before parsing. VPP applications must be able to locate their own executable
+images. The simplest way to ensure this will work is to invoke a VPP
+application by giving its absolute path. For example:
+*'/usr/bin/vpp <options>'*  At startup, VPP applications parse through their
+own ELF-sections [primarily] to make lists of init, configuration, and exit
+handlers.
+
+When developing with VPP, in gdb it's often sufficient to start an application
+like this:
+
+.. code-block:: console
+
+    (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:
+
+.. code-block:: console
+
+    $ cat /etc/vpp/startup.conf
+    unix {
+      nodaemon
+      log /var/log/vpp/vpp.log
+      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:
+
+.. 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.
+
+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 ... }". 
+
+
+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
+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:
+
+     | $ 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>**
+     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>**
+     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**
+     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>**
+     Configure the CLI prompt to be string.
+     
+     **Example:** cli-prompt vpp-2
+     
+ * **cli-history-limit <n>**
+     Limit commmand history to <n> lines. A value of 0 disables command history.
+     Default value: 50
+     
+     **Example:** cli-history-limit 100
+     
+ * **cli-no-banner**
+     Disable the login banner on stdin and Telnet connections.
+     
+     **Example:** cli-no-banner
+     
+ * **cli-no-pager**
+     Disable the output pager.
+     
+     **Example:** 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>**
+     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 Quaity-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 mutli-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 intefaces. 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
+
+
+.. _acl-plugin:
+
+"acl-plugin" Parameters
+_______________________
+
+The following parameters should only be set by those that are familiar with the
+interworkings of VPP and the ACL Plugin.
+
+The first three parameters, *connection hash buckets*, *connection hash memory*, and *connection count max*, set the **connection table per-interface parameters** for modifying how the two bounded-index extensible hash tables for IPv6 (40\*8 bit key and 8\*8 bit value pairs) and IPv4 (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 number of bytes used for “backing store” allocation in 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
+
+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 number of bytes used for “backing store” allocation in 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
+
+.. _api-queue:
+
+"api-queue" Parameters
+______________________
+
+The following parameters should only be set by those that are familiar with the
+interworkings of VPP.
+
+ * **length  <n>**
+     Sets the api queue length. Minimum valid queue length is 1024, which is
+     also the default.
+     
+     **Example:** length 2048
+
+.. _api-segment:
+
+"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
+
+
+.. _cj:
+
+"cj" Parameters
+_______________
+
+The circular journal (CJ) thread-safe circular log buffer scheme is
+occasionally useful when chasing bugs. Calls to it should not be checked in.
+See .../vlib/vlib/unix/cj.c. The circular journal is disables by default.
+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
+
+ * **on**
+     Turns on logging at the earliest possible moment.
+     
+     **Example:** on
+
+.. _dns:
+
+"dns" Parameters
+________________
+
+ * **max-cache-size <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **max-ttl <n>**
+     TBD
+     
+     **Example:** TBD
+
+.. _heapsize:
+
+"heapsize" Parameters
+_____________________
+
+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
+
+.. _ip:
+
+"ip" Parameters
+_______________
+
+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
+
+.. _ip6:
+
+"ip6" Parameters
+________________
+
+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
+
+.. _l2learn:
+
+"l2learn" Parameters
+____________________
+
+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
+
+.. _l2tp:
+
+"l2tp" Parameters
+_________________
+
+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
+
+.. _logging:
+
+"logging" Parameters
+____________________
+
+ * **size <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **unthrottle-time <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **default-log-level emerg|alertcrit|err|warn|notice|info|debug|disabled**
+     TBD
+     
+     **Example:** TBD
+     
+ * **default-syslog-log-level emerg|alertcrit|err|warn|notice|info|debug|disabled**
+     TBD
+     
+     **Example:** TBD
+
+.. _mactime:
+
+"mactime" Parameters
+____________________
+
+ * **lookup-table-buckets <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **lookup-table-memory <n>G|<n>M|<n>K|<n>**
+     TBD
+      The input value can be set in GB, MB, KB or bytes. The default value is 256KB.
+     
+     **Example:** TBD
+     
+ * **timezone_offset <n>**
+     TBD
+     
+     **Example:** TBD
+
+.. _map:
+
+"map" Parameters
+________________
+
+ * **customer edge**
+     TBD
+     
+     **Example:** customer edge
+
+.. _mc:
+
+"mc" Parameters
+_______________
+
+MC Test Process.
+
+ * **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
+________________
+
+ * **translation hash buckets <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **translation hash memory <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **user hash buckets <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **user hash memory <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **max translations per user <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **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**
+     TBD
+     
+     **Example:** deterministic
+     
+ * **nat64 bib hash buckets <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **nat64 bib hash memory <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **nat64 st hash buckets <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **nat64 st hash memory <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **out2in dpo**
+     TBD
+     
+     **Example:** out2in dpo
+     
+ * **dslite ce**
+     TBD
+     
+     **Example:** dslite ce
+     
+ * **endpoint-dependent**
+     TBD
+     
+     **Example:** endpoint-dependent
+
+.. _oam:
+
+"oam" Parameters
+________________
+
+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
+
+.. _plugins:
+
+"plugins" Parameters
+____________________
+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 explicitely enabled in *'startup.conf'*. Also, a plugin that is enabled by
+default can be explicitely disabled in *'startup.conf'*.
+
+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/lib64/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/lib64/vpp_plugins
+
+.. _punt:
+
+"punt" Parameters
+_________________
+
+ * **socket <path>**
+     TBD
+     
+     **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/vpp-api.sock
+     
+ * **default**
+     Use the default API socket (/run/vpp-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>**
+     TBD
+     The input value can be set in GB, MB, KB or bytes.
+     
+     **Example:** TBD
+     
+.. _tapcli:     
+
+"tapcli" Parameters
+___________________
+
+ * **mtu <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **disable**
+     TBD
+     
+     **Example:** disable
+
+.. _tcp:
+
+"tcp" Parameters
+________________
+
+ * **preallocated-connections <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **preallocated-half-open-connections <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **buffer-fail-fraction <n.n>**
+     TBD
+     
+     **Example:** TBD
+
+.. _tls:
+
+"tls" Parameters
+________________
+
+ * **se-test-cert-in-ca**
+     TBD
+     
+     **Example:** se-test-cert-in-ca
+     
+ * **ca-cert-path <filename>**
+     TBD
+     If not set, the default is set to *'/etc/ssl/certs/ca-certificates.crt'*.
+     
+     **Example:** TBD
+
+.. _tuntap:
+
+"tuntap" Parameters
+___________________
+
+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
+host | VM | container via vpp "revenue" interfaces. It's marginally useful, and
+is currently disabled by default. To [dynamically] create TAP interfaces - the
+preferred scheme - see the "tap_connect" binary API. The Linux network stack
+"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:
+
+     | tuntap { ethernet have-normal-interface name vpp1 }
+
+.. _vhost-user:
+
+"vhost-user" Parameters
+_______________________
+
+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
+
+.. _vlib:
+
+"vlib" Parameters
+_________________
+
+ * **memory-trace**
+     TBD
+     
+     **Example:** memory-trace
+     
+ * **elog-events <n>**
+     TBD
+     
+     **Example:** TBD
+     
+ * **elog-post-mortem-dump**
+     TBD
+     
+     **Example:** elog-post-mortem-dump
+ 
diff --git a/docs/gettingstarted/users/configutil/commandfour.rst b/docs/gettingstarted/users/configutil/commandfour.rst
new file mode 100644
index 0000000..27cac82
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/commandfour.rst
@@ -0,0 +1,114 @@
+.. _config-command-four:
+
+**************************
+List/Install/Uninstall VPP
+**************************
+
+With option "4" the user can list, install or uninstall the FD.io VPP packages. If there
+are packages already installed, the packages will be listed and then the user will be asked
+if the packages should be uninstalled. If no packages are installed 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-java              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-java              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
new file mode 100644
index 0000000..9d63809
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/commandone.rst
@@ -0,0 +1,70 @@
+.. _config-command-one:
+
+***********************
+Show System Information
+***********************
+
+With option "1" the user can inspect the system characteristics.
+
+This example shows a system that VPP has not yet been 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
new file mode 100644
index 0000000..c4c4429
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/commandthree.rst
@@ -0,0 +1,80 @@
+.. _config-command-three:
+
+***********************
+Apply the Configuration
+***********************
+
+After the configuration files have been examined and are correct. The configuration
+can be applied. 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 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
new file mode 100644
index 0000000..0d06c14
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/commandtwo.rst
@@ -0,0 +1,124 @@
+.. _config-command-two:
+
+*******
+Dry Run
+*******
+
+With 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
+option 3. The files for **Ubuntu** can be found in the root directory /usr/local/vpp/vpp-config/dryrun
+and for **Centos** in /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 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 sysctl.d/80-vpp.conf. When asked the
+question about huge pages the correct values are put in the dryrin 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
new file mode 100644
index 0000000..70d483b
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/configapplied.rst
@@ -0,0 +1,85 @@
+.. _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
new file mode 100644
index 0000000..6cf3a30
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/index.rst
@@ -0,0 +1,30 @@
+.. _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
new file mode 100644
index 0000000..57929ae
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/installing.rst
@@ -0,0 +1,30 @@
+.. _installing:
+
+.. toctree::
+
+**********
+Installing
+**********
+
+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
new file mode 100644
index 0000000..893f949
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/sysinfo.rst
@@ -0,0 +1,50 @@
+.. _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 seperate CPU. The
+stats thread will always run on CPU 0. This utilty 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 neccessary 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
new file mode 100644
index 0000000..4f1ce6c
--- /dev/null
+++ b/docs/gettingstarted/users/configutil/usingvppconfig.rst
@@ -0,0 +1,51 @@
+.. _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 options are executed in this order.
+
+#. :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 execute the following
+
+.. 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,
+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
new file mode 100644
index 0000000..6fd7260
--- /dev/null
+++ b/docs/gettingstarted/users/index.rst
@@ -0,0 +1,13 @@
+.. _users:
+
+#####
+Users
+#####
+
+.. toctree::
+   :maxdepth: 2
+
+   installing/index.rst
+   configuring/index.rst
+   running/index.rst
+   configutil/index.rst
diff --git a/docs/gettingstarted/users/installing/centos.rst b/docs/gettingstarted/users/installing/centos.rst
new file mode 100644
index 0000000..bb69eb9
--- /dev/null
+++ b/docs/gettingstarted/users/installing/centos.rst
@@ -0,0 +1,247 @@
+.. _centos:
+
+.. toctree::
+
+Setup the fd.io Repository - Centos 7
+=====================================
+
+Update the OS
+-------------
+
+It is probably a good idea to update and upgrade the OS before starting:
+
+.. code-block:: console
+
+    $ sudo yum update
+
+
+Point to the Repository
+-----------------------
+
+For CentOS based systems, there are two respositories to pull VPP binaries
+from.
+
+* CentOS NFV SIG Repository
+* Nexus Repository
+
+
+CentOS NFV SIG Repository
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+VPP is not in the official CentOS 7 distro. However, CentOS has Special
+Interest Groups (SIG), which are smaller groups within the CentOS community that
+focus on a small set of issues. The CentOS NFV (Network Function Virtualization)
+SIG was created to provide a CentOS-based stack that will serve as a platform
+for the deployment and testing of virtual network functions (VNFs). VPP has been
+included in this SIG.
+
+To install released packages from the CentOS NFV SIG Repository on an updated
+Centos 7 system, first, install the CentOS NFV SIG FIDO repo file:
+
+.. code-block:: console
+
+    $ sudo yum install centos-release-fdio
+
+then **'Install VPP RPMs'**, as described below.
+
+This will install the latest VPP version from the repository. To install an
+older version, once the CentOS NFV SIG FDIO repo file has been installed, list
+the stored versions:
+
+.. code-block:: console
+
+    $ sudo yum --showduplicates list vpp* | expand
+    Loaded plugins: fastestmirror
+    Loading mirror speeds from cached hostfile
+     * base: repos-va.psychz.net
+     * epel: download-ib01.fedoraproject.org
+     * extras: mirror.siena.edu
+     * updates: repo1.ash.innoscale.net
+    Available Packages
+    vpp.x86_64                                17.10-1                    centos-fdio
+    vpp.x86_64                                18.01.1-1                  centos-fdio
+    vpp.x86_64                                18.01.2-1                  centos-fdio
+    vpp.x86_64                                18.04-1                    centos-fdio
+    vpp-api-java.x86_64                       17.10-1                    centos-fdio
+    vpp-api-java.x86_64                       18.01.1-1                  centos-fdio
+    vpp-api-java.x86_64                       18.01.2-1                  centos-fdio
+    vpp-api-java.x86_64                       18.04-1                    centos-fdio
+    vpp-api-lua.x86_64                        17.10-1                    centos-fdio
+    vpp-api-lua.x86_64                        18.01.1-1                  centos-fdio
+    vpp-api-lua.x86_64                        18.01.2-1                  centos-fdio
+    vpp-api-lua.x86_64                        18.04-1                    centos-fdio
+    vpp-api-python.x86_64                     17.10-1                    centos-fdio
+    vpp-api-python.x86_64                     18.01.1-1                  centos-fdio
+    vpp-api-python.x86_64                     18.01.2-1                  centos-fdio
+    vpp-api-python.x86_64                     18.04-1                    centos-fdio
+    vpp-devel.x86_64                          17.10-1                    centos-fdio
+    vpp-devel.x86_64                          18.01.1-1                  centos-fdio
+    vpp-devel.x86_64                          18.01.2-1                  centos-fdio
+    vpp-devel.x86_64                          18.04-1                    centos-fdio
+    vpp-lib.x86_64                            17.10-1                    centos-fdio
+    vpp-lib.x86_64                            18.01.1-1                  centos-fdio
+    vpp-lib.x86_64                            18.01.2-1                  centos-fdio
+    vpp-lib.x86_64                            18.04-1                    centos-fdio
+    vpp-plugins.x86_64                        17.10-1                    centos-fdio
+    vpp-plugins.x86_64                        18.01.1-1                  centos-fdio
+    vpp-plugins.x86_64                        18.01.2-1                  centos-fdio
+    vpp-plugins.x86_64                        18.04-1                    centos-fdio
+    vpp-selinux-policy.x86_64                 18.04-1                    centos-fdio
+
+Then install a particular version:
+
+.. code-block:: console
+
+    $ sudo yum install vpp-17.10-1.x86_64
+
+
+Nexus Repository
+^^^^^^^^^^^^^^^^
+
+Build artifacts are also posted to a FD.io Nexus Repository. This includes
+official point releases, as well as nightly builds. To use any of these build
+artifacts, create a file *'/etc/yum.repos.d/fdio-release.repo'* with the
+content that points to the version needed. Below are some common examples of
+the content needed:
+
+
+VPP Latest Release
+""""""""""""""""""
+
+To allow *'yum'* access to the official VPP releases, create the file
+*'/etc/yum.repos.d/fdio-release.repo'* with the following content:
+
+.. code-block:: console
+
+   $ cat /etc/yum.repos.d/fdio-release.repo
+   [fdio-release]
+   name=fd.io release branch latest merge
+   baseurl=https://nexus.fd.io/content/repositories/fd.io.centos7/
+   enabled=1
+   gpgcheck=0
+
+The *'yum install vpp'* command will install the most recent release. To
+install older releases, run the following command to get the list of releases
+provided:
+
+.. code-block:: console
+
+   $ sudo yum --showduplicates list vpp* | expand
+
+Then choose the release to install. See **'CentOS NFV SIG Repository'** for
+sample *'yum --showduplicates list'* output and an example of installing a
+particular version of the RPMs.
+
+VPP Stable Branch
+"""""""""""""""""
+
+To allow *yum* access to the build artifacts for a VPP stable branch, create
+the file *'/etc/yum.repos.d/fdio-release.repo'* with the following content:
+
+.. code-block:: console
+
+   $ cat /etc/yum.repos.d/fdio-release.repo
+   [fdio-stable-1804]
+   name=fd.io stable/1804 branch latest merge
+   baseurl=https://nexus.fd.io/content/repositories/fd.io.stable.1804.centos7/
+   enabled=1
+   gpgcheck=0
+
+For other stable branches, replace the *'1804'* from the above content with the
+desired release. Examples: 1606, 1609, 1701, 1704, 1707, 1710, 1804, 1807
+
+The *'yum install vpp'* command will install the most recent build on the
+branch, not the latest offical release. Run the following command to get the
+list of images produce by the branch:
+
+.. code-block:: console
+
+   $ sudo yum --showduplicates list vpp* | expand
+
+Then choose the image to install. See **'CentOS NFV SIG Repository'** for
+sample *'yum --showduplicates list'* output and an example of installing a
+particular version of the RPMs.
+
+
+VPP Master Branch
+"""""""""""""""""
+
+To allow *yum* access to the nightly builds from the VPP master branch, create
+the file *'/etc/yum.repos.d/fdio-release.repo'* with the following content:
+
+.. code-block:: console
+
+   $ cat /etc/yum.repos.d/fdio-release.repo
+   [fdio-master]
+   name=fd.io master branch latest merge
+   baseurl=https://nexus.fd.io/content/repositories/fd.io.master.centos7/
+   enabled=1
+   gpgcheck=0
+
+The *'yum install vpp'* command will install the most recent build on the
+branch. Run the following command to get the list of images produce by the
+branch:
+
+.. code-block:: console
+
+   $ sudo yum --showduplicates list vpp* | expand
+
+Then choose the image to install. See **'CentOS NFV SIG Repository'** for
+sample *'yum --showduplicates list'* output and an example of installing a
+particular version of the RPMs.
+
+
+Install VPP RPMs
+================
+
+To install the VPP packet engine, run the following:
+
+.. code-block:: console
+
+   $ sudo yum install vpp
+
+The **'vpp'** RPM depend on the **'vpp-lib'** and **'vpp-selinux-policy'**
+RPMs, so they will be installed as well.
+
+.. note::
+
+    The **'vpp-selinux-policy'** will not enable SELinux on the system. It
+    will install a Custom VPP SELinux policy that will be used if SELinux is
+    enabled at any time.
+
+There are additional packages that are optional. These packages can be
+combined with the command above and installed all at once, or installed as
+needed: 
+
+.. code-block:: console
+
+   $ sudo yum install vpp-plugins vpp-devel vpp-api-python vpp-api-lua vpp-api-java
+
+Starting VPP
+============
+
+Once VPP is installed on the system, to run VPP as a systemd service on CentOS,
+run:
+
+.. code-block:: console
+
+   $ sudo systemctl start vpp
+
+Then to enable VPP to start on system reboot:
+
+.. code-block:: console
+
+   $ sudo systemctl enable vpp
+
+
+Outside of running VPP as a systemd service, VPP can be started manually or
+made to run within GDB for debugging. See :ref:`running` for more details and
+ways to tailor VPP to a specific system.
+
+
+Uninstall the VPP RPMs
+======================
+
+.. code-block:: console
+
+   $ sudo yum autoremove vpp*
diff --git a/docs/gettingstarted/users/installing/index.rst b/docs/gettingstarted/users/installing/index.rst
new file mode 100644
index 0000000..7636ec8
--- /dev/null
+++ b/docs/gettingstarted/users/installing/index.rst
@@ -0,0 +1,47 @@
+.. _installing:
+
+.. toctree::
+
+Installing VPP from Packages
+============================
+
+If you are simply using vpp, it can be convenient to install the binaries from
+existing packages. This guide will describe how pull, install and run the VPP
+packages.
+
+.. toctree::
+
+Package Descriptions
+--------------------
+The following is a brief description of the packages to be installed with VPP.
+
+.. toctree::
+
+   packages
+
+Installing VPP Binaries
+-----------------------
+
+Installing on Ubuntu
+^^^^^^^^^^^^^^^^^^^^
+The following are instructions on how to install VPP on Ubuntu.
+
+.. toctree::
+
+   ubuntu
+
+Installing on Centos
+^^^^^^^^^^^^^^^^^^^^
+The following are instructions on how to install VPP on Centos.
+
+.. toctree::
+
+   centos
+
+Installing on openSUSE
+^^^^^^^^^^^^^^^^^^^^^^
+The following are instructions on how to install VPP on openSUSE.
+
+.. toctree::
+
+   opensuse
diff --git a/docs/gettingstarted/users/installing/opensuse.rst b/docs/gettingstarted/users/installing/opensuse.rst
new file mode 100644
index 0000000..8e91ebd
--- /dev/null
+++ b/docs/gettingstarted/users/installing/opensuse.rst
@@ -0,0 +1,51 @@
+.. _opensuse:
+
+.. toctree::
+
+Installing
+==========
+Top install VPP on openSUSE first pick the following release and execute the appropriate commands.
+
+openSUSE Tumbleweed (rolling release)
+-------------------------------------
+
+.. code-block:: console
+
+   sudo zypper install vpp vpp-plugins
+
+openSUSE Leap 42.3
+------------------
+
+.. code-block:: console
+
+   sudo zypper addrepo --name network https://download.opensuse.org/repositories/network/openSUSE_Leap_42.3/network.repo
+   sudo zypper install vpp vpp-plugins
+
+Uninstall
+=========
+
+.. code-block:: console
+
+   sudo zypper remove -u vpp vpp-plugins
+
+openSUSE Tumbleweed (rolling release)
+-------------------------------------
+
+.. code-block:: console
+
+   sudo zypper remove -u vpp vpp-plugins
+
+openSUSE Leap 42.3
+------------------
+
+.. code-block:: console
+
+   sudo zypper remove -u vpp vpp-plugins
+   sudo zypper removerepo network
+
+For More Information
+====================
+For more information on VPP with openSUSE, please look at the following post.
+
+* https://www.suse.com/communities/blog/vector-packet-processing-vpp-opensuse/
+
diff --git a/docs/gettingstarted/users/installing/packages.rst b/docs/gettingstarted/users/installing/packages.rst
new file mode 100644
index 0000000..d67ff60
--- /dev/null
+++ b/docs/gettingstarted/users/installing/packages.rst
@@ -0,0 +1,83 @@
+.. _packages:
+
+Packages
+========
+
+.. toctree::
+
+vpp
+---
+
+Vector Packet Processing executables. This is the primary package that must be
+installed to use VPP. This package contains:
+
+* vpp - the vector packet engine
+* vpp_api_test - vector packet engine API test tool
+* vpp_json_test - vector packet engine JSON test tool
+
+vpp-lib
+-------
+
+Vector Packet Processing runtime libraries. The *'vpp'* package depends on this
+package, so it will always be installed. This package contains the VPP shared
+libraries, including:
+
+* vppinfra - Foundation library supporting vectors, hashes, bitmaps, pools, and string formatting.
+* svm - vm library
+* vlib - vector processing library
+* vlib-api - binary API library
+* vnet -  network stack library
+
+vpp-plugins
+-----------
+
+Vector Packet Processing plugin modules.
+
+* acl
+* dpdk
+* flowprobe
+* gtpu
+* ixge
+* kubeproxy
+* l2e
+* lb
+* memif
+* nat
+* pppoe
+* sixrd
+* stn
+
+vpp-dbg
+-------
+
+Vector Packet Processing debug symbols.
+
+vpp-dev
+-------
+
+Vector Packet Processing development support. This package contains
+development support files for the VPP libraries.
+
+vpp-api-java
+------------
+
+JAVA binding for the VPP Binary API.
+
+vpp-api-python 
+--------------
+
+Python binding for the VPP Binary API.
+
+vpp-api-lua
+-----------
+
+Lua binding for the VPP Binary API.
+
+vpp-selinux-policy
+------------------
+
+This package contains the VPP Custom SELinux Policy. It is only generated for
+Fedora and CentOS distros. For those distros, the *'vpp'* package depends on
+this package, so it will always be installed. It will not enable SELinux on
+the system. It will install a Custom VPP SELinux policy that will be used if
+SELinux is enabled at any time.
diff --git a/docs/gettingstarted/users/installing/ubuntu.rst b/docs/gettingstarted/users/installing/ubuntu.rst
new file mode 100644
index 0000000..9c082e6
--- /dev/null
+++ b/docs/gettingstarted/users/installing/ubuntu.rst
@@ -0,0 +1,81 @@
+.. _ubuntu:
+
+.. toctree::
+ 
+Ubuntu 16.04 - Setup the fd.io Repository
+=========================================
+
+From the following choose one of the releases to install.
+
+
+Update the OS
+-------------
+
+It is probably a good idea to update and upgrade the OS before starting
+
+.. code-block:: console
+
+    apt-get update
+
+
+Point to the Repository
+-----------------------
+
+Create a file **"/etc/apt/sources.list.d/99fd.io.list"** with the contents that point to
+the version needed. The contents needed are shown below.
+
+.. _install_vpp:
+
+VPP latest Release
+^^^^^^^^^^^^^^^^^^
+
+Create the file **/etc/apt/sources.list.d/99fd.io.list** with contents:
+
+.. code-block:: console
+
+   deb [trusted=yes] https://nexus.fd.io/content/repositories/fd.io.ubuntu.xenial.main/ ./
+
+
+VPP stable/1804 Branch
+^^^^^^^^^^^^^^^^^^^^^^
+
+Create the file **/etc/apt/sources.list.d/99fd.io.list** with contents:
+
+.. code-block:: console
+
+   deb [trusted=yes] https://nexus.fd.io/content/repositories/fd.io.stable.1804.ubuntu.xenial.main/ ./
+
+
+VPP master Branch
+^^^^^^^^^^^^^^^^^
+
+Create the file **/etc/apt/sources.list.d/99fd.io.list** with contents:
+
+.. code-block:: console
+
+   deb [trusted=yes] https://nexus.fd.io/content/repositories/fd.io.master.ubuntu.xenial.main/ ./
+
+
+Install the Mandatory Packages
+==============================
+
+.. code-block:: console
+
+  sudo apt-get update
+  sudo apt-get install vpp vpp-lib vpp-plugin
+
+
+Install the Optional Packages
+=============================
+
+.. code-block:: console
+
+  sudo apt-get install vpp-dbg vpp-dev vpp-api-java vpp-api-python vpp-api-lua
+
+
+Uninstall the Packages
+======================
+
+.. code-block:: console
+
+  sudo apt-get remove --purge vpp*
diff --git a/docs/gettingstarted/users/running/index.rst b/docs/gettingstarted/users/running/index.rst
new file mode 100644
index 0000000..b36773e
--- /dev/null
+++ b/docs/gettingstarted/users/running/index.rst
@@ -0,0 +1,59 @@
+.. _running:
+
+Running VPP
+===========
+
+.. toctree::
+
+'vpp' Usergroup
+---------------
+
+When VPP is installed, a new usergroup *'vpp'* is created. To avoid running the
+VPP CLI (vppctl) as root, add any existing users to the new group that need to
+interact with VPP:
+
+.. code-block:: console
+
+    $ sudo usermod -a -G vpp user1
+
+Update your current session for the group change to take effect: 
+
+.. code-block:: console
+
+    $ newgrp vpp
+
+
+VPP Systemd File - 'vpp.service'
+--------------------------------
+
+When the VPP is installed, a systemd service files is also installed. This
+file, vpp.service (Ubuntu: /lib/systemd/system/vpp.service and CentOS:
+/usr/lib/systemd/system/vpp.service), controls how VPP is run as a service. For
+example, whether or not to restart on failure and if so, with how much delay.
+Also, which UIO driver should be loaded and location of the *'startup.conf'*
+file.
+
+.. code-block:: console
+
+    $ cat /usr/lib/systemd/system/vpp.service
+    [Unit]
+    Description=Vector Packet Processing Process
+    After=syslog.target network.target auditd.service
+    
+    [Service]
+    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
+    Type=simple
+    Restart=on-failure
+    RestartSec=5s
+
+    [Install]
+    WantedBy=multi-user.target
+
+.. note::
+
+    Some older versions of the *'uio_pci_generic'* driver don't bind all
+    the supported NICs properly, so the *'igb_uio'* driver built from DPDK
+    needs to be installed. This file controls which driver is loaded at boot.
+    *'startup.conf'* file controls which driver is used.
