Multi-Core Load Balancing Subslotting for Traffic Skew

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Least connection load balancing methods can lead to uneven distribution of traffic across packet engines in multi-core devices, resulting in skew and inefficiencies due to the ordering of services and averaging processes.

Innovation Solution

Implementing a subslotting scheme where services are assigned to subslots across multiple packet engines, with each slot tracking active connections, to distribute traffic evenly and mitigate skew by updating service allocations based on connection changes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If least connection load balancing is implemented without subslotting, then the load balancing mechanism is simple to implement, but traffic distribution becomes uneven across packet engines

Engineering Contradiction:
Improvesimplicity of load balancing implementationVSAvoidtraffic distribution efficiency
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent divides each slot into multiple subslots (e.g., 4 subslots per slot) and assigns services to specific subslots based on the packet engine modulo. This segmentation allows traffic to be distributed across multiple packet engines within a slot, preventing concentration on a single engine while maintaining the simplicity of the slot-based structure.

Inventive Principle:
Principle #1Segmentation

2Ease of manufacture

If services are assigned to packet engines based on ordering without subslotting, then the assignment process is straightforward, but distribution skew occurs favoring certain packet engines

Engineering Contradiction:
Improvesimplicity of service assignmentVSAvoiduniformity of traffic distribution
Core Design Contradiction:
Ease of manufactureVSManufacturing precision

Solution Approach 1:

The patent applies local quality by making different subslots within the same slot have different characteristics - each subslot is associated with a specific packet engine (PE0, PE1, PE2, PE3). Services are assigned to specific subslots based on their packet engine modulo, ensuring that each packet engine receives an appropriate portion of the traffic while maintaining overall uniformity.

Inventive Principle:
Principle #3Local quality

3Device complexity

If averaging and ordering processes are used in stats sync, then synchronization is simplified, but skew is introduced in the load balancing statistics

Engineering Contradiction:
Improvecomplexity of stats sync processVSAvoidaccuracy of load balancing stats
Core Design Contradiction:
Device complexityVSMeasurement precision

Solution Approach 1:

The patent segments the statistics collection by subslot, allowing each subslot to maintain its own connection count independently. This segmentation prevents the averaging process from mixing statistics from different packet engines, thereby eliminating the skew that would otherwise be introduced by naive averaging while keeping the sync process manageable.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9088501B2Systems and methods for least connection load balancing by multi-core device
Publication Date: 2015.07.21 CITRIX SYSTEMS INC
  • US9088501B2 patent drawing
  • US9088501B2 patent drawing
  • US9088501B2 patent drawing

AI summary

The present invention is directed towards systems and methods for load balancing by a multi-core device intermediary between clients and services. The device may establish sub-slots in each slot of the device's packet engines. The number of sub-slots may correspond to the packet engine count. Each slot may track a different number of active connections allocated to a service. The device may assign a first and second service to each packet engine in a first slot corresponding to no active connections. These services may be assigned to different sub-slots in adjacent packet engines. The device may update, responsive to allocation of a first active connection to the first service, the first service from a sub-slot in the first slot of a first packet engine, to a corresponding sub-slot in a second slot. The second slot may correspond to one active connection allocated to the first service.