SR-IOV deployment planning

Choose the appropriate configuration parameter values to optimize your single root I/O virtualization (SR-IOV) for NFV in Red Hat OpenStack Services on OpenShift (RHOSO) environments deployment for NFV in Red Hat OpenStack Services on OpenShift (RHOSO) environments.

Inform your choices by understanding how SR-IOV uses the Compute node hardware (CPU, NUMA nodes, memory, NICs).

NIC partitioning for SR-IOV

You can reduce the number of NICs that you need for each host by configuring virtual functions (VFs) that use single root I/O virtualization (SR-IOV) on RHOSO management networks and provider networks.

When you partition a single, high-speed NIC into multiple VFs, you can use the NIC for both control and data plane traffic. This feature has been validated on Intel Fortville NICs, and Mellanox CX-5 NICs.

To partition your NICs, you must adhere to the following requirements:

  • The NICs, their applications, the VF guest, and OVS reside on the same NUMA Compute node.

    Doing so helps to prevent performance degradation from cross-NUMA operations.

  • Ensure that the NIC firmware is up-to-date.

    Yum or dnf updates might not complete the firmware update. For more information, see your vendor documentation.

Important

Some of the initial configuration settings used during bare-metal provisioning are not automatically removed after provisioning. In certain cases, this can lead to duplicate assignment of the IP address used for the provisioning control plane interface as specified in spec.bareMetalSetTemplate.ctlplaneInterface in your OpenStackDataPlaneNodeSet CR. If your os-net-config data plane deployment from unprovisioned nodes uses the same NIC as something other than a control plane interface, and partitions that NIC, your deployment might be disrupted by IP address conflicts.

To prevent these conflicts, use remove_config.

The conflicts do not happen if os-net-config uses the NIC as a control plane interface in the deployed data plane, or if it does not partition the NIC. In these cases you do not need to use remove-config.

Hardware partitioning for SR-IOV

To achieve high performance with SR-IOV, partition the resources between the host and the guest.

Figure 1. NUMA node topology

NUMA node topology

A typical topology includes 14 cores per NUMA node on dual socket Compute nodes. Both Hyper-Threading (HT) and non-HT cores are supported. Each core has two sibling threads. One core is dedicated to the host on each NUMA node. The virtual network function (VNF) handles the SR-IOV interface bonding. All the interrupt requests (IRQs) are routed on the host cores. The VNF cores are dedicated to the VNFs. They provide isolation from other VNFs and isolation from the host. Each VNF must use resources on a single NUMA node. The SR-IOV NICs used by the VNF must also be associated with that same NUMA node. This topology does not have a virtualization overhead. The host, OpenStack Networking (neutron), and Compute (nova) configuration parameters are exposed in a single file for ease, consistency, and to avoid incoherence that is unrecoverable for proper isolation, causing preemption, and packet loss. The host and virtual machine isolation depend on a tuned profile, which defines the boot parameters and any Red Hat OpenStack Platform modifications based on the list of isolated CPUs.

SR-IOV deployment topology for NFV

An NFV SR-IOV environment can be illustrated by an example with two virtual network functions (VNFs).

The following example has two VNFs each with the management interface represented by mgt and the data plane interfaces. The management interface manages the ssh access, and so on. The data plane interfaces bond the VNFs to DPDK to ensure high availability, as VNFs bond the data plane interfaces by using the DPDK library. The image also has two provider networks for redundancy. The Compute node has two regular NICs bonded together and shared between the VNF management and the Red Hat OpenStack Platform API management.

Figure 2. NFV SR-IOV topology

NFV SR-IOV deployment

The image shows a VNF that uses DPDK at an application level, and has access to SR-IOV virtual functions (VFs) and physical functions (PFs), for better availability or performance, depending on the fabric configuration. DPDK improves performance, while the VF/PF DPDK bonds provide support for failover, and high availability. The VNF vendor must ensure that the DPDK poll mode driver (PMD) supports the SR-IOV card that is being exposed as a VF/PF. The management network uses OVS, therefore the VNF sees a mgmt network device by using the standard virtIO drivers. You can use that device to initially connect to the VNF, and ensure that the DPDK application bonds the two VF/PFs.

SR-IOV deployment topology without HCI

Observe the topology for SR-IOV without hyperconverged infrastructure (HCI) for NFV in the image below. It consists of compute and controller nodes with 1 Gbps NICs, and the RHOSO worker node.

Figure 3. NFV SR-IOV topology without HCI

NFV SR-IOV Topology without HCI