Decoupled Packet and Data Processing Rates in Switch Devices
US-2016366073-A1 · Dec 15, 2016 · US
US9584446B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9584446-B2 |
| Application number | US-5090008-A |
| Country | US |
| Kind code | B2 |
| Filing date | Mar 18, 2008 |
| Priority date | Mar 18, 2008 |
| Publication date | Feb 28, 2017 |
| Grant date | Feb 28, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
The present invention is directed to a method and system of memory management that features dual buffer rings, each of which includes descriptors identifying addresses of a memory space, referred to as buffers, in which portions of data packets are stored. Typically, the header segment of each data packet is stored at a first set of a plurality of buffers, and the portion of the payload segment that does not fit among the buffers of the first set is stored in the buffers of a second set. In this manner, the size of the individual buffers associated with the first buffer rings may be kept to the smallest size of useable storage space, and the buffers corresponding to the second buffer ring may be arbitrary in size.
Opening claim text (preview).
What is claimed is: 1. A memory buffer management method comprising: establishing a first receive ring having a first plurality of descriptors, each descriptor of the first receive ring identifying a respective buffer belonging to a first set of buffers; establishing a second receive ring having a second plurality of descriptors, each descriptor of the second receive ring identifying a respective buffer belonging to a second set of buffers; storing a header segment of a data packet in a first buffer of the first set; reserving one or more additional buffers of the first set for storing portions of a payload segment of the data packet, the first buffer and the one or more additional buffers of the first set having sequential addresses in memory; and determining whether the payload segment is too large to be stored in the reserved additional buffers, and storing only remaining portions of the payload segment of the data packet in one or more buffers of the second set when the payload segment is too large to be stored in the reserved additional buffers, the one or more buffers of the second set having fragmented addresses in the memory. 2. The method of claim 1 wherein the first plurality of descriptors identify first and second chunks of buffers, the second chunk comprising the reserved additional buffers, the first chunk including multiple buffers of the first set, the remaining buffers of the first set being included in the second chunk, each of the remaining buffers of the second chunk being larger than each of the multiple buffers of the first chunk, wherein the storing of the header segment includes storing the header segment and a first portion of the payload segment in one buffer from the first chunk of buffers, the method further comprising storing additional portion of the payload segment among buffers in the reserved additional buffers of the second chunk. 3. The method of claim 2 , further comprising: storing the remaining portions of the payload segment in the second set of buffers when a storage capacity among the reserved additional buffers in the second chunk is exhausted without completely storing the payload segment in the first and second chunk of buffers. 4. The method as recited in claim 1 , further including receiving multiple packets of data, each of the packets of data including a header segment and a payload segment, and storing the header segments in said first set, and storing only a portion of the payload segments in said second set. 5. The method as recited in claim 1 , further including receiving multiple packets of data, each of the packets of data including a header segment and a payload segment, and storing the header segments in said first set, and storing only a portion of the payload segments in said second set. 6. The method of claim 1 , further comprising: receiving multiple packets of data, each of the packets of data including a header segment and a payload segment; storing the header segments in the first set; storing only a portion of the payload segments in the second set, when the payload segments is larger than twice the size of the first buffer in the first set; and storing the payload segments in the first set and not in the second set when the payload segment is not larger than twice the size of one of the buffers of the first set. 7. A non-transitory computer readable storage medium embodying computer software implementing a method for memory buffer management in a computer, the method comprising: establishing a first receive ring having a first plurality of descriptors, each descriptor of the first receive ring identifying a respective buffer belonging to a first set of buffers, said first set of buffers of having sequential addresses in a memory; designating a first buffer in the first set to store a header segment of a data packet; determining a size of the first buffer based on a size of the header segment; establishing a second receive ring having a second plurality of descriptors, each descriptor of the second receive ring identifying a respective buffer belonging to a second set of buffers, the second set of buffers having fragmented addresses in the memory; reserving one or more additional buffers of said first set for storing portions of the payload segment of the data packet; storing the header segment of the data packet in the first buffer of the first set; determining the payload segment is too large to be stored in the reserved additional buffers; and based on determining the payload segment is too large to be stored in the reserved additional buffers, storing remaining portions of the payload segment for the data packet in a buffer of the second set. 8. The medium of claim 7 , wherein; the plurality of descriptors identify first and second chunks of buffers, the second chunk comprising the reserved additional buffers; the first chunk includes multiple buffers of the first set, the remaining buffers of the first set being included in the second chunk; the storing of the header segment includes storing the header segment and a first portion of the payload segment in one or more buffers in the first chunk of buffers; and the method further comprising storing additional portions of the payload segment among buffers in the reserved additional buffers of the second chunk. 9. The medium of claim 8 wherein each of the multiple buffers of the first chunk are smaller in storage capacity than each of the second chunk. 10. The medium of claim 7 , wherein the storing of the remaining portions of the payload segment of the data packet in the buffer of the second set further comprises sizing the buffer of the second set according to a quantity of data of the portion of the payload segment to be stored in the buffer of the second set. 11. The medium of claim 7 , wherein the method further comprises receiving multiple packets off data, each of the packets of data including a header segment and a payload segment, and storing the header segments in said first set, and storing the payload segments in said second set. 12. The medium of claim 7 , wherein the method further comprises receiving multiple packets of data, each of the packets of data including a header segment and a payload segment, and storing the header segments in said first set, and storing a portion of the payload segments in said second set. 13. The medium of claim 7 , wherein the method further comprises receiving multiple packets of data, each of the packets of data including a header segment and a payload segment, and storing the header segments in the first set, and storing a portion of the payload segments in the second set when the payload segments are larger than twice the size of one of the buffers of the first set, and storing the payload segments in the first set when the payload segment is not larger than twice the size of one of the buffers of the first set. 14. A data packet processing system, said system comprising: a memory space having first and second receive rings with a plurality of descriptors, a first group of the descriptors being contained in the first receive ring, the first group of descriptors identifying the first set of buffers, and a second group of the descriptors contained in said second receive buffer ring the second group of descriptors identifying a second set of buffers, the first set of buffers having sequential addresses in memory, the second set of buffers having fragmented address in the memory; and a communication drive; to associate, by a processor, said first and second sets of buffers with said first and second receive rings so that at least one buffer of the first
Buffering arrangements · CPC title
Separate storage for different parts of the packet, e.g. header and payload · CPC title
with buffers of different sizes · CPC title
Wraparound memory, e.g. overrun or underrun detection · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.