Multi-Core NIC Queue Management via Logical Segmentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Multi-core systems face challenges in balancing network traffic distribution across cores due to lack of effective NIC queue management, leading to queue mismatching and uneven processing loads.

Innovation Solution

A method is introduced where packet engines on multiple cores store and manage data packets in logical transmit and receive queues, with an interface module directing packets to a common network interface card (NIC) for transmission or reception, using a flow distributor to hash tuples for core selection based on IP addresses and ports, ensuring even distribution of network traffic.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a Receive Side Scaler distributes packets to cores based on a predetermined function, then packet distribution is achieved, but queue mismatching occurs due to lack of NIC queue management for each core

Engineering Contradiction:
Improvepacket distribution capabilityVSAvoidqueue matching accuracy
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent divides the single NIC receive queue into multiple logical queues, with each logical queue assigned to a specific core. This segmentation allows each core to have dedicated queue management, eliminating queue mismatching while maintaining packet distribution capability across multiple cores.

Inventive Principle:
Principle #1Segmentation

2Productivity

If network traffic is distributed across multiple cores using functional parallelism or data parallelism, then processing capacity is increased, but distribution symmetry is poor due to not considering traffic amount

Engineering Contradiction:
Improveprocessing capacityVSAvoidtraffic distribution symmetry
Core Design Contradiction:
ProductivityVSStability of the object's composition

Solution Approach 1:

The patent implements dynamic traffic distribution by having the flow distributor continuously monitor and adjust packet routing based on current traffic conditions. The system dynamically selects which logical queue receives packets from the NIC, ensuring balanced load distribution across cores while adapting to changing traffic patterns in real-time.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If each core shares a common network interface card, then resource utilization is improved, but access to transmit and receive queues becomes problematic since cores are not associated with particular NIC queues

Engineering Contradiction:
Improveresource sharing capabilityVSAvoidqueue access management
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent introduces logical queues as intermediary structures between the physical NIC and individual cores. The flow distributor acts as a mediator that receives packets from the NIC's physical queue and distributes them to appropriate logical queues assigned to different cores, simplifying access management while maintaining resource sharing.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9112819B2Systems and methods for receive and transmission queue processing in a multi-core architecture
Publication Date: 2015.08.18 CITRIX SYSTEMS INC
  • US9112819B2 patent drawing
  • US9112819B2 patent drawing
  • US9112819B2 patent drawing

AI summary

Described herein is a method and system for directing outgoing data packets from packet engines to a transmit queue of a NIC in a multi-core system, and a method and system for directing incoming data packets from a receive queue of the NIC to the packet engines. Packet engines store outgoing traffic in logical transmit queues in the packet engines. An interface module obtains the outgoing traffic and stores it in a transmit queue of the NIC, after which the NIC transmits the traffic from the multi-core system over a network. The NIC receives incoming traffic and stores it in a NIC receive queue. The interface module obtains the incoming traffic and applies a hash to a tuple of each obtained data packet. The interface module then stores each data packet in the logical receive queue of a packet engine on the core identified by the result of the hash.