Packet Header Hashing for Uniform Distribution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The CRC32 hash function fails to produce high-quality hashes for short inputs, leading to non-uniform distribution in network environments, which can result in overloading or underloading of network ports, particularly when used for packet distribution across multiple output ports.

Innovation Solution

A physical forwarding element processes packet headers by dividing them into chunks, hashing these chunks in parallel using multiple processing units, and then combining the hashes, with optional finishing operations such as accumulating length, multiplying by a prime number, and performing logical exclusive disjunction to enhance entropy and distribution, thereby improving the quality of the resulting hash.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If CRC32 hash function is used for packet distribution, then computation speed is improved, but hash quality and distribution uniformity deteriorate for short inputs

Engineering Contradiction:
Improvehash computation speedVSAvoidhash distribution uniformity
Core Design Contradiction:
SpeedVSManufacturing precision

Solution Approach 1:

The patent divides the packet header into multiple chunks (e.g., first chunk, second chunk, third chunk) and hashes each chunk separately using multiple processing units. This segmentation allows parallel processing while ensuring that even short inputs are processed through multiple hashing stages, improving both speed and distribution uniformity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent combines multiple hash values (first hash, second hash, third hash) into a final hash value through merging operations. This combining process ensures that the final hash reflects the cumulative effect of multiple hashing operations, improving distribution uniformity while maintaining computational efficiency through parallel processing.

Inventive Principle:
Principle #5Merging (Combining)

2Device complexity

If single processing unit hashes entire header, then device complexity is reduced, but productivity and resource utilization deteriorate

Engineering Contradiction:
Improveprocessing structure complexityVSAvoidpacket processing throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent segments the packet header into multiple chunks that can be processed simultaneously by different processing units. This segmentation enables parallel processing, increasing productivity while keeping each individual processing unit simple and the overall structure manageable through modular design.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a temporal dimension to processing by using multiple processing units to work on different chunks simultaneously. This dimensional approach to processing increases throughput without significantly increasing the complexity of individual processing units, as each unit performs simple hashing operations on its assigned chunk.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS9385954B2Hashing techniques for use in a network environment
Publication Date: 2016.07.05 VMWARE INC
  • US9385954B2 patent drawing
  • US9385954B2 patent drawing
  • US9385954B2 patent drawing

AI summary

Some embodiments provide a physical forwarding element that hashes portions of packet headers using several novel hashing techniques. The techniques include a novel set of finishing operations that improve the quality of resulting hashes by increasing their distribution and improving their apparent-randomness. In addition, the finishing operations virtually guarantee that different length inputs will hash to different results, even when padded to be the same initial values. The techniques also include efficient handling of remainder sections when distributing sections of a hash input across multiple processing units. The remainders are hashed into various previously generated hashes based on how many remainders result. These hashing techniques are useful for many network applications.