Enable SR-IOV for Tungsten Fabric

This section instructs you on how to enable SR-IOV with the Neutron Tungsten Fabric (TF) backend.

To enable SR-IOV for TF:

  1. Verify that your deployment meets the following requirements:

    • NICs with the SR-IOV support are installed

    • SR-IOV and VT-d are enabled in BIOS

  2. Enable IOMMU in the kernel by configuring intel_iommu=on in the GRUB configuration file. Specify the parameter for compute nodes in BareMetalHostProfile in the grubConfig section:

    spec:
      grubConfig:
        defaultGrubOptions:
          - 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX intel_iommu=on"'
    
  3. Enable SR-IOV in the OpenStackDeployment CR through the node-specific overrides settings. For example:

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

    Warning

    After the OpenStackDeployment CR modification, the TF Operator generates a separate vRouter DaemonSet with specified settings. The tf-vrouter-agent-<XXXXX> pods will be automatically restarted on the affected nodes causing the network services interruption on virtual machines running on these hosts.

  4. Optional. To modify a vRouter DaemonSet according to the SR-IOV definition in the OpenStackDevelopment CR, add vRouter custom specs to the TF Operator CR with the node label specified in the OpenStackDeployment CR. For example:

    spec:
      nodes:
        sriov:
          labels:
            name: <NODE-LABEL>
            value: <NODE-LABEL-VALUE>
          nodeVRouter:
            enabled: true
            envSettings:
              agent:
              - name: VROUTER_GATEWAY
                value: <VROUTER-GATEWAY-IP>
    
    spec:
      controllers:
        tf-vrouter:
          agent:
            customSpecs:
            - name: sriov
              label:
                name: <NODE-LABEL>
                value: <NODE-LABEL-VALUE>
              containers:
              - name: agent
                env:
                - name: <VROUTER-GATEWAY>
                  value: <VROUTER-GATEWAY-IP>