a2c9509a4a
Type: improvement Change-Id: Ie3b25a86b99098d2b3a21a11fc73234c8ed589d6 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
518 lines
19 KiB
ReStructuredText
518 lines
19 KiB
ReStructuredText
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
|
|
#
|