US 7,321,590 B2
Methods for aggregating cells transported in a bonded group
Song Zhang, Kanata (Canada); Andrew Deczky, Ottawa (Canada); Morteza Ghodrat, Kanata (Canada); and Nestor Amaya, Kanata (Canada)
Assigned to CIENA Corporation, Linthicum, Md. (US)
Filed on Jan. 15, 2005, as Appl. No. 11/36,899.
Claims priority of application No. 2,455,303 (CA), filed on Jan. 16, 2004.
Prior Publication US 2005/0201379 A1, Sep. 15, 2005
Int. Cl. H04L 12/28 (2006.01)
U.S. Cl. 370—395.1  [370/394; 370/392; 370/412] 9 Claims
OG exemplary drawing
 
1. A method of aggregating cells in a communication system employing asynchronous transfer mode (ATM) bonding, wherein a stream of cells is split among a plurality of member links in a bonding group and sequence numbers are attached to cell headers, comprising the steps of:
a) based on the attached sequence numbers, writing received cells from member links into a current aggregation buffer at addresses specified by the sequence numbers, wherein a size of the current aggregation buffer is greater than or equal to L1+L2, in which

OG Complex Work Unit Drawing
 and

OG Complex Work Unit Drawing
 and a profile of the data rates of the member links of the bonding group is given by {R1, R2, . . . , Rm}, a data rate ratio profile normalized by R1 is given by {1, r2, . . . , rm}, and a maximum differential delay is given by d;
b) if a location at a sequence number in the current aggregation buffer is filled, writing a received cell into a next aggregation buffer at an address specified by the sequence number, wherein a size of the next aggregation buffer is greater than or equal to L1+L2;
c) initializing a write pointer to point to a predetermined location in the current aggregation buffer;
d) examining a location in at least one of the current and next aggregation buffers at an address specified by the write pointer, and if the location examined is not empty, reading out a cell stored at the location examined to a reconstructed cell stream, marking the location examined as empty, and incrementing the write pointer;
e) repeating step d) until the write pointer points to an empty location;
f) reading out the current aggregation buffer when the next aggregation buffer's location X, wherein X≧L2, is filled, and subsequently swapping the current and next aggregation buffers; and
if a location in the current aggregation buffer is left unfilled when the buffer is read out, reading out the cells in the buffer starting at the write pointer.