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
OG exemplary drawing
 
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.