IP Library Granted Patent US 8,218,546
Granted Patent B2
US 8,218,546 · App. 11/598,116 · Granted Jul 10, 2012

Interleaved processing of dropped packets in a network device

Assignee: Broadcom Corporation
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 8,218,546
App. No.
11/598,116
Granted
Jul 10, 2012
Kind
B2
Abstract

A network device for processing packets includes at least one ingress module for performing switching functions on a packet, a memory management unit for storing the packet and at least one egress module for transmitting the packet to at least one port. The at least one egress module is configured to maintain multiple queues for the at least one port, including a purge queue, and to store the packet in the purge queue when an error condition is determined when the end of the packet is received by the at least one ingress module.

Claims (62)

1. A network device for processing packets, the network device comprising:

at least one ingress module configured to receive at least one packet;

a memory management unit configured to store a received packet; and

at least one egress module configured to enqueue a stored packet within at least one of a plurality of queues, wherein each of the at least one egress module(s) includes a plurality of queues comprising:

a plurality of class of service queues each associated with a class of service and each configured to indicate an order in which packets are to be transmitted from the class of service queue, and

a purge queue configured to indicate packets which have been stored by the memory management unit and have also been marked as purged before being enqueued within the at least one of a plurality of queues; and

wherein the at least one egress module is also configured to

transmit a packet enqueued within one of the plurality of class of service queues, but not the purged queue, to at least one port.

2. The network device according to claim 1 , wherein the at least one ingress module is configured to divide the packet into cells and at least some of the cells are stored in the purge queue in response to an error condition being determined.

3. The network device according to claim 1 , wherein the at least one egress port is configured to store portions from a middle or an end of the packet in the purge queue in response to error condition being determined.

4. The network device according to claim 1 , wherein the memory management unit is configured to, if a late purge condition occurs for the received packet, not store the portions of the received packet received after the late purge condition, and marked as purged any portions stored by the memory management unit prior to the late purge condition.

5. The network device according to claim 1 , wherein the at least one egress module is configured to:

select a class of service queue in which to enqueue the stored packet based upon the class of service associated with the stored packet;

determine if a threshold associated with the selected class of service queue would be exceeded if the stored packet was enqueued within the selected class of service queue;

if the threshold would not be exceeded, enqueue the stored packet within the selected class of service queue; and

if the threshold would be exceeded, enqueue the stored packet within the purge queue.

6. The network device according to claim 5 , wherein the memory management unit is configured to, if the received packet includes a multicast packet,

determine if one or more egress modules associated with the received multicast packet can enqueue the packet within at least one of the egress modules' respective plurality of class of service queues, and

if so, store the received multicast packet; and

wherein each of the egress modules are configured to enqueue the received multicast packet to the egress module's purge queue, if the respective egress module is associated with the received multicast packet but cannot enqueue the packet within at least one of the egress module's respective plurality of class of service queues.

7. The network device according to claim 1 , wherein the at least one egress module is configured to store at least a portion of the packet in the purge queue when a Cyclic Redundancy Check (CRC) error condition or a Maximum Transmission Unit (MTU) error condition is determined when the end of the packet is received by the at least one ingress module.

8. A method for processing packets in a network device, the method comprising:

parsing a packet into cells;

determining an egress port for the packet;

storing at least one of the cells of the packet in a memory;

determining if an error condition exists that is associated with the packet; and

enqueuing the stored cells within one of a plurality of queues included by the egress port, wherein the plurality of queues includes:

a plurality of class of service queues each associated with a class of service and each configured to indicate an order in which enqueued cells are to be transmitted from the class of service queue, and

a purge queue configured to indicate cells which have been stored in the memory and have also been marked as purged before being enqueued within the at least one of a plurality of queues.

9. The method according to claim 8 , wherein enqueuing the stored cells comprises enqueuing cells from a middle or an end of the packet in the purge queue when the error condition is determined after one or more cells from a beginning of the packet have already been enqueued within one of the class of service queues.

10. The method according to claim 8 , further comprising:

transmitting cells, that are not marked as purged and are enqueued within the class of service queues, in the order indicated to another network device; and

not transmitting cells enqueued within the purge queue but instead returning the cells to a free pool memory and updating counters related to memory use.

11. The method according to claim 8 , wherein enqueuing the stored cells within one of a plurality of queues includes:

selecting a class of service queue in which to enqueue the stored cells based upon the class of service associated with the stored cells;

determining if a threshold associated with the selected class of service queue would be exceeded if the stored cells were enqueued within the selected class of service queue;

if the threshold would not be exceeded, enqueuing the stored cells within the selected class of service queue; and

if the threshold would be exceeded, enqueuing the stored cells within the purge queue.

12. The method according to claim 8 , wherein determining when an error condition exists comprises determining the existence of a Cyclic Redundancy Check (CRC) error condition or a Maximum Transmission Unit (MTU) error condition when the end of the packet is received.

13. The method according to claim 8 , wherein storing at least one of the cells of the packet in a memory comprises:

storing one or more cells of the packet before after an error condition is determined; and

not storing a remaining portion of the packet after the error condition is determined.

14. The method according to claim 8 , further comprising setting a purge bit when the error condition is determined to exist.

15. An apparatus for processing packets in a network device, the apparatus comprising:

parsing means for parsing a packet into cells;

transmitting means for transmitting the packet to a destination network device;

storing means for storing at least one of cells of the packet;

determining means for determining if an error condition exists that is associated with the packet; and

enqueuing means for enqueuing the stored cells within one of a plurality of queues associated with the transmitting means;

wherein the plurality of queues includes:

a plurality of class of service queues each associated with a class of service and each configured to indicate an order in which enqueued cells are to be dis-enqueued from the class of service queue and transmitted to the destination network device, and

a purge queue configured to indicate cells which have been stored by the storing means and have also been marked as purged before being enqueued within the at least one of a plurality of queues.

16. The apparatus according to claim 15 , wherein the enqueuing means is configured to enqueue cells from a middle or an end of the packet in the purge queue when the error condition is determined after one or more cells from a beginning of the packet have already been enqueued within one of the class of service queues.

17. The apparatus according to claim 16 , further comprising freeing means for returning the cells to a free pool memory and updating counters related to memory use as cells are dis-enqueued from the purge queue.

18. The apparatus according to claim 15 , wherein the enqueuing means is configured to:

select a class of service queue in which to enqueue the stored cells based upon the class of service associated with the stored cells;

determine if a threshold associated with the selected class of service queue would be exceeded if the stored cells were enqueued within the selected class of service queue;

if the threshold would not be exceeded, enqueue the stored cells within the selected class of service queue; and

if the threshold would be exceeded, enqueue the stored cells within the purge queue.

19. The apparatus according to claim 15 , wherein the determining means is configured to determine if a Cyclic Redundancy Check (CRC) error condition or a Maximum Transmission Unit (MTU) error condition exists when the end of the packet is received.

20. The apparatus according to claim 15 , wherein the storing means is configured to, if a error condition occurs for the packet occurs after at least one cell of the packet has been stored, not store the portions of the received packet received after the error condition, and marked as purged any portions stored by the storing means prior to the occurrence of the error condition; and

wherein enqueuing means is configured to enqueue cells marked as purged to the purge queue.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 09/05/2018 PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0133. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0456 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0133 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 11, 2006
From: OPSASNICK, EUGENE
To: BROADCOM CORPORATION
Reel/Frame 018569/0274 →
Continuity (3)
Provisional Application 60735179 · Nov 10, 2005
Provisional Application 60772887 · Feb 14, 2006
Related Publication 20070104211A1 · May 10, 2007