Extensible Packet Processing Architecture for Scalable Network Performance

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Scalable parallel processing techniques in computer networks face challenges in efficiently sharing limited resources, often resulting in head-of-line blockages where some compute components are overburdened while others remain idle, due to ineffective workload scheduling.

Innovation Solution

An extensible processing pipeline architecture with serially linkable processing engines and a distributed arbiter chain that allows decentralized decision-making for time-sharing data buses, enabling efficient processing of packet flows by allowing each engine to claim and process packets based on availability, thereby avoiding bottlenecks and optimizing resource utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If parallel processing techniques are used to scale compute power, then processing capacity increases, but head-of-line blockages occur causing some resources to be overburdened while others remain idle

Engineering Contradiction:
Improveprocessing capacityVSAvoidresource scheduling complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system segments the packet processing workload by dividing incoming packet flows into multiple parallel processing pipelines. Each pipeline is assigned to a specific processing engine, eliminating head-of-line blockages by allowing independent processing of different packet streams. This segmentation enables scalable parallel processing while maintaining efficient resource utilization across all compute components.

Inventive Principle:
Principle #1Segmentation

2Productivity

If distributed compute resources are shared efficiently, then resource utilization improves, but scheduling complexity increases

Engineering Contradiction:
Improveresource utilizationVSAvoidscheduling complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

Processing engines operate autonomously to claim and process packet flows without centralized scheduling intervention. Each engine independently monitors the availability of packet flows and claims them when ready, eliminating the need for complex centralized scheduling algorithms. This self-service mechanism ensures efficient resource utilization while keeping scheduling complexity minimal through decentralized decision-making.

Inventive Principle:
Principle #25Self-service

3Productivity

If processing engines operate independently, then scalability improves, but coordination overhead increases

Engineering Contradiction:
ImprovescalabilityVSAvoidcoordination overhead
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system merges the coordination function into the shared packet flow data structure itself, using claim flags and status indicators embedded in the packet metadata. Processing engines coordinate by reading and writing these flags rather than through separate communication channels. This approach enables scalable independent operation of processing engines while minimizing coordination overhead by combining state information with the data being processed.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8514855B1Extensible packet processing architecture
Publication Date: 2013.08.20 NATIONAL TECHNOLOGY & ENGINEERING SOLUTIONS OF SANDIA LLC
  • US8514855B1 patent drawing
  • US8514855B1 patent drawing
  • US8514855B1 patent drawing

AI summary

A technique for distributed packet processing includes sequentially passing packets associated with packet flows between a plurality of processing engines along a flow through data bus linking the plurality of processing engines in series. At least one packet within a given packet flow is marked by a given processing engine to signify by the given processing engine to the other processing engines that the given processing engine has claimed the given packet flow for processing. A processing function is applied to each of the packet flows within the processing engines and the processed packets are output on a time-shared, arbitered data bus coupled to the plurality of processing engines.