Tip

This is the documentation for the 20.08 version. Looking for the documentation of the latest version? Have a look here.

DPDK ConfigurationΒΆ

Commands in this section configure hardware settings for DPDK devices.

dataplane dpdk dev <pci-id> (crypto|crypto-vf):

Configures QAT devices for cryptographic acceleration. See Setup QAT Compatible Hardware for details.

dataplane dpdk dev <pci-id> network [name <name>] [num-rx-queues [<rq>]] [num-tx-queues [<tq>]] [num-rx-desc [<rd>]] [num-tx-desc [<td>]] [tso (off|on)] [vlan-strip-offload (off|on)]:

Configures network interface devices and their options, see Setup NICs in Dataplane for more information.

name <name>:

Sets a custom name for a network device in TNSR instead of the automatically generated name (<Link Speed><Bus Location>). For example device 0000:06:00.0 can have a custom name of WAN instead of the default GigabitEthernet6/0/0. Used for convenience and to make interface names self-documenting.

See also

See Customizing Interface Names for additional details.

num-rx-queues [<rq>] num-tx-queues [<tq>]:

Receive and transmit queue sizes for this device.

num-rx-desc [<rd>] [num-tx-desc [<td>]:

Receive and transmit descriptor sizes for this device. Certain network cards, such as Fortville models, may need the descriptors set to 2048 to avoid dropping packets at high loads.

tso (on|off):

TCP segmentation offload (TSO). When enabled on hardware which supports TSO, packet data is offloaded to hardware in large quantities and the hardware handles segmentation into MTU-sized chunks rather than performing segmentation in software. This results in improved throughput as shifting the per-packet processing to hardware reduces the burden on the network stack. Disabled by default.

vlan-strip-offload (off|on):

Enables hardware offloading of VLAN stripping. This utilizes hardware filtering of VLAN packets which are not destined for VLANs configured on TNSR. Improves performance by reducing processing of irrelevant packets when connected to switch trunking ports. Disabled by default.

Note

The default values for these configuration options can be set by dataplane dpdk dev default network <options>. These default values are used by the dataplane when an interface does not have a specific value set. The name option must be unique for each interface and thus does not support a default value.

dataplane dpdk decimal-interface-names:

Disabled by default. When set, interface names automatically generated by the dataplane will use decimal values for bus location values rather than hexadecimal values. Linux uses decimal values when forming interface names (e.g. enp0s20f1), so administrators may find using decimal values more familiar.

For example, device ID 0000:00:14.1 (enp0s20f1 in the host OS) would normally be GigabitEthernet0/14/1 since the value 14 in the bus slot is in hexadecimal. With decimal-interface-names set, the name would be GigabitEthernet0/20/1 instead.

dataplane dpdk iova-mode (pa|va):

Manually configures the IO Virtual Addresses (IOVA) mode used by DPDK when performing hardware IO from user space. Hardware must use IO addresses, but it cannot utilize user space virtual addresses directly. These IO addresses can be either physical addresses (PA) or virtual addresses (VA). No matter which mode is set, these are abstracted to TNSR as IOVA addresses so it does not need to use them directly.

In most cases the default IOVA mode selected by DPDK is optimal.

Warning

When the vfio-pci UIO driver is active, IOVA must be explicitly set to pa since the automatic selection of va will fail with that driver.

See also

For more detail on IOVA, consult the DPDK documentation.

pa:

Physical Address mode. IOVA addresses used by DPDK correspond to physical addresses, and both physical and virtual memory layouts match. This mode is safest from the perspective of the hardware, and is the mode chosen by default. Most hardware supports PA mode at a minimum.

The primary downside of PA mode is that memory fragmentation in physical space must also be reflected in virtual memory space.

va:

Virtual Address mode. IOVA addresses do not follow the layout of physical memory; Physical memory is changed to match the virtual memory instead. Because virtual memory appears as one continuous segment, large memory allocations are more likely to succeed.

The primary downside of VA mode is that it relies on kernel support and the availability of IOMMU.

dataplane dpdk log-level (alert|critical|debug|emergency|error|info|notice|warning):

Sets the log level for messages generated by DPDK. The default log level is notice.

dataplane dpdk no-multi-seg:

Disables multi-segment buffers for network devices. Can improve performance, but disables jumbo MTU support. Recommended for Mellanox devices.

dataplane dpdk no-pci:

Disables scanning of the PCI bus for interface candidates when the dataplane starts. By default, interfaces which are administratively down in the host OS can be selected for use by the dataplane.

dataplane dpdk no-tx-checksum-offload:

Disables transmit checksum offloading of TCP/UDP for network devices.

dataplane dpdk num-mem-channels <num>:

Sets the number of memory channels into the CPU. Optimal value varies by hardware specifications and number of installed memory modules. For example, a device with four memory modules installed may have 2 memory channels. Check the BIOS and OEM hardware specifications to determine the value. Valid values are from 1-65535.

dataplane dpdk tcp-udp-checksum:

Enables receive checksum offloading of TCP/UDP for network devices. Disabled by default.

dataplane dpdk num-crypto-mbufs <num>:

Sets the number of memory buffers used by the dataplane for cryptographic tasks, in the range 1-4294967295. Higher values can improve throughput when the dataplane encrypt/decrypt nodes are processing data.

dataplane dpdk uio-driver [<driver-name>]:

Configures the UIO driver for interfaces. See Setup NICs in Dataplane.

dataplane dpdk vdev <sw-dev-type>:

Defines a software device to be used by the dataplane, such as:

aesni_gcm:

AESNI GCM cryptodev

aesni_mb:

AESNI multibuffer cryptodev