Memory buffer management method and system having multiple receive ring buffers

US9584446B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9584446-B2
Application numberUS-5090008-A
CountryUS
Kind codeB2
Filing dateMar 18, 2008
Priority dateMar 18, 2008
Publication dateFeb 28, 2017
Grant dateFeb 28, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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

Assignees

Inventors

Classifications

  • 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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9584446B2 cover?
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…
Who is the assignee on this patent?
Zhang Ronghua, Thakkar Pankaj, Vmware Inc
What technology area does this patent fall under?
Primary CPC classification H04L49/9042. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Feb 28 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).