1. Why Virtualization Needs SR-IOV

In traditional virtualization architecture, every network packet from a VM traverses four software layers: Guest OS → virtio virtual NIC → Hypervisor vSwitch → Physical NIC. The vSwitch layer alone consumes 20-30% of host CPU and adds 30-50μs latency.

When VMs run NFV, financial trading, database replication, or AI inference services — anything latency-sensitive — this software overhead becomes the performance ceiling.

2. Core Principles of SR-IOV

PF (Physical Function) — The Complete NIC

The Physical Function is the "full identity" of the NIC, holding all configuration privileges, DMA engines, interrupt resources, and the SR-IOV management interface. PF is managed by the Host OS or Hypervisor, responsible for enabling/disabling SR-IOV, creating/destroying VFs, and pushing MAC/VLAN configuration.

VF (Virtual Function) — NIC Slice

The Virtual Function is a "lightweight clone" derived from the PF. Each EZMAX NETI710:

  • NETI710-2CP (Intel X710-BM2, dual-port): 64 VF per port, 128 VF per card;
  • NETI710-4CP (Intel XL710-BM1, quad-port): 64 VF per port, 256 VF per card.

Each VF owns an independent PCIe config space, DMA queue, and MAC address. Once a VM takes over the VF via PCI Passthrough, network traffic completely bypasses the Hypervisor software stack — the NIC hardware shuttles data directly between VM memory and physical link.

DMA Passthrough Acceleration

The acceleration comes from three mechanisms:

  1. IOMMU memory mapping: Intel VT-d / AMD-Vi hardware maps GPA (Guest Physical Address) to IOVA the NIC can access; the DMA engine reads VM memory directly;
  2. MSI-X interrupt direct delivery: NIC interrupts fire straight to the VM's vCPU, no Hypervisor relay;
  3. Hardware L2 switching: VF-to-VF traffic goes through the NIC's embedded switch (VEB), never touching the physical link or vSwitch.

3. Enabling SR-IOV on Linux

3.1 BIOS and Kernel Prerequisites

# Step 1: Enable Intel VT-d or AMD-Vi (IOMMU) in BIOS
# Step 2: Modify GRUB kernel parameters
sudo vim /etc/default/grub
# Find GRUB_CMDLINE_LINUX and append:
# intel_iommu=on iommu=pt
sudo update-grub && sudo reboot

3.2 Load Driver and Enable VFs

# Check NIC model and confirm SR-IOV support
lspci | grep Ethernet
ethtool -i eth0
# Enable 8 VFs (NETI710-2CP supports up to 64 per port)
echo 8 | sudo tee /sys/class/net/eth0/device/sriov_numvfs
# Verify VF creation
lspci | grep "Virtual Function"
ip link show eth0

3.3 Configure VF MAC/VLAN (Recommended)

sudo ip link set eth0 vf 0 mac 52:54:00:11:22:33
sudo ip link set eth0 vf 0 vlan 100
sudo ip link set eth0 vf 0 spoofchk on
sudo ip link set eth0 vf 0 trust off

3.4 Passthrough VF to VM

# virsh XML snippet
<interface type="hostdev" managed="yes">
<source>
<address type="pci" domain="0x0000" bus="0x03" slot="0x02" function="0x0"/>
</source>
</interface>
# Or QEMU command line
-device vfio-pci,host=03:02.0

4. Enabling SR-IOV on VMware ESXi

  1. vCenter → Host → Configure → Hardware → PCI Devices, find the EZMAX NIC, click Enable SR-IOV;
  2. Set max VF count (32 recommended for NETI710-4CP), reboot host;
  3. VM Edit Settings → Add PCI Device → Select target VF;
  4. VM memory must be reserved (Reserve all guest memory), otherwise the VM will not start.

5. Performance Benchmarks

Test environment: Intel Xeon Gold 6338 + 128GB DDR4 + EZMAX NETI710-2CP, back-to-back same model, 10G direct link.

Metricvirtio (software)SR-IOV (passthrough)Improvement
iperf3 TCP throughput6.8 Gbps9.85 Gbps+45%
UDP small-packet PPS (64B)1.2 Mpps14.5 Mpps+1108%
Ping avg latency85 μs18 μs-79%
VM-side CPU usage65%15%-77%

6. Common Pitfalls and Tuning Tips

  • Pitfall 1: VM live migration not supported — SR-IOV passthrough VFs cannot live-migrate; use bond + failover instead;
  • Pitfall 2: Not enough VFs — a single quad-port card provides 256 VFs; hosts running 300+ VMs need two cards;
  • Pitfall 3: Broadcast storm — VEB internal switching does not run STP; enable spoofchk between VFs in the same VLAN;
  • Tuning: Pin VFs to NUMA-aligned vCPUs for another 10-15% performance boost.

Summary: SR-IOV is now the entry bar for enterprise virtualization platforms. EZMAX NETI710, powered by Intel X710/XL710 chips, offers 128 VFs dual-port and 256 VFs quad-port — enough for virtually every virtualization scenario. Combined with IOMMU + MSI-X hardware paths, VM network performance approaches bare metal.