Spelled out "Single-Root I/O Virtualization", this is a mechanism to support efficient and safe access to "slices" of a PCIe device by different clients. The clients are typically different Virtual Machines
Terminology: PFs and VFs
SR-IOV distinguishes between Physical Function
(PF) and Virtual Function
(VF). The PF represents an actual PCIe device. It can be subdivided into multiple VFs. Clients (such as VMs) then get access to individual VFs. They can access their "slice" of the adapter (PF) both efficiently (e.g. using DMA
) and safely, i.e. without interfering with the other VFs. Safety for DMA
is ensured by the IOMMU (I/O Memory Management Unit).
SR-IOV in Networking
Many modern server Gigabit Ethernet and 10GE adapters implement SR-IOV. An interesting implementation detail: Because different VMs can send each other Ethernet frames, these adapters have to implement an internal Ethernet switch.