| US 7,480,308 B1 | ||
| Distributing packets and packets fragments possibly received out of sequence into an expandable set of queues of particular use in packet resequencing and reassembly | ||
| Earl T. Cohen, Fremont, Calif. (US); John Andrew Fingerhut, Campbell, Calif. (US); and John J. Williams, Jr., Pleasanton, Calif. (US) | ||
| Assigned to Cisco Technology, Inc., San Jose, Calif. (US) | ||
| Filed on Mar. 29, 2004, as Appl. No. 10/812,207. | ||
| Int. Cl. H04L 12/56 (2006.01) | ||
| U.S. Cl. 370—412 [709/238] | 24 Claims |

| 1. A method for reassembling a packet, the packet when reassembled includes a plurality of packet fragments with each packet
fragment identified with a position within the packet, the method comprising:
maintaining a plurality of queues;
enqueuing the plurality of packet fragments in a plurality of the plurality of queues, and
retrieving the plurality of packet fragments from the plurality of packet queues based on indications added to a data structure
identifying the order of the plurality of packet fragments to produce the packet;
wherein said operation of enqueuing the plurality of packet fragments in the plurality of the plurality of queues includes,
for each particular packet fragment of the plurality of packet fragments: identifying a particular queue of the plurality
of queues such that no already queued packet fragment of the packet in the particular queue comes after the particular packet
fragment in the packet, wherein said identifying the particular queue for the particular packet fragment includes checking,
at least when the particular queue is not empty, that the particular queue does not include a packet fragment which comes
after the particular packet fragment in the packet; enqueuing the particular packet fragment at the end of the particular
queue; and updating the data structure to include an indication of the particular queue in relation to the position of the
particular packet fragment in the packet.
|