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:
- 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;
- MSI-X interrupt direct delivery: NIC interrupts fire straight to the VM's vCPU, no Hypervisor relay;
- 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 reboot3.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 eth03.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 off3.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.04. Enabling SR-IOV on VMware ESXi
- vCenter → Host → Configure → Hardware → PCI Devices, find the EZMAX NIC, click Enable SR-IOV;
- Set max VF count (32 recommended for NETI710-4CP), reboot host;
- VM Edit Settings → Add PCI Device → Select target VF;
- 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.
| Metric | virtio (software) | SR-IOV (passthrough) | Improvement |
|---|---|---|---|
| iperf3 TCP throughput | 6.8 Gbps | 9.85 Gbps | +45% |
| UDP small-packet PPS (64B) | 1.2 Mpps | 14.5 Mpps | +1108% |
| Ping avg latency | 85 μs | 18 μs | -79% |
| VM-side CPU usage | 65% | 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.