Hash Range Lookup Command for Network Switching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional network switching appliances face inefficiencies in packet processing due to the slow lookup operations in hash tables, particularly when handling millions of flows at high data rates, as multiple flow keys are converted into the same hash value, leading to excessive searches in hash tables.

Innovation Solution

The Island-Based Network Flow Processor (IB-NFP) integrated circuit employs a novel hash range lookup command that allows for a selective search of hash buckets, using a microengine to send a hash range lookup command across a command bus to a lookup engine, which examines a limited number of hash buckets to find a matching flow key, thereby enhancing packet processing speeds.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If a conventional hash table lookup is used to determine flow routing, then the lookup operation can be performed, but the processing speed is slow due to excessive searches in hash buckets

Engineering Contradiction:
Improvepacket processing speedVSAvoidlookup operation time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The hash table is segmented into multiple hash buckets, and the lookup operation is divided into examining only a selective range of these buckets rather than searching the entire table. This segmentation allows the system to divide the search space and reduce the number of comparisons needed, directly improving lookup speed and reducing processing time.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Instead of performing a complete search of all hash buckets, the invention applies partial action by examining only a limited range of hash buckets (e.g., the hash bucket corresponding to the hash value and adjacent buckets). This partial search is sufficient to find the flow key in most cases while significantly reducing the time required compared to a full table search.

Inventive Principle:
Principle #16Partial or excessive action

2Device complexity

If multiple flow keys are converted into the same hash value, then hash table indexing is simplified, but the number of searches required in hash buckets increases

Engineering Contradiction:
Improvehash table indexing complexityVSAvoidpacket processing throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The hash bucket array is segmented into multiple discrete buckets that can be independently addressed. When hash collisions occur (multiple flow keys mapping to the same hash value), the system segments the search into examining only the relevant hash bucket and a limited range of adjacent buckets, rather than searching the entire hash table. This maintains simple indexing while improving productivity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The invention applies local quality by making different parts of the hash table (different hash buckets) serve different purposes. Each hash bucket is optimized for storing flow keys with specific hash values, and the lookup process focuses locally on the relevant bucket range rather than uniformly searching the entire table. This local optimization reduces collision resolution time and improves overall throughput.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS9866480B1Hash range lookup command
Publication Date: 2018.01.09 NETRONOME SYSTEMS INC
  • US9866480B1 patent drawing
  • US9866480B1 patent drawing
  • US9866480B1 patent drawing

AI summary

A novel hash range lookup command is disclosed. In an exemplary embodiment, a method includes (a) providing access to a hash table that includes hash buckets having hash entry fields; (b) receiving a novel hash lookup command; (c) using the hash lookup command to determine hash command parameters, a hashed index value, and a flow key value; (d) using the hash command parameters and the hashed index value to generate hash values (addresses) to access entry fields in a selectable number of hash buckets; (e) comparing bits of the entry value in the entry field to bits of the flow key value; (f) repeating (d) through (e) until a match is determined or until the selectable number of hash buckets and entries have been accessed; and (g) returning either an address of the entry field containing the match or a result associated with the entry field containing the match.