VM Networking Queue Buffer Recovery via Hypervisor Indexing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In virtual machine environments, the existing methods for handling networking backend disconnects are inefficient, particularly in multi-core systems, as they rely on serial processing of buffers and lack effective mechanisms to determine which buffers have been completed or not, leading to potential data loss and scalability issues.

Innovation Solution

A system and method where a hypervisor maintains an index for each networking queue, incrementing it after each buffer is processed, and includes a recovery module that flushes buffers by either storing dummy packets or discarding them based on whether they correspond to receive or transmit requests, allowing for parallel processing and efficient recovery from networking backend disconnects.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If serial processing of buffers is used to handle networking backend disconnects, then system simplicity is maintained, but productivity and scalability deteriorate

Engineering Contradiction:
Improvesystem simplicityVSAvoidbuffer processing efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent divides the buffer processing system into multiple independent processing channels, each capable of handling buffers in parallel. The networking queue is segmented into multiple sub-queues, and multiple backend processors can simultaneously process different segments, transforming a single-threaded serial processing model into a multi-threaded parallel processing model while maintaining manageable complexity through modular design

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an additional dimension of parallelism by utilizing multiple cores or processing threads simultaneously. Instead of processing buffers sequentially in a single dimension of time, the system distributes buffer processing across multiple spatial dimensions (different cores/threads), enabling concurrent execution of multiple buffer processing operations without significantly increasing system complexity

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Device complexity

If no buffer tracking mechanism is implemented, then device complexity is reduced, but loss of information increases due to inability to determine completed buffers

Engineering Contradiction:
Improvetracking mechanism complexityVSAvoidbuffer completion status
Core Design Contradiction:
Device complexityVSLoss of information

Solution Approach 1:

The patent implements a feedback mechanism where the hypervisor continuously monitors the processing status of buffers in the networking queue. Completion status information is fed back to the hypervisor, which uses this information to manage buffer resources efficiently. This feedback loop enables the system to track buffer completion without requiring complex centralized control, as each backend processor reports its status independently

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

Each backend processor maintains its own buffer tracking information and completion status, making the tracking mechanism distributed rather than centralized. This self-service approach allows individual processors to manage their own buffer states without requiring constant coordination with a central controller, reducing overall system complexity while ensuring accurate tracking of buffer completion status

Inventive Principle:
Principle #25Self-service

3Loss of time

If buffers are not flushed after backend disconnect, then loss of time is reduced, but loss of information increases due to potential data loss

Engineering Contradiction:
Improverecovery timeVSAvoiddata loss
Core Design Contradiction:
Loss of timeVSLoss of information

Solution Approach 1:

The patent implements a buffer flushing mechanism that is triggered when a backend disconnect is detected. The hypervisor proactively flushes (clears) buffers in the networking queue to prevent data loss before the system attempts to recover. This preliminary action of clearing buffers ensures that no stale or corrupted data remains in the queue after a disconnect, while the flushing operation is designed to be efficient and minimize recovery time

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent prepares the buffer management system in advance to handle disconnect scenarios by implementing a flush mechanism that can be quickly activated. The system maintains the capability to clear buffers rapidly when needed, providing a cushion against potential data loss. This beforehand preparation ensures that when a disconnect occurs, the system can immediately protect against data loss without requiring complex real-time analysis of buffer contents

Inventive Principle:
Principle #11Beforehand cushioning (Prior cushioning)

Data Source

PatentUS10735286B2Recovery from a networking backend disconnect
Publication Date: 2020.08.04 RED HAT ISRAEL
  • US10735286B2 patent drawing
  • US10735286B2 patent drawing
  • US10735286B2 patent drawing

AI summary

Methods, systems, and computer program products are included for processing one or more buffers in a networking queue. An example method includes receiving one or more transmit requests or receive requests from a guest running on a virtual machine. The method also includes detecting that a networking backend has stopped processing buffers from a networking queue, each queued buffer corresponding to a transmit request or receive request. The method further includes in response to detecting that the networking backend has stopped processing buffers from the networking queue, flushing one or more buffers stored in the networking queue. A buffer corresponding to a receive request may be flushed by storing a set of dummy packets into the buffer. In contrast, a buffer corresponding to a transmit request may be flushed by discarding the buffer.