Shared Buffer Management for Network Switches
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
As the number of senders to a network switch increases, the buffering required for packet storage grows significantly, consuming a large amount of chip area and leading to inefficiencies in managing packet memory, particularly due to Head-Of-Line (HOL) blocking and increased bandwidth requirements.
Innovation Solution
The method involves separating packet memory into shared pool buffers and dedicated per-sender pools, with packets initially stored in shared pools and then allocated to dedicated pools if necessary, using a credit-controlled or Xon-Xoff back pressure mechanism to manage flow control and prevent buffer overflow, while also utilizing a global multicast pool for multi-copy packets.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If dedicated buffer space is allocated for each port/priority, then HOL blocking is prevented and line rate performance is maintained, but the total buffering required grows linearly with the number of senders, consuming significant chip area
Solution Approach 1:
The buffer memory is segmented into multiple pools: a shared pool for general packet storage and dedicated pools for each port/priority combination. This segmentation allows the system to provide dedicated buffering where needed (preventing HOL blocking) while sharing buffering resources where possible (reducing total chip area consumption).
Solution Approach 2:
Different buffer pools are assigned different qualities or characteristics tailored to specific needs. The shared pool provides general buffering capacity, while dedicated pools provide priority-assured buffering for specific ports. This local differentiation allows efficient resource utilization while maintaining performance guarantees where required.
2Area of stationary object
If shared pool buffer is used for all packets, then chip area is reduced, but packets may be dropped when the shared pool is full, reducing reliability
Solution Approach 1:
The buffer system is divided into a shared pool and multiple dedicated pools. The shared pool handles general packet storage to save area, while dedicated pools ensure reliable packet delivery for specific ports by providing guaranteed buffering capacity, preventing packet drops when the shared pool is full.
Solution Approach 2:
The shared pool acts as an intermediary buffer that can receive packets from multiple sources. When the shared pool is full, packets are redirected to appropriate dedicated pools, ensuring reliable delivery while maintaining area efficiency. The shared pool mediates between area constraints and reliability requirements.
3Productivity
If per-sender buffer allocation is implemented, then packet memory management efficiency is improved, but the complexity of managing multiple buffer pools and credit control mechanisms increases
Solution Approach 1:
A credit-based feedback mechanism is implemented where the shared pool provides credits to dedicated pools based on availability. This feedback system automatically manages buffer allocation and redirects packets when needed, improving management efficiency while the structured feedback protocol keeps complexity controllable.
Solution Approach 2:
The buffer management system is designed to be self-managing through automated credit allocation and packet redirection mechanisms. The shared pool automatically provides credits to dedicated pools, and the system self-adjusts packet routing based on buffer availability, reducing the need for external management complexity.
Data Source
AI summary
A method of managing a buffer (or buffer memory) includes utilizing one or more shared pool buffers, one or more port/priority buffers and a global multicast pool. When packets are received, a shared pool buffer is utilized; however, if a packet does not fit in the shared pool buffer, then the appropriate port/priority buffer is used. If the packet is a multicast packet, then the global multicast pool is utilized for copies of the packet.


