Network Interface Controller Buffer Management for Receive Segment Coalescing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current network processing systems face inefficiencies when handling multiple TCP/IP packets for the same flow, as they often require non-contiguous buffer management and frequent communication between the network interface controller and the network stack, leading to increased processing costs and reduced performance.

Innovation Solution

Implementing Receive Segment Coalescing (RSC) by coalescing multiple received TCP/IP packets into a single packet within the network interface controller, allowing for contiguous or linked-list storage in system memory, and using separate receive buffer and completion queues to manage buffer allocation and processing, thereby simplifying the processing of TCP/IP packets.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple TCP/IP packets for the same flow are processed separately with non-contiguous buffer management, then each packet can be handled individually, but per-packet processing costs increase and processing efficiency decreases

Engineering Contradiction:
Improveprocessing efficiencyVSAvoidbuffer management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges multiple TCP/IP packets for the same flow into a single coalesced packet by combining their payloads into contiguous buffers. This reduces the number of individual packet processing operations and decreases per-packet processing costs while maintaining data integrity through proper buffer management and descriptor tracking.

Inventive Principle:
Principle #5Merging (Combining)

2Productivity

If frequent communication occurs between the network interface controller and the network stack, then packet processing can be performed, but processing overhead increases and performance decreases

Engineering Contradiction:
Improvenetwork processing performanceVSAvoidcommunication overhead time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent performs preliminary coalescing of multiple packets into a single packet within the network interface controller before transmitting to the network stack. This preliminary action reduces the number of communication interactions required between the controller and stack, thereby reducing overhead time and improving overall processing performance.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If separate receive buffer and completion queues are used for buffer management, then buffer allocation is simplified, but memory usage increases

Engineering Contradiction:
Improvebuffer allocation simplicityVSAvoidmemory consumption
Core Design Contradiction:
Ease of operationVSQuantity of substance

Solution Approach 1:

The patent segments buffer management into two distinct queues: a receive buffer queue for allocating buffers to coalesce packets, and a completion queue for tracking processed packets. This segmentation simplifies buffer allocation operations by providing dedicated structures for each phase, while memory efficiency is maintained through buffer recycling and proper queue management that prevents duplication.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11805081B2Apparatus and method for buffer management for receive segment coalescing
Publication Date: 2023.10.31 INTEL CORP
  • US11805081B2 patent drawing
  • US11805081B2 patent drawing
  • US11805081B2 patent drawing

AI summary

Packets received non-contiguously from a network are processed by a network interface controller by coalescing received packet payload into receive buffers on a receive buffer queue and writing descriptors associated with the receive buffers for a same flow consecutively in a receive completion queue. System performance is optimized by reusing a small working set of provisioned receive buffers to minimize the memory footprint of memory allocated to store packet data. The remainder of the provisioned buffers are in an overflow queue and can be assigned to the network interface controller if the small working set of receive buffers is not sufficient to keep up with the received packet rate. The receive buffer queue can be refilled based on either timers or when the number of buffers in the receive buffer queue is below a configurable low watermark.