| 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 |
| # |