Hypervisor Packet Processing Offload with Dual Execution Points for VMs
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Packet processing programs running in virtual machines (VMs) fail to achieve high performance due to the inefficiency of executing at the VM's virtual NIC driver, which negates the benefits of in-driver packet processing, and existing workarounds like PCI passthrough reduce the advantages of virtualization.
Innovation Solution
Offload packet processing programs from guest vNIC drivers to the hypervisor, implementing dual execution points in the hypervisor, and using hardware offload APIs to manage and execute these programs efficiently, ensuring they are run at the most appropriate points within the host system.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If packet processing programs are executed at the VM's virtual NIC driver, then the programs can be run in virtualized environments, but the performance benefit of in-driver packet processing is lost due to packets traversing the host networking stack
Solution Approach 1:
The patent introduces a hypervisor-level packet processing execution point as an intermediary between the physical NIC driver and the virtual NIC driver. This intermediary enables packet processing to occur at the hypervisor layer before packets are passed to the VM, achieving performance comparable to bare-metal execution while maintaining virtualization benefits. The hypervisor acts as a mediator that allows PDPP to function in virtualized environments without requiring PCI passthrough.
Solution Approach 2:
The patent adds a new dimension to packet processing by introducing dual execution points: one at the physical NIC driver level and another at the hypervisor level. This dimensional addition allows the system to select the most appropriate execution point based on the virtualization context, enabling PDPP to achieve high performance in both bare-metal and virtualized environments.
2Productivity
If PCI passthrough is used to assign the physical NIC to the VM, then packet processing can execute at the physical driver level, but the VM is tied to the host system and cannot be migrated
Solution Approach 1:
The hypervisor-level execution point serves as an intermediary that eliminates the need for PCI passthrough. By executing packet processing programs at the hypervisor layer, the system achieves physical-driver-level performance without tying the VM to specific host hardware, thereby enabling VM migration while maintaining high packet processing performance.
Solution Approach 2:
The patent creates a functional copy of the packet processing execution capability at the hypervisor level, mirroring the bare-metal execution model. This copying allows VMs to achieve the same packet processing performance as bare-metal systems without requiring direct access to physical NIC resources, thus enabling migration while preserving performance characteristics.
3Adaptability or versatility
If multiple VMs share the physical NIC through virtualization, then resource utilization improves, but packet processing performance degrades due to host networking stack traversal
Solution Approach 1:
The patent segments the packet processing function into separate execution points at the hypervisor level for each VM. This segmentation allows each VM to have its own dedicated packet processing execution context, enabling multiple VMs to share the physical NIC while maintaining high packet processing performance without host networking stack overhead for each VM's packets.
Solution Approach 2:
The hypervisor-level execution point acts as an intermediary that handles packet processing for multiple VMs before packets are passed to the virtual NIC drivers. This intermediary approach enables efficient resource sharing among multiple VMs while avoiding the performance degradation that would occur if each VM's packets traversed the host networking stack.
Data Source
AI summary
In one set of embodiments, a hypervisor of a host system can receive a packet processing program from a virtual network interface controller (NIC) driver of a virtual machine (VM) running on the hypervisor. The hypervisor can then attach the packet processing program to a first execution point in a physical NIC driver of the hypervisor and to a second execution point in a virtual NIC backend of the hypervisor, where the virtual NIC backend corresponds to a virtual NIC of the VM that originated the packet processing program.


