Flexible Buffer Allocation in Network Switches

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In high-speed packet networks, existing buffer management systems in switches fail to efficiently manage different packet types, leading to congestion and resource allocation inefficiencies, as they tightly couple queuing and buffering, affecting all packet types sharing the same transmit queue.

Innovation Solution

Implementing a system where packet processing logic maintains separate buffer allocations for different packet types, even when they share a common transmit queue, allowing for independent congestion avoidance mechanisms and flexible resource allocation based on packet types and egress interfaces.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If separate buffer allocations are implemented for different packet types, then network resource management efficiency is improved, but device complexity increases

Engineering Contradiction:
Improvenetwork resource management efficiencyVSAvoidbuffer management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The buffer memory is segmented into separate buffer allocations for different packet types (e.g., unicast and multicast packets). Each packet type has its own dedicated buffer allocation, allowing independent management and congestion avoidance mechanisms. This segmentation enables efficient resource allocation by preventing one packet type from monopolizing buffer space, thereby improving overall network resource management efficiency despite increased structural complexity.

Inventive Principle:
Principle #1Segmentation

2Device complexity

If multiple packet types share a common transmit queue, then device complexity is reduced, but congestion avoidance effectiveness deteriorates

Engineering Contradiction:
Improvequeue management complexityVSAvoidcongestion avoidance effectiveness
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

While packet types share a common transmit queue for simplified management, the invention segments the buffer allocations associated with each packet type. This allows congestion avoidance mechanisms to operate independently on each buffer allocation, ensuring that congestion in one packet type does not adversely affect others. The segmentation occurs at the buffer level rather than the queue level, balancing complexity and effectiveness.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different congestion avoidance mechanisms and parameters can be applied locally to each packet type's buffer allocation. For example, unicast packets may use one congestion control strategy while multicast packets use another, tailored to their specific traffic characteristics and requirements. This local quality approach enhances congestion avoidance effectiveness without requiring separate transmit queues for each packet type.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10250530B2Flexible buffer allocation in a network switch
Publication Date: 2019.04.02 MELLANOX TECHNOLOGIES LTD(IL)
  • US10250530B2 patent drawing
  • US10250530B2 patent drawing
  • US10250530B2 patent drawing

AI summary

Communication apparatus includes multiple interfaces configured to be connected to a packet data network for receiving and forwarding of data packets of multiple types. A memory is coupled to the interfaces and configured as a buffer to contain packets received through the ingress interfaces while awaiting transmission to the network via the egress interfaces. Packet processing logic is configured to maintain multiple transmit queues, which are associated with respective ones of the egress interfaces, and to place both first and second queue entries, corresponding to first and second data packets of the first and second types, respectively, in a common transmit queue for transmission through a given egress interface, while allocating respective spaces in the buffer to store the first and second data packets against separate, first and second buffer allocations, which are respectively assigned to the first and second types of the data packets.