Dynamic RSS Engine Provisioning for Balanced NIC Traffic Queues
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing network interface card (NIC) implementations using Receive Side Scaling (RSS) face inefficiencies due to sharing a single RSS pool among different traffic types, leading to queue-resource constraints and imbalanced load distribution, particularly during asynchronous or high-throughput traffic scenarios, which can impede data flow handling and throughput.
Innovation Solution
Implement a dynamic provisioning of multiple RSS engines by dynamically assigning and reassigning traffic flows to separate hardware queues based on load thresholds and availability, using mapping and indirection tables to rebalance loads across RSS pools.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If a single RSS pool is shared among all traffic types, then device complexity is reduced and resource utilization is simplified, but queue-resource constraints occur and load distribution becomes imbalanced during asynchronous or high-throughput traffic scenarios
Solution Approach 1:
The patent segments the single RSS pool into multiple dedicated RSS pools, each serving specific traffic types (e.g., vMotion traffic, vSAN traffic, VTEP traffic). This segmentation prevents queue-resource constraints by ensuring each traffic type has dedicated hardware queues, thereby resolving the contradiction between simplified configuration and handling efficiency.
2Productivity
If multiple RSS pools are created for different traffic types, then data flow handling efficiency and isolation are improved, but device complexity and resource management overhead increase
Solution Approach 1:
The Netqueue layer automatically monitors queue loads and dynamically reassigns traffic flows between RSS pools based on current load conditions. This self-service mechanism eliminates the need for manual configuration and management of multiple RSS pools, thereby resolving the contradiction between handling efficiency and configuration complexity.
3Ease of operation
If traffic flows are statically assigned to RSS queues, then configuration simplicity is maintained, but load balancing capability is reduced when traffic patterns change
Solution Approach 1:
The patent implements dynamic load-based reassignment where the Netqueue layer continuously monitors queue loads and automatically reassigns traffic flows from overloaded queues to underutilized queues. This dynamic adaptation resolves the contradiction between configuration simplicity and load balancing capability, as the system automatically adjusts to changing traffic patterns without manual intervention.
4Use of energy by moving object
If hardware queues are shared across different traffic types, then resource utilization is maximized, but service quality and isolation between traffic types deteriorate
Solution Approach 1:
The patent segments hardware queues into dedicated pools for different traffic types, ensuring service quality and isolation. Meanwhile, the dynamic load-based reassignment mechanism ensures efficient utilization by redistributing flows when queues become underutilized, thereby resolving the contradiction between resource utilization and service quality.
Data Source
AI summary
An approach for a dynamic provisioning of multiple RSS engines is provided. In an embodiment, a method comprises monitoring a CPU usage of hardware queues implemented in a plurality of RSS pools, and determining whether a CPU usage of any hardware queue, implemented in a particular RSS pool of the plurality of RSS pools, has increased above a threshold value. In response to determining that a CPU usage of a particular hardware queue, implemented in the particular RSS pool, has increased above the threshold value, it is determined whether the particular RSS pool includes an unused hardware queue (a queue with light CPU usage). If such an unused hardware queue is presented, then an indirection table that is associated with the particular RSS pool is modified to remap one or more data flows from the particular hardware queue to the unused hardware queue.


