Bidirectional Receive Side Scaling Using Commutative Hashing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current receive side scaling technologies, such as MS® RSS, are limited in their ability to balance network load across multiple processors bidirectionally, as they assume traffic is terminated at the system where scaling is performed, and are cryptographically secure, preventing remote systems from predicting hash results, which hinders efficient processing of packets belonging to the same flow.

Innovation Solution

Implementing a commutative hash function that generates the same hash result when swapping source and destination network addresses and port numbers, allowing packets belonging to the same flow to be hashed to the same processor, thereby enabling bidirectional receive side scaling.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a cryptographically secure hash function is used in MS® RSS, then security is improved and hash results are unpredictable, but bidirectional receive side scaling cannot be achieved and packets of the same flow cannot be routed to the same processor

Engineering Contradiction:
ImprovesecurityVSAvoidbidirectional receive side scaling
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent changes the fundamental parameter of the hash function from cryptographically secure (one-way) to commutative (symmetric). This allows the hash function to produce identical results for both forward and reverse packet directions while maintaining security through the use of secret keys that are not transmitted over the network.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent introduces an intermediary secret key that is shared between communicating parties but not transmitted over the network. This key is used to generate session-specific hash functions that maintain security while enabling bidirectional scaling, acting as a mediator between the conflicting requirements of security and scalability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Device complexity

If traffic is assumed to be terminated at the system where scaling is performed, then implementation is simplified, but bidirectional packet handling cannot be achieved

Engineering Contradiction:
Improveimplementation complexityVSAvoidbidirectional packet handling
Core Design Contradiction:
Device complexityVSAdaptability or versatility

Solution Approach 1:

The patent makes the hash function universal by designing it to work for both forward and reverse packet directions. The commutative property ensures that the same hashing mechanism can handle traffic in either direction, eliminating the need for separate handling logic and enabling bidirectional scaling without significantly increasing implementation complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If packets of the same flow are hashed to different processors, then load balancing is achieved, but synchronization overhead increases and processing efficiency decreases

Engineering Contradiction:
Improveload balancingVSAvoidsynchronization overhead
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments network traffic handling by assigning different session hashes to different processor queues. This segmentation ensures that packets of the same flow (identified by the same session hash) are always routed to the same processor, eliminating synchronization overhead while still achieving load balancing across multiple processors through the distribution of different sessions.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8661160B2Bidirectional receive side scaling
Publication Date: 2014.02.25 INTEL CORP
  • US8661160B2 patent drawing
  • US8661160B2 patent drawing
  • US8661160B2 patent drawing

AI summary

In an embodiment, a method is provided. The method of this embodiment provides in response to receiving a packet, determining a packet tuple; generating a hash result by performing a commutative hash function on the packet tuple; and processing the packet on one of a plurality of processors based, at least in part, on the hash result.