← Back to Patent Explorer
US6480489B1 Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for data re-assembly with a high performance network interface

Assignee: Oracle America Inc
•
Filing: 1999-03-01
•
Granted: 2002-11-12
•
Expires: 2019-03-01
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A system and method are provided for transferring a packet received from a network to a host computer according to an operation code associated with the packet. A packet received at a network interface is parsed to retrieve information from a header portion of the packet. A flow key is generated for a received packet that was formatted with one of a set of predetermined protocols. A packet's flow key identifies a communication flow that comprises the packet. Based on some of the retrieved information, a code is associated with the packet to inform a transfer engine how the packet should be transferred to host memory. Based on a packet's code, the transfer engine stores the packet in one or more host memory buffers. If the packet was formatted with one of the set of predetermined protocols, its data is re-assembled in a re-assembly buffer with data from other packets in the same communication flow. Re-assembled data may be provided to a destination application or user through page flipping. If the packet is being re-assembled, a header portion of the packet is stored in a separate header buffer. If the packet is not being re-assembled, it is stored in its entirety in the header buffer if it is smaller than a predetermined threshold. If a non-re-assembled packet is larger than the threshold for the header buffer, it is stored in another type of buffer for larger non-re-assembled packets. After a packet is stored in a buffer, the transfer engine informs the host computer of the packet by configuring a descriptor with information on the packet and releasing the descriptor to the host computer.

Inventors

  • 👤 Shimon Muller
  • 👤 Denton E. Gentry, Jr.
  • 👤 Linda T. Cheng
  • 👤 John E. Watkins

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-25 03:44
CPC Classifications
H; H04; H04L; H04L49/00; H04L49/90; H04L49/9042; H04L49/901; H04L49/9021; H04L49/9063; H04L49/9068; H04L49/9084; H04L49/9089; H04L49/9094

Claims Analysis

