NIC Buffer Allocation Using Segmented Pools for Packet Size Adaptation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current network packet buffering techniques either waste memory with large buffers for small packets or suffer from discontiguous packet issues with chained small buffers, leading to decreased system performance.

Innovation Solution

A system that allocates pools of small and large buffers and uses descriptors to select the appropriate buffer based on packet size, allowing efficient storage and retrieval of network packets by including buffer pointers in descriptors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If large buffers are used to accommodate entire jumbo frames, then packet buffering capability is improved, but memory waste increases when small network packets consume large buffers

Engineering Contradiction:
Improvepacket buffering capabilityVSAvoidmemory waste
Core Design Contradiction:
Adaptability or versatilityVSLoss of substance

Solution Approach 1:

The patent divides the buffer into two separate pools: a first buffer pool for small packets and a second buffer pool for large packets (jumbo frames). This segmentation allows the system to allocate appropriate buffer sizes based on packet type, preventing small packets from consuming large buffer space while ensuring large packets have sufficient buffering capacity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different buffer pools are created with different characteristics suited to different packet types. The first buffer pool is optimized for small packets (reducing memory waste), while the second buffer pool is optimized for large packets (ensuring adequate capacity). This local quality approach allows each buffer pool to have properties tailored to its specific usage pattern.

Inventive Principle:
Principle #3Local quality

2Loss of substance

If a collection of smaller buffers chained together is used, then memory efficiency is improved, but system performance decreases due to discontiguous packet structure and ineffective prefetch operations

Engineering Contradiction:
Improvememory efficiencyVSAvoidsystem performance
Core Design Contradiction:
Loss of substanceVSProductivity

Solution Approach 1:

Instead of chaining multiple small buffers together, the patent segments the buffering responsibility by creating separate buffer pools. Each pool manages its own contiguous memory space, eliminating the need for buffer chaining while maintaining memory efficiency. The receive stack processes packets from these separate pools without encountering discontiguous structures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent merges the concept of buffer pools with the descriptor structure to create a unified approach. Descriptors reference buffers in pools, combining the benefits of contiguous memory allocation with efficient memory utilization. This merging eliminates the performance penalties of buffer chaining while maintaining memory efficiency.

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If buffer chains are used to accommodate variable packet sizes, then memory flexibility is improved, but processing complexity increases as the receive stack must process discontiguous packets

Engineering Contradiction:
Improvememory flexibilityVSAvoidreceive stack processing complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the buffer allocation strategy into distinct pools, which simplifies the receive stack processing. Instead of managing chains of buffers, the receive stack simply needs to allocate from the appropriate pool based on packet size, reducing processing complexity while maintaining memory flexibility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The descriptor structure serves as an intermediary between the buffer pools and the receive stack. Descriptors store references to buffers in the pools, allowing the receive stack to access packet data without directly managing buffer chains. This intermediary layer simplifies the processing interface while maintaining memory flexibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS10601738B2Technologies for buffering received network packet data
Publication Date: 2020.03.24 INTEL CORP
  • US10601738B2 patent drawing
  • US10601738B2 patent drawing
  • US10601738B2 patent drawing

AI summary

Technologies for buffering received network packet data include a compute device with a network interface controller (NIC) configured to determine a packet size of a network packet received by the NIC and identify a preferred buffer size between a small buffer and a large buffer. The NIC is further configured to select, from the descriptor, a buffer pointer based on the preferred buffer size, wherein the buffer pointer comprises one of a small buffer pointer corresponding to a first physical address in memory allocated to the small buffer or a large buffer pointer corresponding to a second physical address in memory allocated to the large buffer. Additionally, the NIC is configured to store at least a portion of the network packet in the memory based on the selected buffer pointer. Other embodiments are described herein.