Single Root I/O Virtualization (SR-IOV) is an extension of the PCI Express (PCIe) specification that allows a device, including network adapters, to separate access to its resources among various hardware functions and differentiate between different traffic streams. It allows traffic streams to be delivered directly to the Hyper-V or VM layers separately. It enables networking traffic to bypass the software-defined virtual networking switch layer of Hyper-V and directly into the guest OS to provide for bare-metal networking stack performance. Physical server firmware, physical NIC, and network drivers must all support enabling SR-IOV.
SR-IOV must be enabled in UEFI/BIOS. To check that this has been set, issue the following PowerShell command on each Hyper-V host:
(Get-VMHost).IovSupport
This should return a value of True if it is available and False if it is not or just not enabled.
Enabling SR-IOV on a NIC can be done via PowerShell. An example is shown below.
Enable-NetAdapterSriov -Name "Ethernet 1"
The figure below shows it enabled in the driver for a NIC.
To enable SR-IOV on the Hyper-V vSwitch, it must be selected during creation. An existing Virtual Switch will need to be removed, and recreated with the SR-IOV option. Create the virtual switch, and next to the External network connection type, select “Enable single-root I/O virtualization (SR-IOV)”, as shown below.
Alternatively, use PowerShell to enable SR-IOV when creating a new virtual switch. An example is shown below.
New-VMSwitch <virtual-switch-name> -NetAdapterName <network-adapter-name> -EnableIov $true
Finally, Figure 10 shows enabling SR-IOV on a VM's vNIC