Concurrent Packet Queueing via Segmented Record Banks
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In data centers, high-speed networking switches face challenges in concurrently enqueuing network packets from multiple sources while avoiding memory collisions, which can lead to packet loss and congestion.
Innovation Solution
The solution involves dividing memory into record banks, link banks, and link stashes, allowing N writers and one reader to access memory concurrently by using N+1 single-port record banks and corresponding link banks, thereby avoiding writer-writer and reader-writer collisions.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If multiple writers concurrently enqueue packets to the same memory pool, then packet processing throughput increases, but memory collisions occur causing packet loss
Solution Approach 1:
The memory pool is divided into multiple separate record banks (N+1 banks for N writers), where each writer has dedicated write access to specific banks. This segmentation eliminates writer-writer collisions by providing each writer with independent memory regions, while still allowing concurrent enqueue operations to proceed in parallel, thus maintaining high throughput without packet loss.
2Productivity
If memory is divided into multiple record banks for concurrent writers, then writer-writer collisions are avoided, but device complexity increases
Solution Approach 1:
Link stashes are introduced as intermediary structures that manage the connections between record banks. Each link stash contains metadata (such as valid bits and link pointers) that enables the system to track which record banks contain valid packet data and how to traverse the packet queue. This intermediary layer simplifies the complexity by providing a standardized interface for managing the segmented memory structure, rather than requiring complex address translation logic in each writer.
Solution Approach 2:
The system transitions from a single-dimensional memory address space to a multi-dimensional structure with record banks, link banks, and link stashes. Writers operate in the record bank dimension, while link stashes manage the logical connections in a separate dimension. This dimensional separation allows concurrent writers to operate independently without interfering with each other, while the link stash dimension provides the coordination mechanism needed to maintain queue integrity.
3Productivity
If N+1 record banks are used for N writers, then writer-reader collisions are avoided, but memory usage increases
Solution Approach 1:
The system uses valid bits in link stashes to track which record bank entries contain valid packet data. When packets are enqueued or dequeued, the corresponding valid bits are updated or cleared. This allows the memory structure to efficiently reuse slots that have been dequeued, marking them as invalid temporarily while they are being processed, and then making them available for new packets. This recovery mechanism ensures that the additional memory allocated for N+1 banks is fully utilized and not wasted on idle or obsolete data slots.
Data Source
AI summary
A method during a first cycle includes receiving, at a first port of a device, a plurality of network packets. The method may include storing, by the device, at least some portion of a first packet of the plurality of network packets at a first address within a first record bank and storing, by the device and concurrent with storing the at least some portion of the first packet from the first address, at least some portion of a second packet of the plurality of network packets at a second address within a second record bank, different than the first record bank. The method may further include storing, by the device, the first address within the first record bank and the second address within the second record bank in the first link stash associated with the first record bank and updating, by the device, a tail pointer to reference the second address.


