Flow Cache Mechanism for Network Device Packet Lookup Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The existing methods for packet flow processing in computer networks, particularly those using Bloom filters and hash tables, face bottlenecks in throughput due to 'hot banking' issues when multiple packet flows share the same memory bank, leading to increased clock cycles and hash table lookups, which can limit network device performance.

Innovation Solution

Implementing a flow cache that selectively stores information about packet flows based on configurable parameters such as clock cycles and hash table lookups, allowing for programmatic control to identify and cache packet flows most likely to impact performance, thereby reducing cache size and hardware costs while improving throughput.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If a Bloom filter is implemented in hardware with multiple memory banks to perform parallel lookups, then the speed of identifying filter terms is improved, but when a large number of search keys require reads from the same memory bank, the queue becomes full and forces the scheduler to stall, limiting overall throughput

Engineering Contradiction:
Improvelookup speedVSAvoidthroughput
Core Design Contradiction:
SpeedVSProductivity

Solution Approach 1:

The patent segments the Bloom filter into multiple independent memory banks (first memory bank, second memory bank, etc.), each capable of processing lookup requests in parallel. This segmentation allows the system to distribute search keys across different memory banks, preventing any single bank from becoming a bottleneck and thereby maintaining both high lookup speed and high throughput simultaneously.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension of parallelism by organizing memory banks in a multi-dimensional structure where search keys can be routed to different banks based on their characteristics. This dimensional organization transforms the single-queue bottleneck into a multi-queue system, enabling concurrent processing of multiple lookup requests without mutual interference.

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

2Productivity

If the flow cache stores information about all packet flows, then lookup performance is improved, but the cache size increases and hardware costs increase

Engineering Contradiction:
Improvelookup performanceVSAvoidcache size
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent applies local quality by storing different types of information in different parts of the flow cache. Specifically, it stores flow identification information (for quick matching) separately from flow state information (for filtering decisions). This selective storage strategy ensures that only essential information is cached, optimizing lookup performance while minimizing cache size and hardware requirements.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent implements partial caching by storing information for only a portion of packet flows rather than all flows. The flow cache selectively caches flows that benefit most from caching (e.g., frequent flows or flows with complex filtering rules), achieving significant performance improvement without the need to cache every possible flow, thus reducing overall cache size.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentEP2627047B1Flow cache mechanism for performing packet flow lookups in a network device
Publication Date: 2015.12.23 JUNIPER NETWORKS INC
  • EP2627047B1 patent drawingFigure 1
  • EP2627047B1 patent drawingFigure 2
  • EP2627047B1 patent drawingFigure 3

AI summary

An example network device includes a network interface configured to receive a packet of a packet flow, wherein the packet flow is one of a plurality of packet flows processed by the network device, a flow cache configured to receive a lookup key associated with the packet flow, and a Bloom filter configured to process the lookup key. The flow cache is further configured to store information about a portion of the plurality of packet flows processed by the network device, and determine whether to store information about the packet flow by at least applying a selection criterion to processing of the lookup key by the Bloom filter. The flow cache is configured to determine whether the lookup key is stored in the flow cache, and, when the lookup key is stored in the flow cache, retrieve a stored result associated with the lookup key and output the stored result.