Dynamic Receive Queue Assignment in Virtualized Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing virtualized computer systems face inefficiencies in dynamically and transparently steering incoming packets to the appropriate receive queues of virtual machines, often requiring static configurations or additional overhead from device drivers.

Innovation Solution

A system and method where a guest operating system, modified through paravirtualization, provides the hypervisor with the identification of receive queues for outgoing packets, allowing the hypervisor to dynamically and implicitly associate flow identifiers with receive queues, enabling efficient packet steering without performance penalties.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If static receive queue configuration is used, then device driver overhead is reduced, but packet steering flexibility and adaptability deteriorate

Engineering Contradiction:
Improvepacket steering efficiencyVSAvoidreceive queue assignment complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements dynamic receive queue assignment by maintaining a mapping table that associates flow identifiers with receive queue indices. The hypervisor dynamically updates this mapping table based on outgoing packet flow identifiers, enabling flexible and adaptive packet steering without requiring static configurations or additional device driver involvement.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The guest operating system performs self-service by providing flow identifier information to the hypervisor automatically when transmitting outgoing packets. The hypervisor uses this information to implicitly determine the appropriate receive queue, eliminating the need for explicit receive queue assignment commands from the guest OS and reducing overall system complexity.

Inventive Principle:
Principle #25Self-service

2Adaptability or versatility

If dynamic packet steering is implemented, then packet steering flexibility improves, but system overhead and complexity increase

Engineering Contradiction:
Improvepacket steering flexibilityVSAvoidhypervisor management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a mapping table as an intermediary data structure that simplifies the hypervisor's packet steering decisions. Instead of complex real-time calculations or multiple lookup operations, the hypervisor simply queries the mapping table using the flow identifier, achieving fast and flexible packet steering with minimal processing overhead.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent changes the parameter used for packet steering from static receive queue indices to dynamic flow identifiers. By using flow identifiers as keys in the mapping table, the system can adaptively steer packets based on their characteristics while maintaining simple and efficient hypervisor management through straightforward table lookups.

Inventive Principle:
Principle #35Parameter changes

3Measurement precision

If explicit receive queue assignment is required, then packet steering precision improves, but guest OS performance overhead increases

Engineering Contradiction:
Improvereceive queue selection accuracyVSAvoidguest OS processing speed
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The guest operating system performs self-service by automatically providing flow identifier information to the hypervisor during the normal packet transmission process. This eliminates the need for separate receive queue assignment operations, maintaining precise packet steering while avoiding additional performance overhead in the guest OS.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The hypervisor performs preliminary action by pre-establishing the mapping table structure and preparing to receive flow identifier information from the guest OS. When the guest OS transmits outgoing packets, the hypervisor is already ready to immediately populate the mapping table and perform packet steering, eliminating any processing delays.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9094351B2Implicit and dynamic receive queue assignment in virtualized systems
Publication Date: 2015.07.28 RED HAT ISRAEL
  • US9094351B2 patent drawing
  • US9094351B2 patent drawing
  • US9094351B2 patent drawing

AI summary

A system and method are disclosed for assigning incoming packets to receive queues of a virtual machine. In accordance with one embodiment, a hypervisor that is executed by a computer system receives a request from a virtual machine to transmit an outgoing packet to a destination, and an identification of a receive queue of a plurality of receive queues of the virtual machine, where the identification of the receive queue is provided to the hypervisor by the virtual machine along with the request. The hypervisor obtains a flow identifier from a header of the outgoing packet that identifies a flow associated with the outgoing packet, and the outgoing packet is transmitted to the destination. The computer system then receives an incoming packet whose header specifies the flow identifier, and the hypervisor inserts the incoming packet into the receive queue using the identification of the receive queue.