IP Library Granted Patent US 7,372,864
Granted Patent B1
US 7,372,864 · App. 10/211,098 · Granted May 13, 2008

Reassembly of data fragments in fixed size buffers

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,372,864
App. No.
10/211,098
Granted
May 13, 2008
Kind
B1
Abstract

A reassembly and/or a segmentation function is spread across (i.e. partially performed in) each of two (or more) network processors, with use of buffers in a storage device to temporarily buffer data that is received in one or more ingress data units. In using the buffers, no attempt is made to completely fill each buffer. Instead, filling of data into a current buffer is stopped (and the remainder of current buffer is filled with padding) if there is no more data available, or if sufficient data has been accumulated to form an egress data unit. If there is any more data available, the remaining data is stored in a next buffer that remains partially filled (remainder filled with padding). Such partially filled buffers serve as temporary storage until additional data is received.

Claims (41)

1. A method of temporarily holding data during transfer through a network, the method comprising:

receiving data in at least one data unit (hereinafter “ingress data unit”);

saving the data received in the ingress data unit in a plurality of buffers of fixed size and storing padding in unused locations of a last buffer in the plurality of buffers;

retrieving said data and said padding together, from said plurality of buffers;

forming an egress data unit for transmission using said data without said padding from said last buffer;

wherein the data in the ingress data unit is insufficient to form the egress data unit;

receiving additional data in another data unit; and

if the data in the plurality of buffers and the additional data together is in an amount sufficient to form the egress data unit:

saving into at least one additional buffer, a portion of additional data needed to form the egress data unit when used with data in the plurality of buffers;

storing additional padding in any unused locations of the additional buffer;

retrieving the additional data and the additional padding together, from the at least one additional buffer;

wherein said forming comprises concatenating said additional data to said data thereby to remove said padding, and said egress data unit is formed without said additional padding from said additional buffer.

2. The method of claim 1 wherein the data is received in a network processor, the buffers are located in a storage device separate and distinct from the network processor, and the method further comprises:

the network processor transferring data to the storage device during the saving; and

the network processor transferring padding to the storage device during the storing.

3. The method of claim 2 wherein said network processor is hereinafter “ingress network processor” and the forming of the egress data unit without said padding is performed in an egress network processor different from the ingress network processor.

4. The method of claim 2 wherein said receiving, said retrieving and said forming are performed by said network processor.

5. A method of temporarily holding data during transfer through a network, the method comprising:

a first network processor receiving a first ingress data unit comprising data;

the first network processor saving at least a portion of data from the first ingress data unit in a plurality of buffers in a storage device coupled to each of the first network processor and a second network processor;

the first network processor storing padding of a first amount in any unused locations of a last buffer in the plurality of buffers wherein data of the first ingress data unit has been saved;

the first network processor receiving a second ingress data unit comprising additional data, and if the data received in the first ingress data unit and the additional data received in the second ingress data unit are together needed to form the egress data unit:

the first network processor saving into at least one additional buffer in the storage device, at least a portion of the additional data, and the first network processor storing padding of a second amount in any unused locations of the additional buffer; and

the second network processor retrieving the data and the first amount of padding from the storage device, and the second network processor further retrieving the additional data and the second amount of padding from the storage device, the second network processor concatenating the data and the additional data together to remove at least the first amount of padding, to form the egress data unit; and

the second network processor transmitting on the network the egress data unit without the second amount of padding.

6. The method of claim 5 further comprising:

the first network processor transferring data to the storage device during the saving; and

the first network processor transferring padding to the storage device during the storing.

7. An apparatus for processing a plurality of data units, the apparatus comprising:

means for receiving data in at least one data unit (hereinafter “ingress data unit”);

means for saving the data received in the ingress data unit in a plurality of buffers of fixed size and storing padding in unused locations of a last buffer in the plurality of buffers;

means for retrieving said data and said padding together, from said plurality of buffers;

means for forming an egress data unit for transmission using said data without said padding from said last buffer;

wherein the data in the ingress data unit is insufficient to form the egress data unit;

wherein the means for receiving receives additional data in another data unit; and

means for checking if the data in the plurality of buffers and the additional data together is in an amount sufficient to form the egress data unit:

means for saving into at least one additional buffer, a portion of additional data needed to form the egress data unit when used with data in the plurality of buffers;

means for storing additional padding in any unused locations of the additional buffer;

means for retrieving the additional data and the additional padding together, from the at least one additional buffer;

wherein said means for forming comprises means for concatenating said additional data to said data thereby to remove said padding, and said egress data unit is formed without said additional padding from said additional buffer.

8. The apparatus of claim 7 wherein said means for receiving, said means for retrieving and said means for forming are comprised in a network processor.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2016
From: NET NAVIGATION SYSTEMS, LLC
To: RPX CORPORATION
Reel/Frame 037679/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2013
From: PACKETQ SOLUTIONS LLC
To: NET NAVIGATION SYSTEMS, LLC
Reel/Frame 031645/0183 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2011
From: APPLIED MICRO CIRCUITS CORPORATION
To: NET NAVIGATION SYSTEMS, LLC
Reel/Frame 026714/0383 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2005
From: REAST, DAYNE A.; HUR, BEN; WANG, SANGYU
To: APPLIED MICRO CIRCUITS CORPORATION
Reel/Frame 016156/0582 →