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 |
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
![]() and
![]() 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.
|