Total Claims: 46
Claim 1
Independent Claim 89 words
A method of storing a portion of a packet in a host computer memory, comprising: receiving a first packet at a communication interface; receiving a second packet at said communication interface; storing a header portion of said first packet in a hybrid storage area of a host computer; if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area.
Claim 2
Independent Claim 89 words
A method of storing a portion of a packet in a host computer memory, comprising: receiving a first packet at a communication interface; receiving a second packet at said communication interface; storing a header portion of said first packet in a hybrid storage area of a host computer; if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area.
Claim 3
Dependent Claim 24 words
The method of claim 1 , wherein said hybrid storage area is substantially equal in size to one memory page of said host computer.
Claim 4
Dependent Claim 14 words
The method of claim 1 , wherein said predetermined size is approximately 256 bytes.
Claim 5
Dependent Claim 40 words
The method of claim 1 , further comprising: receiving a code associated with said first packet, said code indicating that a data portion of said first packet is re-assembleable; wherein said data storage area is a re-assembly data storage area.
Claim 6
Dependent Claim 41 words
The method of claim 1 , further comprising: receiving a code associated with said second packet, said code indicating that a data portion of said second packet is not re-assembleable; wherein said data storage area is a non-re-assembly data storage area.
Claim 7
Dependent Claim 28 words
The method of claim 1 , further comprising receiving a code with said first packet, said code indicating that said first packet does not contain a data portion.
Claim 8
Dependent Claim 28 words
The method of claim 1 , further comprising receiving a code with said second packet, said code indicating that said second packet is smaller than said predetermined size.
Claim 9
Dependent Claim 27 words
The method of claim 1 , further comprising padding said hybrid storage area to align said header portion with a predetermined index in said hybrid storage area.
Claim 10
Dependent Claim 26 words
The method of claim 1 , wherein said first packet belongs to a first communication flow and said second packet belongs to a second communication flow.
Claim 11
Independent Claim 151 words
A method of transferring multiple packets in a communication flow into a host computer, comprising: receiving a first packet at a network interface for transfer to a host computer; identifying a communication flow comprising said first packet; receiving a second packet at said network interface, wherein said communication flow further comprises said second packet; associating a code with said first packet to indicate whether a data portion of said first packet is re-assembleable with a data portion of another packet in said communication flow; receiving a set of descriptors from the host computer, wherein an aggregate size of said set of descriptors approximates a cache line size of the host computer; storing a header portion of said first packet in a header storage area; storing said data portion of said first packet in a re-assembly storage area; and storing a data portion of said second packet in said re-assembly storage area.
Claim 12
Independent Claim 151 words
A method of transferring multiple packets in a communication flow into a host computer, comprising: receiving a first packet at a network interface for transfer to a host computer; identifying a communication flow comprising said first packet; receiving a second packet at said network interface, wherein said communication flow further comprises said second packet; associating a code with said first packet to indicate whether a data portion of said first packet is re-assembleable with a data portion of another packet in said communication flow; receiving a set of descriptors from the host computer, wherein an aggregate size of said set of descriptors approximates a cache line size of the host computer; storing a header portion of said first packet in a header storage area; storing said data portion of said first packet in a re-assembly storage area; and storing a data portion of said second packet in said re-assembly storage area.
Claim 13
Dependent Claim 24 words
The method of claim 10 , wherein said re-assembly storage area is substantially equal in size to one memory page of said host computer.
Claim 14
Dependent Claim 24 words
The method of claim 10 , wherein said re-assembly storage area is used to store only data portions of packets in said communication flow.
Claim 15
Dependent Claim 21 words
The method of claim 10 , further comprising retrieving an identifier of a first storage area in a host computer memory.
Claim 16
Dependent Claim 39 words
The method of claim 13 , further comprising: placing said first storage area identifier in a data structure configured to hold storage area identifiers; wherein said first storage area identifier is identifiable by an index in said data structure.
Claim 17
Dependent Claim 25 words
The method of claim 14 , further comprising using said index to identify said first storage area for storing a portion of said first packet.
Claim 18
Dependent Claim 64 words
The method of claim 14 , wherein said first storage area comprises one of said header storage area and said re-assembly storage area, the method further comprising: configuring a descriptor to store said index of said first storage area identifier to inform said host computer of the use of said first storage area to store one of said header portion and said data portion.
Claim 19
Dependent Claim 21 words
The method of claim 16 , further comprising configuring said second descriptor to store an offset within said first storage area.
Claim 20
Dependent Claim 16 words
The method of claim 9 , further comprising parsing a header portion of said first packet.
Claim 21
Dependent Claim 31 words
The method of claim 18 , wherein said parsing comprises: retrieving an identifier of a source of said first packet; and retrieving an identifier of a destination of said first packet.
Claim 22
Dependent Claim 26 words
The method of claim 19 , wherein said identifying a communication flow comprises assembling said source identifier and said destination identifier to form a flow key.
Claim 23
Dependent Claim 23 words
The method of claim 20 , said identifying further comprising obtaining an index of said flow key in a database of flow keys.
Claim 24
Dependent Claim 31 words
The method of claim 9 , wherein said identifying comprises: receiving a virtual connection identifier, wherein a communication flow comprising said first packet can be identified by said virtual connection identifier.
Claim 25
Dependent Claim 53 words
The method of claim 9 , wherein said storing a header portion comprises: retrieving an index of a header storage area of a host computer; retrieving an identifier of a location in said header storage area; and storing a header portion of said first packet at said location in said header storage area.
Claim 26
Dependent Claim 27 words
The method of claim 23 , wherein said header storage area index comprises an index of said header storage area within a collection of storage area identifiers.
Claim 27
Dependent Claim 25 words
The method of claim 24 , wherein said identifier of a location in said header storage area comprises an address within said header storage area.
Claim 28
Dependent Claim 53 words
The method of claim 9 , wherein said storing said data portion comprises: retrieving an identifier of a re-assembly storage area of a host computer; retrieving an identifier of a location in said re-assembly storage area; and storing said data portion of said first packet at said location in said re-assembly storage area.
Claim 29
Dependent Claim 32 words
The method of claim 26 , wherein said retrieving an identifier of a re-assembly storage area comprises reading an entry in a re-assembly storage table, said entry corresponding to said communication flow.
Claim 30
Dependent Claim 18 words
The method of claim 18 , wherein said data portion is of unknown size prior to said parsing.
Claim 31
Dependent Claim 126 words
A network interface for transferring a packet from a network to a host computer, comprising: a parser configured to examine one or more packets received from a network; a flow manager configured to manage a first communication flow comprising said one or more packets; a header storage area configured to store header portions of said one or more packets; a first re-assembly storage area configured to store data portions of said one or more packets; a second re-assembly storage area; and a transfer module configured to: transfer a data portion of a first packet of a second communication flow into said second re-assembly storage area if said first packet is larger than a predetermined size; and otherwise, transfer said first packet into said header storage area.
Claim 32
Dependent Claim 126 words
A network interface for transferring a packet from a network to a host computer, comprising: a parser configured to examine one or more packets received from a network; a flow manager configured to manage a first communication flow comprising said one or more packets; a header storage area configured to store header portions of said one or more packets; a first re-assembly storage area configured to store data portions of said one or more packets; a second re-assembly storage area; and a transfer module configured to: transfer a data portion of a first packet of a second communication flow into said second re-assembly storage area if said first packet is larger than a predetermined size; and otherwise, transfer said first packet into said header storage area.
Claim 33
Dependent Claim 108 words
A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of transferring a packet from a network to a host computer, the method comprising: receiving a first packet at a communication interface; receiving a second packet at said communication interface; storing a header portion of said first packet in a hybrid storage area of a host computer; if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area.
Claim 34
Dependent Claim 108 words
A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of transferring a packet from a network to a host computer, the method comprising: receiving a first packet at a communication interface; receiving a second packet at said communication interface; storing a header portion of said first packet in a hybrid storage area of a host computer; if said first packet includes a data portion, storing said data portion in a data storage area of said host computer; and if said second packet is smaller than a predetermined size, storing said second packet in said hybrid storage area.
Claim 35
Independent Claim 202 words
A method of transferring a packet from a communication link to a host computer, comprising: parsing a first packet received from a communication link to determine if the first packet conforms to a predetermined set of communication protocols; generating, from identifiers of a source and a destination of the first packet extracted from the first packet, a flow key to identify a communication flow comprising the first packet; updating a flow database to track a status of the communication flow; associating a first operation code with the first packet to indicate whether the first packet is re-assembleable with another packet in the communication flow; maintaining a plurality of storage areas for transferring packets to a host computer, including: a first storage area configured to store data portions of packets in the communication flow; a second storage area configured to store a packet having an associated operation code indicating that the packet is not re-assembleable; and a third storage area configured to store packets less than a predetermined size and headers of packets having data portions stored in said first storage area; and storing the first packet in one or more of said plurality of storage areas for transfer to the host computer.
Claim 36
Independent Claim 202 words
A method of transferring a packet from a communication link to a host computer, comprising: parsing a first packet received from a communication link to determine if the first packet conforms to a predetermined set of communication protocols; generating, from identifiers of a source and a destination of the first packet extracted from the first packet, a flow key to identify a communication flow comprising the first packet; updating a flow database to track a status of the communication flow; associating a first operation code with the first packet to indicate whether the first packet is re-assembleable with another packet in the communication flow; maintaining a plurality of storage areas for transferring packets to a host computer, including: a first storage area configured to store data portions of packets in the communication flow; a second storage area configured to store a packet having an associated operation code indicating that the packet is not re-assembleable; and a third storage area configured to store packets less than a predetermined size and headers of packets having data portions stored in said first storage area; and storing the first packet in one or more of said plurality of storage areas for transfer to the host computer.
Claim 37
Dependent Claim 29 words
The method of claim 31 , wherein said storing comprises: selecting one or more storage areas of said plurality of storage areas on the basis of said operation code.
Claim 38
Dependent Claim 27 words
The method of claim 31 , wherein each of said plurality of storage areas is substantially equal in size to one memory page of the host computer.
Claim 39
Dependent Claim 23 words
The network interface of claim 29 , further comprising: a jumbo storage area configured to store a packet larger than a predetermined size.
Claim 40
Dependent Claim 38 words
The network interface of claim 29 , further comprising: a code generator configured to generate a code for the first packet to indicate whether the first packet is re-assembleable with a second packet in the second communication flow.
Claim 41
Dependent Claim 33 words
The network interface of claim 29 , further comprising: a code generator configured to generate a code for the first packet to indicate whether the first packet is larger than the predetermined size.
Claim 42
Dependent Claim 71 words
A communication interface configured to store packets for transfer to a host computer, comprising: a parser configured to determine whether a packet includes a data portion; a re-assembly storage area configured to store data portions of a plurality of packets from a single communication flow; and a hybrid storage area configured to store: header portions of the plurality of packets; and one or more packets smaller than a first predetermined size.
Claim 43
Dependent Claim 71 words
A communication interface configured to store packets for transfer to a host computer, comprising: a parser configured to determine whether a packet includes a data portion; a re-assembly storage area configured to store data portions of a plurality of packets from a single communication flow; and a hybrid storage area configured to store: header portions of the plurality of packets; and one or more packets smaller than a first predetermined size.
Claim 44
Dependent Claim 39 words
The communication interface of claim 37 , further comprising: a jumbo storage area configured to store a packet larger than a second predetermined size; wherein each packet in the plurality of packets is smaller than said second predetermined size.
Claim 45
Dependent Claim 44 words
The communication interface of claim 37 , further comprising: a code generator configured to generate a code for each packet received at the communication interface; wherein said code is configured to indicate a type of storage area in which said packet may be stored.
Claim 46
Dependent Claim 25 words
The communication interface of claim 37 , wherein said parser is further configured to determine a size of each packet received at the communication interface.

References Cited (Backward Citations)

US5414704A Cited
US5412655A Cited
WO1995014269A1 Cited
US5633867A Cited
US5809024A Cited
US5758089A Cited
US5778180A Cited
US5787255A Cited
US5778414A Cited
US5870394A Cited
US5917828A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2005-11-11 2006-05-13 2006-11-12 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2009-11-11 2010-05-13 2010-11-12 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2013-11-11 2014-05-13 2014-11-12 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag