Enable SR-IOV with OVS/OVN

This section provides instructions on how to enable Single Root I/O Virtualization (SR-IOV) for environments that use Neutron Open vSwitch (OVS) or Open Virtual Network (OVN) backends.

Note

Consider this section as part of Deploy an OpenStack cluster.

Prerequisites

Before enabling SR-IOV, ensure your environment meets the following hardware and firmware requirements:

  • Hardware: Network Interface Cards (NICs) with native SR-IOV support

  • Firmware: SR-IOV and VT-d (Virtualization Technology for Directed I/O) enabled in the system BIOS/UEFI

  • Network design: VLAN segmentation must be planned, as SR-IOV requires VLAN-backed networks for tenant isolation

Configuration procedure

  1. Enable IOMMU in the kernel by configuring intel_iommu=on in the GRUB configuration to allow the kernel to manage PCI devices. Specify the parameter for compute nodes in the grubConfig section of BareMetalHostProfile:

    spec:
      grubConfig:
          defaultGrubOptions:
            - 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX intel_iommu=on"'
    
  2. Configure the OpenStackDeployment CR to deploy OpenStack with the VLAN tenant network encapsulation.

    Caution

    To ensure that the configuration applies correctly, define VLAN segmentation during the initial OpenStack deployment.

    Configuration example:

    spec:
      features:
        neutron:
          external_networks:
          - bridge: br-ex
            interface: pr-floating
            mtu: null
            network_types:
            - flat
            physnet: physnet1
            vlan_ranges: null
          - bridge: br-tenant
            interface: bond0
            network_types:
              - vlan
            physnet: tenant
            vlan_ranges: 490:499,1420:1459
          tenant_network_types:
            - vlan
    
  3. Enable SR-IOV in the OpenStackDeployment CR through the node-specific override settings defining the physical interfaces and number of VFs to be created. For example:

    spec:
      nodes:
        <NODE-LABEL>::<NODE-LABEL-VALUE>:
          features:
            neutron:
              sriov:
                enabled: true
                nics:
                - device: enp10s0f1
                  num_vfs: 7
                  physnet: tenant