Virtual functions (VFs) are lightweight PCIe functions that contain all the resources necessary for data exchange but have a minimized set of configuration resources. Interaction between vSphere and VFs is limited.

  • The physical NIC must use MSI-X interrupts.
  • VFs do not implement rate control in vSphere. Every VF can potentially use the entire bandwidth of a physical link.
  • When a VF device is configured as a passthrough device on a virtual machine, the standby and hibernate functions for the virtual machine are not supported.
  • The maximum number of VFs that you can create and the maximum number of VFs that you can use for passthrough are different. The maximum number of VFs that you can instantiate depends on the NIC capability and on the hardware configuration of the host. However, due to the limited number of interrupt vectors available for passthrough devices, only a limited number of all instantiated VFs can be used on an ESXi host.

    The total number of interrupt vectors on each ESXi host can scale up to 4096 in the case of 32 CPUs. When the host boots, devices on the host such as storage controllers, physical network adapters, and USB controllers consume a subset of the 4096 vectors. If these devices require more than 1024 vectors, the maximum number of potentially supported VFs is reduced.

  • The number of VFs that is supported on an Intel NIC can be different from the number that is supported on an Emulex NIC. See the technical documentation from the NIC vendor.
  • If you have Intel and Emulex NICs present with SR-IOV enabled, the number of VFs available for the Intel NICs depends on how many VFs are configured for the Emulex NIC, and the reverse. You can use the following formula to estimate the maximum number of VFs for use if all 3072 interrupt vectors are available for passthrough:
    3X + 2Y < 3072

    where X is the number of Intel VFs, and Y is the number of Emulex VFs.

    This number can be smaller if other types of devices on the host use more than 1024 interrupt vectors from the total of 4096 vectors on the host.

  • vSphere SR-IOV supports up to 1024 VFs on a supported Intel and Emulex NICs.
  • vSphere SR-IOV supports up to 64 VFs on a supported Intel or Emulex NIC.
  • If a supported Intel NIC loses connection, all VFs from the physical NIC stop communication, including that between VFs.
  • If a supported Emulex NIC loses connection, all VFs stop communication with the external environment, but communication between VFs still works.
  • VF drivers offer many different features, such as IPv6 support, TSO, and LRO checksum. See the technical documentation of the NIC vendor for more details.