Network Stack Packet Scheduling for Buffer Bloat Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current network queuing mechanisms in client devices lack intelligence, leading to buffer bloat and inefficient packet management due to large buffers and lack of accurate congestion information, which affects packet loss and latency across different network applications.

Innovation Solution

A computer-implemented method for managing packet scheduling on a client device, where packets are enqueued and scheduled at either the network stack level or the driver level, with continuous feedback between the driver layer and the networking stack to ensure intelligent queuing based on detected networking conditions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If large buffers are used in router queues, then packet loss is reduced, but buffer bloat occurs and network efficiency deteriorates

Engineering Contradiction:
Improvepacket lossVSAvoidnetwork efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements feedback mechanisms where the network stack monitors queue depth and buffer status, then adjusts transmission rates accordingly. This feedback loop prevents buffers from becoming overly full while maintaining reliable packet delivery, resolving the contradiction between reducing packet loss and maintaining network efficiency.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system dynamically adjusts buffer management strategies based on current network conditions. Rather than using fixed large buffers, the network stack adapts buffer allocation and transmission rates in real-time, allowing the system to maintain reliability when needed while preserving efficiency during normal operation.

Inventive Principle:
Principle #15Dynamics

2Device complexity

If driver-level queuing is used, then implementation simplicity is maintained, but accurate congestion information is lost

Engineering Contradiction:
Improveimplementation complexityVSAvoidcongestion information
Core Design Contradiction:
Device complexityVSLoss of information

Solution Approach 1:

The network stack acts as an intermediary between the driver and the network medium. It receives congestion information from the driver, processes this information to make intelligent queuing decisions, and then communicates with the driver to adjust transmission accordingly. This intermediary role preserves congestion information while maintaining implementation simplicity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent segments the queuing function into two parts: the driver handles basic packet submission with simple queuing, while the network stack handles intelligent queue management and congestion monitoring. This segmentation allows each component to focus on its strengths without increasing overall complexity.

Inventive Principle:
Principle #1Segmentation

3Adaptability or versatility

If network stack level scheduling is implemented, then intelligent queuing is achieved, but system complexity increases

Engineering Contradiction:
Improveintelligent queuing capabilityVSAvoidsystem complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The network stack is designed to perform multiple functions including packet routing, protocol processing, and now intelligent queuing. By making the network stack universal and multi-functional, the patent avoids adding separate complex queuing subsystems, thereby achieving intelligent queuing without proportionally increasing system complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The network stack uses its existing monitoring and control capabilities to manage its own queues. Rather than requiring external complex management systems, the network stack serves itself by leveraging its inherent ability to monitor network conditions and control transmission, reducing the need for additional complex infrastructure.

Inventive Principle:
Principle #25Self-service

4Device complexity

If TCP self-tuning is used with large buffers, then congestion response is simplified, but packet loss detection becomes less accurate

Engineering Contradiction:
Improvecongestion response complexityVSAvoidpacket loss detection accuracy
Core Design Contradiction:
Device complexityVSMeasurement precision

Solution Approach 1:

The system implements enhanced feedback mechanisms that provide the network stack with precise information about queue depth, buffer status, and actual packet loss conditions. This feedback allows TCP to tune its congestion response accurately without relying solely on traditional packet loss signals, maintaining detection precision while keeping the response mechanism relatively simple.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent replaces traditional mechanical packet loss detection methods with information-based detection using feedback from the network stack. Instead of relying purely on packet retransmission signals, the system uses queue depth monitoring and buffer status information to detect congestion conditions more accurately, substituting mechanical detection with informational detection.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentEP2786539B1System and method for scheduling packet transmission on a client device
Publication Date: 2018.03.21 APPLE INC
  • EP2786539B1 patent drawingFigure 1A
  • EP2786539B1 patent drawingFigure 1B
  • EP2786539B1 patent drawingFigure 2A

AI summary

A computer-implemented method for managing packet scheduling on a client device. For example, one embodiment of a method comprises: receiving a packet to be transmitted; enqueuing the packet in a queue at a network stack level; determining whether packet scheduling is currently being performed at a driver level or at a networking stack level; selecting the packet for transmission from the queue at the network stack level if scheduling is currently being performed at the network stack level; and selecting the packet for transmission from the queue at the driver level if scheduling is currently being performed at the driver level.