| Creating VPP Startup Configuration |
| ================================== |
| |
| This document describes how to create the VPP startup configuration file |
| located at ``/etc/vpp/contiv-vswitch.conf``. |
| |
| Hardware Interface Configuration |
| -------------------------------- |
| |
| Single-NIC Configuration |
| ~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| You need to configure hardware interfaces for use by VPP. First, find |
| out the PCI address of the host’s network interface. On Debian-based |
| distributions, you can use ``lshw``: |
| |
| :: |
| |
| sudo lshw -class network -businfo |
| Bus info Device Class Description |
| ======================================================== |
| pci@0000:03:00.0 ens160 network VMXNET3 Ethernet Controller |
| |
| In our case, it would be the ``ens3`` interface with the PCI address |
| ``0000:00:03.0`` |
| |
| Now, add or modify the VPP startup config file |
| (``/etc/vpp/contiv-vswitch.conf``) to contain the proper PCI address: |
| |
| :: |
| |
| unix { |
| nodaemon |
| cli-listen /run/vpp/cli.sock |
| cli-no-pager |
| coredump-size unlimited |
| full-coredump |
| poll-sleep-usec 100 |
| } |
| nat { |
| endpoint-dependent |
| } |
| dpdk { |
| dev 0000:00:03.0 |
| } |
| api-trace { |
| on |
| nitems 500 |
| } |
| |
| Multi-NIC Configuration |
| ~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Similar to the single-NIC configuration, use command *lshw* to find the |
| PCI addresses of all the NICs in the system, for example: |
| |
| :: |
| |
| $ sudo lshw -class network -businfo |
| Bus info Device Class Description |
| ==================================================== |
| pci@0000:00:03.0 ens3 network Virtio network device |
| pci@0000:00:04.0 ens4 network Virtio network device |
| |
| In the example above, ``ens3`` would be the primary interface and |
| ``ens4`` would be the interface that would be used by VPP. The PCI |
| address of the ``ens4`` interface would be ``0000:00:04.0``. |
| |
| Make sure the selected interface is *shut down*, otherwise VPP will not |
| grab it: |
| |
| :: |
| |
| sudo ip link set ens4 down |
| |
| Now, add or modify the VPP startup config file in |
| ``/etc/vpp/contiv-vswitch.conf`` to contain the proper PCI address: |
| |
| :: |
| |
| unix { |
| nodaemon |
| cli-listen /run/vpp/cli.sock |
| cli-no-pager |
| coredump-size unlimited |
| full-coredump |
| poll-sleep-usec 100 |
| } |
| nat { |
| endpoint-dependent |
| } |
| dpdk { |
| dev 0000:00:04.0 |
| } |
| api-trace { |
| on |
| nitems 500 |
| } |
| |
| If assigning multiple NICs to VPP you will need to include each NIC’s |
| PCI address in the dpdk stanza in ``/etc/vpp/contiv-vswitch.conf``. |
| |
| Assigning all NICs to VPP |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| On a multi-NIC node, it is also possible to assign all NICs from the |
| kernel for use by VPP. First, you need to install the STN daemon, as |
| described [here][1], since you will want the NICs to revert to the |
| kernel if VPP crashes. |
| |
| You also need to configure the NICs in the VPP startup config file in |
| ``/etc/vpp/contiv-vswitch.conf``. For example, to use both the primary |
| and secondary NIC, in a two-NIC node, your VPP startup config file would |
| look something like this: |
| |
| :: |
| |
| unix { |
| nodaemon |
| cli-listen /run/vpp/cli.sock |
| cli-no-pager |
| coredump-size unlimited |
| full-coredump |
| poll-sleep-usec 100 |
| } |
| nat { |
| endpoint-dependent |
| } |
| dpdk { |
| dev 0000:00:03.0 |
| dev 0000:00:04.0 |
| } |
| api-trace { |
| on |
| nitems 500 |
| } |
| |
| Installing ``lshw`` on CentOS/RedHat/Fedora |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Note: On CentOS/RedHat/Fedora distributions, ``lshw`` may not be |
| available by default, install it by |
| |
| :: |
| |
| sudo yum -y install lshw |
| |
| Power-saving Mode |
| ----------------- |
| |
| In regular operation, VPP takes 100% of one CPU core at all times (poll |
| loop). If high performance and low latency is not required you can |
| “slow-down” the poll-loop and drastically reduce CPU utilization by |
| adding the following stanza to the ``unix`` section of the VPP startup |
| config file: |
| |
| :: |
| |
| unix { |
| ... |
| poll-sleep-usec 100 |
| ... |
| } |
| |
| The power-saving mode is especially useful in VM-based development |
| environments running on laptops or less powerful servers. |
| |
| VPP API Trace |
| ------------- |
| |
| To troubleshoot VPP configuration issues in production environments, it |
| is strongly recommended to configure VPP API trace. This is done by |
| adding the following stanza to the VPP startup config file: |
| |
| :: |
| |
| api-trace { |
| on |
| nitems 500 |
| } |
| |
| You can set the size of the trace buffer with the attribute. |
| |