10.8. Connecting a virtual machine to an SR-IOV network


You can connect a virtual machine (VM) to the physical network by using a Single Root I/O Virtualization (SR-IOV) device.

To configure the SR-IOV network and attach the VM to that network, perform the following steps:

  1. Configure an SR-IOV physical network device.
  2. Define the secondary SR-IOV network.
  3. Attach the VM to the SR-IOV network.

10.8.1. Configuring SR-IOV network devices

The SR-IOV Network Operator adds the SriovNetworkNodePolicy.sriovnetwork.openshift.io custom resource definition (CRD) to OpenShift Container Platform. You can configure an SR-IOV network device by creating a SriovNetworkNodePolicy custom resource (CR).

참고

When applying the configuration specified in a SriovNetworkNodePolicy CR, the SR-IOV Operator might drain the nodes, and in some cases, reboot nodes. Reboot only happens in the following cases:

  • With Mellanox NICs (mlx5 driver) a node reboot happens every time the number of virtual functions (VFs) increase on a physical function (PF).
  • With Intel NICs, a reboot only happens if the kernel parameters do not include intel_iommu=on and iommu=pt.

It might take several minutes for a configuration change to apply.

Prerequisites

  • You installed the OpenShift CLI (oc).
  • You have access to the cluster as a user with the cluster-admin role.
  • You have installed the SR-IOV Network Operator.
  • You have enough available nodes in your cluster to handle the evicted workload from drained nodes.
  • You have not selected any control plane nodes for SR-IOV network device configuration.

Procedure

  1. Create an SriovNetworkNodePolicy object, and then save the YAML in the <name>-sriov-node-network.yaml file. Replace <name> with the name for this configuration.

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: <name>
      namespace: openshift-sriov-network-operator
    spec:
      resourceName: <sriov_resource_name>
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      priority: <priority>
      mtu: <mtu>
      numVfs: <num>
      nicSelector:
        vendor: "<vendor_code>"
        deviceID: "<device_id>"
        pfNames: ["<pf_name>", ...]
        rootDevices: ["<pci_bus_id>", "..."]
      deviceType: vfio-pci
      isRdma: false
    • metadata.name defines a name for the SriovNetworkNodePolicy object.
    • metadata.namespace defines the namespace where the SR-IOV Network Operator is installed.
    • spec.resourceName defines the resource name of the SR-IOV device plugin. You can create multiple SriovNetworkNodePolicy objects for a resource name.
    • spec.nodeSelector.feature.node.kubernetes.io/network-sriov.capable defines the node selector to select which nodes are configured. Only SR-IOV network devices on selected nodes are configured. The SR-IOV Container Network Interface (CNI) plugin and device plugin are deployed only on selected nodes.
    • spec.priority is an optional field that defines an integer value between 0 and 99. A smaller number gets higher priority, so a priority of 10 is higher than a priority of 99. The default value is 99.
    • spec.mtu is an optional field that defines a value for the maximum transmission unit (MTU) of the virtual function. The maximum MTU value can vary for different NIC models.
    • spec.numVfs defines the number of the virtual functions (VF) to create for the SR-IOV physical network device. For an Intel network interface controller (NIC), the number of VFs cannot be larger than the total VFs supported by the device. For a Mellanox NIC, the number of VFs cannot be larger than 127.
    • spec.nicSelector defines the Ethernet device for the Operator to configure. You do not need to specify values for all the parameters.

      참고

      It is recommended to identify the Ethernet adapter with enough precision to minimize the possibility of selecting an Ethernet device unintentionally. If you specify rootDevices, you must also specify a value for vendor, deviceID, or pfNames.

      If you specify both pfNames and rootDevices at the same time, ensure that they point to an identical device.

    • spec.nicSelector.vendor is an optional field that defines the vendor hex code of the SR-IOV network device. The only allowed values are either 8086 or 15b3.
    • spec.nicSelector.deviceID is an optional field that defines the device hex code of SR-IOV network device. The only allowed values are 158b, 1015, 1017.
    • spec.nicSelector.pfNames is an optional field that defines an array of one or more physical function (PF) names for the Ethernet device.
    • spec.nicSelector.rootDevices is an optional field that defines an array of one or more PCI bus addresses for the physical function of the Ethernet device. Provide the address in the following format: 0000:02:00.1.
    • spec.deviceType defines the driver type. The vfio-pci driver type is required for virtual functions in OpenShift Virtualization.
    • spec.isRdma is an optional field that defines whether to enable remote direct memory access (RDMA) mode. For a Mellanox card, set isRdma to false. The default value is false.

      참고

      If isRDMA flag is set to true, you can continue to use the RDMA enabled VF as a normal network device. A device can be used in either mode.

  2. Optional: Label the SR-IOV capable cluster nodes with SriovNetworkNodePolicy.Spec.NodeSelector if they are not already labeled. For more information about labeling nodes, see "Understanding how to update labels on nodes".
  3. Create the SriovNetworkNodePolicy object. When running the following command, replace <name> with the name for this configuration:

    $ oc create -f <name>-sriov-node-network.yaml

    After applying the configuration update, all the pods in the sriov-network-operator namespace change to the Running status.

  4. To verify your SR-IOV network device configuration, enter the following command and replace <node_name> with the name of the node where you configured the device.

    $ oc get sriovnetworknodestates -n openshift-sriov-network-operator <node_name> -o jsonpath='{.status.syncStatus}'
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동