Dynamic CPU Core Load Balancing for IP Forwarding Traffic
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current network communication systems face inefficiencies in load balancing among CPU cores due to IP forwarding traffic overload on some cores while others remain underutilized, primarily because manual configuration is required and existing methods fail to effectively distribute processing loads across multiple CPUs, leading to compliance issues and poor utilization of receive-side scaling.
Innovation Solution
A method is implemented to identify IP forwarding traffic with minimal overhead and ensure that subsequent outgoing traffic is processed on a different CPU, using techniques such as tracking receive buffers by their virtual addresses, inserting unique signatures, and utilizing thread handles to select idle cores for processing, thereby maximizing system utilization and throughput.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If manual configuration is used to bind specific CPUs for certain tasks, then load distribution can be controlled, but system complexity increases and adaptability decreases
Solution Approach 1:
The system automatically identifies IP forwarding traffic and selects appropriate CPU cores without manual configuration. The network driver monitors traffic patterns and dynamically assigns packets to cores based on current load conditions, eliminating the need for performance-tuning scripts and manual binding configurations.
Solution Approach 2:
The patent implements dynamic CPU selection where the system adapts core assignment based on real-time traffic conditions. Instead of static manual binding, the network driver continuously evaluates which cores are available and assigns IP forwarding traffic to the most appropriate core, allowing the system to respond to changing workload conditions.
2Productivity
If IP forwarding traffic is concentrated in one flow, then processing simplicity increases, but CPU core utilization becomes unbalanced
Solution Approach 1:
The patent applies different processing strategies to different types of traffic. Regular traffic continues to use simple hash-based routing, while IP forwarding traffic is identified and routed through a separate path using thread handles and core selection logic, allowing each traffic type to be processed optimally without affecting the other.
Solution Approach 2:
The network driver acts as an intermediary that identifies IP forwarding traffic and redirects it to appropriate CPU cores. By inserting unique signatures in receive buffers and checking thread handles, the driver mediates between the simple hash-based routing and the need for balanced core utilization, routing forwarding traffic through available cores while maintaining simplicity for other traffic.
3Reliability
If the same CPU processes both incoming and outgoing traffic, then compliance with traffic processing requirements is maintained, but system throughput decreases
Solution Approach 1:
The patent segments the traffic processing function by separating incoming and outgoing traffic handling onto different CPU cores. The network driver identifies when a core is handling incoming traffic and redirects the corresponding outgoing traffic to a different core, effectively segmenting the workload to prevent any single core from becoming a bottleneck while maintaining the ability to process both directions of traffic.
Data Source
AI summary
A host connected to at least one data network has a processor having a plurality of cores, and a memory. A network interface controller is coupled to the host, and configured to transmit and receive data packets via multiple distinct physical ports. The host and the network interface controller are cooperative upon receiving a packet for storing the packet in a receive buffer of the memory, deciding in the host, responsively to a destination identifier in the packet, to forward the packet from the host to the at least one data network via another one of the physical ports, and selecting one of the cores to perform a send operation.


