docs: convert extras doc md->rst
[vpp.git] / extras / vpp_config / README.rst
index 8995edf..19fc916 100644 (file)
-Summary:\r
-\r
-The purpose of the VPP configuration utility is to allow the user to configure\r
-VPP in a simple and safe manner. The utility takes input from the user and\r
-then modifies the key configuration files. The user can then examine these files\r
-to be sure they are correct and then actually apply the configuration. The user\r
-can also install a released and stable version of VPP. This is currently\r
-released with release 17.10.\r
-\r
-Use:\r
-\r
-The installation and executing of the VPP configuration utility is simple. First\r
-install the python pip module. Using pip install, then pip install vpp-config.\r
-Then simply type �vpp-config� and answer the questions. If you are not sure what\r
-to answer choose the default. For yes or no questions the capital letter\r
-designates the default. For example, for a question that shows [Y/n] Y is the\r
-default. For numbers the default is within the brackets for example for a\r
-question that shows [1024]. 1024 is the default. \r
-\r
-The flow of the utility is to inspect the system, if VPP is not install it,\r
-create dry run configurations, inspect the files created during the dry run,\r
-apply the configuration and then inspect the system again and then repeat.  \r
-\r
-Caveats:\r
-\r
-- Supports Ubuntu, centos7, RedHat is coming shortly.\r
-\r
-For Developers:\r
-\r
-Modifying the code is reasonable simple. The process would be edit and debug the\r
-code from the root directory. In order to do this, we need a script that will copy\r
-or data files to the proper place. This is where they end up with pip install. For\r
-Ubuntu, this is /usr/local/vpp/vpp-config. I have provided a script that will copy\r
-the relevant files correctly. I have also provided a script that will clean the\r
-environment so you can start from scratch. These are the steps to run the utility\r
-in this environment. The scripts are meant to be run from the root directory.\r
-\r
-  ./scripts/clean.sh\r
-  ./scripts/cp-data.sh\r
-  ./vpp-config\r
-\r
-When the utility is installed with pip the wrapper scripts/vpp-config is written to\r
-/usr/local/bin. However, the starting point when debugging this script locally is\r
-vpp-config. Run the utility by executing vpp-config.\r
-\r
-The start point in the code is in vpp_config.py. However, most of the work is\r
-done in\r
-the files in ./vpplib\r
-\r
-Uploading to PyPi:\r
-\r
-To upload this utility to PpPi simple do the following. Currently, I have my own account\r
-when we want everyone to contribute we will need to change that.\r
-\r
-  sudo �H bash\r
-  cd vpp_config\r
-  python setup.py sdist bdist_wheel\r
-  twine upload dist/*\r
-\r
-Example Run:\r
-\r
-# pip install vpp-config\r
-# vpp-config\r
-\r
-Welcome to the VPP system configuration utility\r
-\r
-These are the files we will modify:\r
-    /etc/vpp/startup.conf\r
-    /etc/sysctl.d/80-vpp.conf\r
-    /etc/default/grub\r
-\r
-Before we change them, we'll create working copies in /usr/local/vpp/vpp-config/dryrun\r
-Please inspect them carefully before applying the actual configuration (option 3)!\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 1\r
-\r
-==============================\r
-NODE: DUT1\r
-\r
-CPU:\r
-          Model name:    Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz\r
-              CPU(s):    32\r
-  Thread(s) per core:    2\r
-  Core(s) per socket:    8\r
-           Socket(s):    2\r
-   NUMA node0 CPU(s):    0-7,16-23\r
-   NUMA node1 CPU(s):    8-15,24-31\r
-         CPU max MHz:    3600.0000\r
-         CPU min MHz:    1200.0000\r
-                 SMT:    Enabled\r
-\r
-VPP Threads: (Name: Cpu Number)\r
-\r
-Grub Command Line:\r
-  Current: BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro\r
-  Configured: GRUB_CMDLINE_LINUX_DEFAULT=""\r
-\r
-Huge Pages:\r
-  Total System Memory           : 65863484 kB\r
-  Total Free Memory             : 41325924 kB\r
-  Actual Huge Page Total        : 8192\r
-  Configured Huge Page Total    : 1024\r
-  Huge Pages Free               : 8192\r
-  Huge Page Size                : 2048 kB\r
-\r
-Devices:\r
-\r
-Status:\r
-  Not Installed\r
-\r
-==============================\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 4\r
-\r
-There are no VPP packages on node localhost.\r
-Do you want to install VPP [Y/n]? \r
-INFO:root: Local Command: ls /etc/apt/sources.list.d/99fd.io.list.orig\r
-INFO:root:  /etc/apt/sources.list.d/99fd.io.list.orig\r
-��..\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 1\r
-\r
-==============================\r
-NODE: DUT1\r
-\r
-CPU:\r
-          Model name:    Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz\r
-              CPU(s):    32\r
-  Thread(s) per core:    2\r
-  Core(s) per socket:    8\r
-           Socket(s):    2\r
-   NUMA node0 CPU(s):    0-7,16-23\r
-   NUMA node1 CPU(s):    8-15,24-31\r
-         CPU max MHz:    3600.0000\r
-         CPU min MHz:    1200.0000\r
-                 SMT:    Enabled\r
-\r
-VPP Threads: (Name: Cpu Number)\r
-  vpp_main  : 0   \r
-  vpp_stats : 0   \r
-\r
-Grub Command Line:\r
-  Current: BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro\r
-  Configured: GRUB_CMDLINE_LINUX_DEFAULT=""\r
-\r
-Huge Pages:\r
-  Total System Memory           : 65863484 kB\r
-  Total Free Memory             : 55877364 kB\r
-  Actual Huge Page Total        : 1024\r
-  Configured Huge Page Total    : 1024\r
-  Huge Pages Free               : 1024\r
-  Huge Page Size                : 2048 kB\r
-\r
-Devices:\r
-Name                           Socket RXQs RXDescs TXQs TXDescs\r
-\r
-Status:\r
-  active (running)\r
-\r
-==============================\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 2\r
-\r
-These device(s) are currently NOT being used by VPP or the OS.\r
-\r
-PCI ID          Description                                       \r
-----------------------------------------------------------------\r
-0000:02:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:02:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-\r
-Would you like to give any of these devices back to the OS [y/N]? y\r
-Would you like to use device 0000:02:00.0 for the OS [y/N]? y\r
-Would you like to use device 0000:02:00.1 for the OS [y/N]? y\r
-\r
-These devices have kernel interfaces, but appear to be safe to use with VPP.\r
-\r
-PCI ID          Kernel Interface(s)       Description                                       \r
-------------------------------------------------------------------------------------------\r
-0000:90:00.0    enp144s0                  VIC Ethernet NIC                                  \r
-0000:8f:00.0    enp143s0                  VIC Ethernet NIC                                  \r
-0000:84:00.0    enp132s0f0,enp132s0f0d1   Ethernet Controller XL710 for 40GbE QSFP+         \r
-0000:84:00.1    enp132s0f1,enp132s0f1d1   Ethernet Controller XL710 for 40GbE QSFP+         \r
-0000:08:00.1    enp8s0f1                  I350 Gigabit Network Connection                   \r
-0000:02:00.0    enp2s0f0                  82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:02:00.1    enp2s0f1                  82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:86:00.0    enp134s0f0                82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:86:00.1    enp134s0f1                82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-\r
-Would you like to use any of these device(s) for VPP [y/N]? y\r
-Would you like to use device 0000:90:00.0 for VPP [y/N]? \r
-Would you like to use device 0000:8f:00.0 for VPP [y/N]? \r
-Would you like to use device 0000:84:00.0 for VPP [y/N]? \r
-Would you like to use device 0000:84:00.1 for VPP [y/N]? \r
-Would you like to use device 0000:08:00.1 for VPP [y/N]? \r
-Would you like to use device 0000:02:00.0 for VPP [y/N]? y\r
-Would you like to use device 0000:02:00.1 for VPP [y/N]? y\r
-Would you like to use device 0000:86:00.0 for VPP [y/N]? y\r
-Would you like to use device 0000:86:00.1 for VPP [y/N]? y\r
-\r
-These device(s) will be used by VPP.\r
-\r
-PCI ID          Description                                       \r
-----------------------------------------------------------------\r
-0000:86:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:86:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:02:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:02:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-\r
-Would you like to remove any of these device(s) [y/N]? \r
-\r
-These device(s) will be used by VPP, please rerun this option if this is incorrect.\r
-\r
-PCI ID          Description                                       \r
-----------------------------------------------------------------\r
-0000:86:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:86:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:02:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-0000:02:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection    \r
-\r
-Your system has 32 core(s) and 2 Numa Nodes.\r
-To begin, we suggest not reserving any cores for VPP or other processes.\r
-Then to improve performance try reserving cores as needed. \r
-\r
-How many core(s) do you want to reserve for processes other than VPP? [0-16][0]? 4\r
-How many core(s) shall we reserve for VPP workers[0-4][0]? 2\r
-Should we reserve 1 core for the VPP Main thread? [Y/n]? \r
-\r
-There currently 1024 2048 kB huge pages free.\r
-Do you want to reconfigure the number of huge pages [y/N]? y\r
-\r
-There currently a total of 1024 huge pages.\r
-How many huge pages do you want [1024 - 22511][1024]? 8192\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 3\r
-\r
-We are now going to configure your system(s).\r
-\r
-Are you sure you want to do this [Y/n]? \r
-These are the changes we will apply to\r
-the huge page file (/etc/sysctl.d/80-vpp.conf).\r
-\r
-1,2d0\r
-< # Number of 2MB hugepages desired\r
-< vm.nr_hugepages=1024\r
-4,7c2,3\r
-< # Must be greater than or equal to (2 * vm.nr_hugepages).\r
-< vm.max_map_count=3096\r
-< \r
-< # All groups allowed to access hugepages\r
----\r
-> vm.nr_hugepages=8192\r
-> vm.max_map_count=17408\r
-8a5\r
-> kernel.shmmax=17179869184\r
-10,15d6\r
-< # Shared Memory Max must be greator or equal to the total size of hugepages.\r
-< # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024\r
-< # If the existing kernel.shmmax setting  (cat /sys/proc/kernel/shmmax)\r
-< # is greater than the calculated TotalHugepageSize then set this parameter\r
-< # to current shmmax value.\r
-< kernel.shmmax=2147483648\r
-\r
-\r
-Are you sure you want to apply these changes [Y/n]? \r
-These are the changes we will apply to\r
-the VPP startup file (/etc/vpp/startup.conf).\r
-\r
-3c3\r
-<   nodaemon\r
----\r
->   interactive\r
-5a6\r
->   cli-listen /run/vpp/cli.sock\r
-17c18,25\r
-<      ## In the VPP there is one main thread and optionally the user can create worker(s)\r
----\r
-> \r
->   main-core 8\r
->   corelist-workers 9-10,5-6\r
-> \r
->   scheduler-policy fifo\r
->   scheduler-priority 50\r
-> \r
->         ## In the VPP there is one main thread and optionally the user can create worker(s)\r
-52,53c60,76\r
-< # dpdk {\r
-<      ## Change default settings for all intefaces\r
----\r
-> dpdk {\r
-> \r
->   dev 0000:86:00.0 { \r
->     num-rx-queues 2\r
->   }\r
->   dev 0000:86:00.1 { \r
->     num-rx-queues 2\r
->   }\r
->   dev 0000:02:00.0 { \r
->     num-rx-queues 2\r
->   }\r
->   dev 0000:02:00.1 { \r
->     num-rx-queues 2\r
->   }\r
->   num-mbufs 71680\r
-> \r
->         ## Change default settings for all intefaces\r
-82a106,115\r
->      ## Specify bonded interface and its slaves via PCI addresses\r
->      ## \r
->         ## Bonded interface in XOR load balance mode (mode 2) with L3 and L4 headers \r
->      # vdev eth_bond0,mode=2,slave=0000:02:00.0,slave=0000:03:00.0,xmit_policy=l34\r
->      # vdev eth_bond1,mode=2,slave=0000:02:00.1,slave=0000:03:00.1,xmit_policy=l34\r
->      ##\r
->      ## Bonded interface in Active-Back up mode (mode 1)\r
->      # vdev eth_bond0,mode=1,slave=0000:02:00.0,slave=0000:03:00.0\r
->      # vdev eth_bond1,mode=1,slave=0000:02:00.1,slave=0000:03:00.1\r
-> \r
-99c132\r
-< # }\r
----\r
-> }\r
-108a142\r
-> \r
-\r
-\r
-Are you sure you want to apply these changes [Y/n]? \r
-\r
-The configured grub cmdline looks like this:\r
-GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable isolcpus=1-4,8,9-10,5-6 nohz_full=1-4,8,9-10,5-6 rcu_nocbs=1-4,8,9-10,5-6"\r
-\r
-The current boot cmdline looks like this:\r
-BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro\r
-\r
-Do you want to keep the current boot cmdline [Y/n]? \r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 1\r
-\r
-==============================\r
-NODE: DUT1\r
-\r
-CPU:\r
-          Model name:    Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz\r
-              CPU(s):    32\r
-  Thread(s) per core:    2\r
-  Core(s) per socket:    8\r
-           Socket(s):    2\r
-   NUMA node0 CPU(s):    0-7,16-23\r
-   NUMA node1 CPU(s):    8-15,24-31\r
-         CPU max MHz:    3600.0000\r
-         CPU min MHz:    1200.0000\r
-                 SMT:    Enabled\r
-\r
-VPP Threads: (Name: Cpu Number)\r
-\r
-Grub Command Line:\r
-  Current: BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro\r
-  Configured: GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable isolcpus=1-4,8,9-10,5-6 nohz_full=1-4,8,9-10,5-6 rcu_nocbs=1-4,8,9-10,5-6"\r
-\r
-Huge Pages:\r
-  Total System Memory           : 65863484 kB\r
-  Total Free Memory             : 41163916 kB\r
-  Actual Huge Page Total        : 8192\r
-  Configured Huge Page Total    : 8192\r
-  Huge Pages Free               : 3108\r
-  Huge Page Size                : 2048 kB\r
-\r
-Devices:\r
-Total Number of Buffers: 71680\r
-\r
-Status:\r
-  active (running)\r
-  Sep 27 12:49:59 tf-ucs-3 vpp[13671]: EAL: No free hugepages reported in hugepages-1048576kB\r
-\r
-==============================\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: 1\r
-\r
-==============================\r
-NODE: DUT1\r
-\r
-CPU:\r
-          Model name:    Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz\r
-              CPU(s):    32\r
-  Thread(s) per core:    2\r
-  Core(s) per socket:    8\r
-           Socket(s):    2\r
-   NUMA node0 CPU(s):    0-7,16-23\r
-   NUMA node1 CPU(s):    8-15,24-31\r
-         CPU max MHz:    3600.0000\r
-         CPU min MHz:    1200.0000\r
-                 SMT:    Enabled\r
-\r
-VPP Threads: (Name: Cpu Number)\r
-  vpp_stats : 0   \r
-  vpp_wk_2  : 9   \r
-  vpp_wk_3  : 10  \r
-  vpp_wk_0  : 5   \r
-  vpp_wk_1  : 6   \r
-  vpp_main  : 8   \r
-\r
-Grub Command Line:\r
-  Current: BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro\r
-  Configured: GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable isolcpus=1-4,8,9-10,5-6 nohz_full=1-4,8,9-10,5-6 rcu_nocbs=1-4,8,9-10,5-6"\r
-\r
-Huge Pages:\r
-  Total System Memory           : 65863484 kB\r
-  Total Free Memory             : 41170684 kB\r
-  Actual Huge Page Total        : 8192\r
-  Configured Huge Page Total    : 8192\r
-  Huge Pages Free               : 7936\r
-  Huge Page Size                : 2048 kB\r
-\r
-Devices:\r
-Total Number of Buffers: 71680\r
-Name                           Socket RXQs RXDescs TXQs TXDescs\r
-TenGigabitEthernet2/0/0             0    2    1024    5    1024\r
-TenGigabitEthernet2/0/1             0    2    1024    5    1024\r
-TenGigabitEthernet86/0/0            1    2    1024    5    1024\r
-TenGigabitEthernet86/0/1            1    2    1024    5    1024\r
-\r
-Status:\r
-  active (running)\r
-\r
-==============================\r
-\r
-What would you like to do?\r
-\r
-1) Show basic system information\r
-2) Dry Run (Will save the configuration files in /usr/local/vpp/vpp-config/dryrun for inspection)\r
-       and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml\r
-3) Full configuration (WARNING: This will change the system configuration)\r
-4) Install/Uninstall VPP.\r
-5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).\r
-6) Install QEMU patch (Needed when running openstack).\r
-9 or q) Quit\r
-\r
-Command: q\r
-# \r
+VPP configuration utility
+=========================
+
+The purpose of the VPP configuration utility is to allow the user to configure
+VPP in a simple and safe manner. The utility takes input from the user and
+then modifies the key configuration files. The user can then examine these files
+to be sure they are correct and then actually apply the configuration. The user
+can also install a released and stable version of VPP. This is currently
+released with release 17.10.
+
+VPP config Usage
+----------------
+
+The installation and executing of the VPP configuration utility is simple. First
+install the python pip module. Using pip install, then pip install vpp-config.
+Then simply type ``vpp-config`` and answer the questions. If you are not sure what
+to answer choose the default. For yes or no questions the capital letter
+designates the default. For example, for a question that shows [Y/n] Y is the
+default. For numbers the default is within the brackets for example for a
+question that shows [1024]. 1024 is the default.
+
+The flow of the utility is to inspect the system, if VPP is not install it,
+create dry run configurations, inspect the files created during the dry run,
+apply the configuration and then inspect the system again and then repeat.
+
+Caveats
+-------
+
+- Supports Ubuntu, centos7, RedHat is coming shortly.
+
+For Developers:
+
+Modifying the code is reasonable simple. The process would be edit and debug the
+code from the root directory. In order to do this, we need a script that will copy
+or data files to the proper place. This is where they end up with pip install. For
+Ubuntu, this is ``/usr/local/vpp/vpp-config``. I have provided a script that will copy
+the relevant files correctly. I have also provided a script that will clean the
+environment so you can start from scratch. These are the steps to run the utility
+in this environment. The scripts are meant to be run from the root directory.
+
+.. code-block:: console
+
+    ./scripts/clean.sh
+    ./scripts/cp-data.sh
+    ./vpp-config
+
+When the utility is installed with pip the wrapper ``scripts/vpp-config`` is written to
+``/usr/local/bin``. However, the starting point when debugging this script locally is
+vpp-config. Run the utility by executing vpp-config.
+
+The start point in the code is in vpp_config.py. However, most of the work is
+done in the files in ``./vpplib``
+
+Uploading to PyPi
+-----------------
+
+To upload this utility to PpPi simple do the following. Currently, I have my own account
+when we want everyone to contribute we will need to change that.
+
+
+.. code-block:: console
+
+    sudo bash
+    cd vpp_config
+    python setup.py sdist bdist_wheel
+    twine upload dist/*
+
+Example Run:
+
+.. code-block:: console
+
+    # pip install vpp-config
+    # 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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or 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=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro
+      Configured: GRUB_CMDLINE_LINUX_DEFAULT=""
+
+    Huge Pages:
+      Total System Memory           : 65863484 kB
+      Total Free Memory             : 41325924 kB
+      Actual Huge Page Total        : 8192
+      Configured Huge Page Total    : 1024
+      Huge Pages Free               : 8192
+      Huge Page Size                : 2048 kB
+
+    Devices:
+
+    Status:
+      Not Installed
+
+    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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or q) Quit
+
+    Command: 4
+
+    There are no VPP packages on node localhost.
+    Do you want to install VPP [Y/n]?
+    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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or 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  : 0
+      vpp_stats : 0
+
+    Grub Command Line:
+      Current: BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro
+      Configured: GRUB_CMDLINE_LINUX_DEFAULT=""
+
+    Huge Pages:
+      Total System Memory           : 65863484 kB
+      Total Free Memory             : 55877364 kB
+      Actual Huge Page Total        : 1024
+      Configured Huge Page Total    : 1024
+      Huge Pages Free               : 1024
+      Huge Page Size                : 2048 kB
+
+    Devices:
+    Name                           Socket RXQs RXDescs TXQs TXDescs
+
+    Status:
+      active (running)
+
+    ==============================
+
+    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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or q) Quit
+
+    Command: 2
+
+    These device(s) are currently NOT being used by VPP or the OS.
+
+    PCI ID          Description
+    ----------------------------------------------------------------
+    0000:02:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection
+    0000:02:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection
+
+    Would you like to give any of these devices back to the OS [y/N]? y
+    Would you like to use device 0000:02:00.0 for the OS [y/N]? y
+    Would you like to use device 0000:02:00.1 for the OS [y/N]? y
+
+    These devices have kernel interfaces, but appear to be safe to use with VPP.
+
+    PCI ID          Kernel Interface(s)       Description
+    ------------------------------------------------------------------------------------------
+    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
+    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:90:00.0 for VPP [y/N]?
+    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]? y
+    Would you like to use device 0000:02:00.1 for VPP [y/N]? y
+    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
+
+    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:02:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection
+    0000:02:00.1    82599ES 10-Gigabit SFI/SFP+ Network Connection
+
+    Would you like to remove any of these device(s) [y/N]?
+
+    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
+    0000:02:00.0    82599ES 10-Gigabit SFI/SFP+ Network Connection
+    0000:02: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 try reserving cores as needed.
+
+    How many core(s) do you want to reserve for processes other than VPP? [0-16][0]? 4
+    How many core(s) shall we reserve for VPP workers[0-4][0]? 2
+    Should we reserve 1 core for the VPP Main thread? [Y/n]?
+
+    There currently 1024 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 - 22511][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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or q) Quit
+
+    Command: 3
+
+    We are now going to configure your system(s).
+
+    Are you sure you want to do this [Y/n]?
+    These are the changes we will apply to
+    the huge page file (/etc/sysctl.d/80-vpp.conf).
+
+    1,2d0
+    < # Number of 2MB hugepages desired
+    < vm.nr_hugepages=1024
+    4,7c2,3
+    < # Must be greater than or equal to (2 * vm.nr_hugepages).
+    < vm.max_map_count=3096
+    <
+    < # All groups allowed to access hugepages
+    ---
+    > vm.nr_hugepages=8192
+    > vm.max_map_count=17408
+    8a5
+    > kernel.shmmax=17179869184
+    10,15d6
+    < # 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
+
+    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).
+
+    3c3
+    <   nodaemon
+    ---
+    >   interactive
+    5a6
+    >   cli-listen /run/vpp/cli.sock
+    17c18,25
+    <     ## In the VPP there is one main thread and optionally the user can create worker(s)
+    ---
+    >
+    >   main-core 8
+    >   corelist-workers 9-10,5-6
+    >
+    >   scheduler-policy fifo
+    >   scheduler-priority 50
+    >
+    >         ## In the VPP there is one main thread and optionally the user can create worker(s)
+    52,53c60,76
+    < # dpdk {
+    <     ## Change default settings for all intefaces
+    ---
+    > dpdk {
+    >
+    >   dev 0000:86:00.0 {
+    >     num-rx-queues 2
+    >   }
+    >   dev 0000:86:00.1 {
+    >     num-rx-queues 2
+    >   }
+    >   dev 0000:02:00.0 {
+    >     num-rx-queues 2
+    >   }
+    >   dev 0000:02:00.1 {
+    >     num-rx-queues 2
+    >   }
+    >   num-mbufs 71680
+    >
+    >         ## Change default settings for all intefaces
+    82a106,115
+    >     ## Specify bonded interface and its slaves via PCI addresses
+    >     ##
+    >         ## Bonded interface in XOR load balance mode (mode 2) with L3 and L4 headers
+    >     # vdev eth_bond0,mode=2,slave=0000:02:00.0,slave=0000:03:00.0,xmit_policy=l34
+    >     # vdev eth_bond1,mode=2,slave=0000:02:00.1,slave=0000:03:00.1,xmit_policy=l34
+    >     ##
+    >     ## Bonded interface in Active-Back up mode (mode 1)
+    >     # vdev eth_bond0,mode=1,slave=0000:02:00.0,slave=0000:03:00.0
+    >     # vdev eth_bond1,mode=1,slave=0000:02:00.1,slave=0000:03:00.1
+    >
+    99c132
+    < # }
+    ---
+    > }
+    108a142
+    >
+
+    Are you sure you want to apply these changes [Y/n]?
+
+    The configured grub cmdline looks like this:
+    GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable isolcpus=1-4,8,9-10,5-6 nohz_full=1-4,8,9-10,5-6 rcu_nocbs=1-4,8,9-10,5-6"
+
+    The current boot cmdline looks like this:
+    BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro
+
+    Do you want to keep the current boot cmdline [Y/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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or 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=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro
+      Configured: GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable isolcpus=1-4,8,9-10,5-6 nohz_full=1-4,8,9-10,5-6 rcu_nocbs=1-4,8,9-10,5-6"
+
+    Huge Pages:
+      Total System Memory           : 65863484 kB
+      Total Free Memory             : 41163916 kB
+      Actual Huge Page Total        : 8192
+      Configured Huge Page Total    : 8192
+      Huge Pages Free               : 3108
+      Huge Page Size                : 2048 kB
+
+    Devices:
+    Total Number of Buffers: 71680
+
+    Status:
+      active (running)
+      Sep 27 12:49:59 tf-ucs-3 vpp[13671]: EAL: No free hugepages reported in hugepages-1048576kB
+
+    ==============================
+
+    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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or 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_stats : 0
+      vpp_wk_2  : 9
+      vpp_wk_3  : 10
+      vpp_wk_0  : 5
+      vpp_wk_1  : 6
+      vpp_main  : 8
+
+    Grub Command Line:
+      Current: BOOT_IMAGE=/boot/vmlinuz-4.4.0-96-generic root=UUID=d760b82f-f37b-47e2-9815-db8d479a3557 ro
+      Configured: GRUB_CMDLINE_LINUX_DEFAULT="intel_pstate=disable isolcpus=1-4,8,9-10,5-6 nohz_full=1-4,8,9-10,5-6 rcu_nocbs=1-4,8,9-10,5-6"
+
+    Huge Pages:
+      Total System Memory           : 65863484 kB
+      Total Free Memory             : 41170684 kB
+      Actual Huge Page Total        : 8192
+      Configured Huge Page Total    : 8192
+      Huge Pages Free               : 7936
+      Huge Page Size                : 2048 kB
+
+    Devices:
+    Total Number of Buffers: 71680
+    Name                           Socket RXQs RXDescs TXQs TXDescs
+    TenGigabitEthernet2/0/0             0    2    1024    5    1024
+    TenGigabitEthernet2/0/1             0    2    1024    5    1024
+    TenGigabitEthernet86/0/0            1    2    1024    5    1024
+    TenGigabitEthernet86/0/1            1    2    1024    5    1024
+
+    Status:
+      active (running)
+
+    ==============================
+
+    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)
+        and user input in /usr/local/vpp/vpp-config/configs/auto-config.yaml
+    3) Full configuration (WARNING: This will change the system configuration)
+    4) Install/Uninstall VPP.
+    5) Dry Run from /usr/local/vpp/vpp-config/auto-config.yaml (will not ask questions).
+    6) Install QEMU patch (Needed when running openstack).
+    9 or q) Quit
+
+    Command: q
+    #