Implicit Dynamic Receive Queue Steering for Virtualized Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing virtualized computer systems lack dynamic and efficient packet steering mechanisms, often relying on static approaches or adding overhead through device drivers.
Innovation Solution
Implementing a hypervisor with a packet steering engine that maintains a queue-steering table to dynamically associate incoming flows with receive queues, allowing for intelligent packet steering based on workload and using transmit queues to implicitly identify receive queues.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If static packet steering approaches are used, then device complexity is reduced, but productivity and performance deteriorate due to inability to dynamically adapt to workload changes
Solution Approach 1:
The system uses transmit queues to implicitly identify receive queues through a feedback mechanism. When a VM transmits a packet, the hypervisor extracts the flow identifier and uses it to determine the corresponding receive queue, eliminating the need for complex explicit mapping tables. The system serves itself by using outgoing traffic patterns to inform incoming traffic routing decisions
Solution Approach 2:
The queue-steering table serves multiple functions: it stores flow-to-queue mappings for packet steering, and simultaneously uses transmit queue identifiers to implicitly identify receive queues. This multi-functionality reduces the need for separate data structures and complex steering logic, improving productivity without proportionally increasing device complexity
2Adaptability or versatility
If device drivers are added to enable dynamic packet steering, then adaptability improves, but device complexity and overhead increase
Solution Approach 1:
The patent extracts the packet steering functionality from traditional device drivers and implements it directly in the hypervisor. By removing the need for complex device driver implementations and relying instead on the implicit identification mechanism through transmit queues, the system achieves high adaptability while reducing overall device complexity and overhead
Solution Approach 2:
The queue-steering table acts as an intermediary data structure that enables dynamic packet steering without requiring complex device driver logic. It provides a simple lookup mechanism that maps flow identifiers to receive queues, achieving adaptability through a lightweight intermediate structure rather than through complex driver software
3Productivity
If multiple receive queues are used for parallel execution, then productivity improves, but device complexity increases due to need for dynamic steering mechanisms
Solution Approach 1:
The system enables parallel execution through multiple receive queues while reducing management complexity by using transmit queues to self-identify the appropriate receive queues. The implicit identification mechanism allows the system to automatically route packets to the correct queue without requiring complex steering logic, maintaining productivity while reducing the operational complexity of managing multiple queues
Data Source
AI summary
A system and method are disclosed for steering incoming packets to receive queues of virtual machines (VMs). In one embodiment, a hypervisor executed by a processing device receives an incoming packet for a VM, where the incoming packet identifies an incoming flow to the VM. The hypervisor determines that a data store has no entries for the incoming flow and indicates to the VM that the data store has no entries for the incoming flow. The hypervisor receives an outgoing packet from the VM identifying a first receive queue and obtains from the outgoing packet an incoming flow identifier that identifies the incoming flow The hypervisor stores in the data store an entry associating the incoming flow identifier with the first receive queue. The hypervisor receives a second incoming packet for the VM specifying the incoming flow identifier, and the second incoming packet is inserted into the first receive queue in view of the data store.


