Understanding SR-IOV Usage
You can enable communication between a Linux-based virtualized device and a Network Functions Virtualization (NFV) module using suitable hardware and SR-IOV.
When a physical device is virtualized, both the physical NIC interfaces and external physical switches as well as the virtual NIC interfaces and internal virtual switches coexist. When the isolated virtual machines (VMs) or containers in the device, each with their own memory and disk space and CPU cycles, attempt to communicate with each other, multiple ports, MAC addresses, and IP addresses in use pose a challenge.
SR-IOV extends the concept of virtualized functions down to the physical NIC. The single physical card is divided into partitions per physical NIC port that correspond to the virtual functions running at the higher layers. Communication between these virtual functions are handled the same way that communication between devices with individual NICs are usually handled with a bridge. SR-IOV includes a set of standard methods for creating, deleting, listing, and querying the SR-IOV NIC switch, as well as a set of standard parameters that you can set.
The single-root of SR-IOV refers to only one primary piece of the NIC that controls all operations. An SR-IOV-enabled NIC is a standard Ethernet port that provides the same physical bit-by-bit function of any network card.
The SR-IOV provides several virtual functions, which are accomplished by using simple queues to handle input and output tasks. Each VNF running on the device is mapped to one of the NIC partitions so that the VNFs themselves have direct access to NIC hardware resources. The NIC has a simple Layer 2 sorter function, which classifies frames into traffic queues. Packets are moved directly to and from the network virtual function to the VM’s memory using direct memory access (DMA), bypassing the hypervisor completely. The role of the NIC in the SR-IOV operation is shown in Figure 1.
The hypervisor is involved in assigning VNFs and managing the physical card, but not in the transfer of the data inside the packets. VNF-to-VNF communication is performed by Virtual NIC 1, Virtual NIC 2, and Virtual NIC N. The NIC also keeps track of all the virtual functions and the sorter to move traffic among the VNFs and external device ports.
SR-IOV support depends on the hardware platform, specifically the NIC hardware, and the software of the VNFs or containers to use DMA for data transfer.