IP Library Granted Patent US 9,137,166
Granted Patent B2
US 9,137,166 · App. 12/695,401 · Granted Sep 15, 2015

In-order traffic aggregation with reduced buffer usage

Inventors: Daniel Sangyoung Lee (San Jose, CA); Yuen Fai Wong (San Jose, CA)
Assignee: BROCADE COMMUNICATIONS SYSTEMS, INC.
H04L47/34
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 9,137,166
App. No.
12/695,401
Granted
Sep 15, 2015
Kind
B2
Abstract

One embodiment provides a system that performs in-order traffic aggregation from a number of low-speed ports to a high-speed port. During operation, the system receives at a low-speed port a packet, stores it in a store-and-forward FIFO associated with the low-speed port, extracts a sequence number associated with the stored packet, and stores the extracted sequence number in a sequence-number FIFO associated with the low-speed port. The system further generates an expected sequence number, which maintains a linear order with respect to sequence numbers associated with previously forwarded packets, and determines whether a front end of the sequence-number FIFO matches the expected sequence number. If so, the system removes the front end of the sequence-number FIFO buffer, retrieves a packet associated with it, forwards the retrieved packet on the high-speed port, and updates the expected sequence number by adding 1 to the packet number of the retrieved packet.

Claims (61)

1. A method comprising:

storing a plurality of received packets in a set of packet buffers;

converting a bit width of the received packets to a higher bit width;

identifying runt packets and flow-control packets from the received packets;

extracting packet sequence numbers and a sequence number valid bit from the received packets; and

in response to no sequence number matching an expected sequence number and a timeout event, removing a head entry having a smallest sequence-number value from a set of sequence number buffers.

2. The method of claim 1 , wherein the timeout event comprises at least one of the following events:

a waiting time exceeds a predetermined amount; and

a buffer exceeds a predetermined threshold.

3. The method of claim 1 , further comprising:

in response to a received packet containing an error, forwarding the received packet; and

keeping the expected sequence number unchanged.

4. The method of claim 3 , wherein the error includes at least one of:

an invalid sequence number;

a packet header checksum error;

a sequence number parity error; and

a sequence number smaller than the expected sequence number.

5. The method of claim 1 , further comprising:

in response to receiving a flow-control packet, forwarding the received flow-control packet; and

keeping the expected sequence number unchanged.

6. The method of claim 5 , wherein forwarding the received flow-control packet is performed in a round-robin fashion among a number of input ports.

7. The method of claim 1 , further comprising determining whether an end-of-frame (EOF) field associated with a particular packet is received, and wherein storing a sequence number of the particular packet occurs after the EOF field is received.

8. The method of claim 1 , further comprising storing the sequence numbers associated with the received packets in the set of sequence-number buffers.

9. The method of claim 1 , further comprising generating the expected sequence number based on a previously forwarded packet.

10. The method of claim 1 , further comprising determining whether a match exists between head entries of the set of sequence-number buffers and the expected sequence number.

11. The method of claim 1 , further comprising:

retrieving a packet corresponding to the removed head entry from a corresponding packet buffer; and

forwarding the retrieved packet.

12. A system comprising:

a set of packet buffers configurable to store a plurality of received packets,

a packet parser operable to:

convert a bit width of the received packets to a higher bit width;

identify runt packets and flow-control packets from the received packets; and

extract packet sequence numbers and a sequence number valid bit from the received packets; and

a sequence-number managing module operable to, in response to no sequence number matching an expected sequence number and a timeout event, remove a head entry having a smallest sequence-number value from a set of sequence-number buffers.

13. The system of claim 12 , wherein the timeout event comprises at least one of the following events:

a waiting time exceeding a predetermined amount; and

a buffer exceeding a predetermined threshold.

14. The system of claim 12 , further comprising a packet forwarding module, wherein, in response to a received packet containing an error, the packet forwarding module is operable to forward the received packet while the expected sequence number is kept unchanged.

15. The system of claim 14 , wherein the error includes at least one of:

an invalid sequence number;

a packet header checksum error;

a sequence number parity error; and

a sequence number smaller than the expected sequence number.

16. The system of claim 12 , further comprising a packet forwarding module, wherein, after a flow-control packet is received, the packet forwarding module is operable to forward the received flow-control packet while the expected sequence number is kept unchanged.

17. The system of claim 16 , wherein the packet forwarding module is operable to forward the received flow-control packet in a round-robin fashion among a number of input ports.

18. The system of claim 12 , further comprising a sequence-number buffer operable to store a packet-sequence number after an end-of-frame field is received.

19. The system of claim 12 , further comprising the set of sequence-number buffers operable to store the sequence numbers associated with the received packets.

20. The system of claim 12 , further comprising a sequence-number generation module operable to generate the expected sequence number based on a previously forwarded packet.

21. The system of claim 12 , further comprising a determination module operable to determine whether a match exists between head entries of the set of sequence-number buffers and the expected sequence number.

22. The system of claim 12 , further comprising a packet forwarding module operable to:

retrieve a packet corresponding to the removed head entry from a corresponding packet buffer; and

forward the retrieved packet.

23. A switching means, comprising:

a packet buffering means for storing a plurality of received packets in a set of packet buffers;

a packet-parsing mechanism for:

converting a bit width of the received packets to a higher bit width;

identifying runt packets and flow-control packets from the received packets; and

extracting packet sequence numbers and a sequence number valid bit from the received packets; and

a sequence-number managing means for removing a head entry having a smallest sequence-number entry from a set of sequence-number buffers in response to no sequence number matching an expected sequence number and a timeout event.

24. The means of claim 23 , further comprising a sequence-number generating means for generating the expected sequence number based on previously forwarded packets.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2010
From: LEE, DANIEL SANGYOUNG; WONG, YUEN FAI
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 024017/0172 →
Continuity (1)
Related Publication 20110182294A1 · Jul 28, 2011