IP Library Granted Patent US 9,438,527
Granted Patent B2
US 9,438,527 · App. 13/901,345 · Granted Sep 6, 2016

Flexible queues in a network switch

Inventors: Michael Shamis (Netanya, IL); Youval Nachum (Holon, IL)
Assignee: MARVELL WORLD TRADE LTD.
H04L47/58H04L49/103H04L49/3036
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,438,527
App. No.
13/901,345
Filed
May 23, 2013
Granted
Sep 6, 2016
Kind
B2
Art Unit
2472
USPC
370/225
Abstract

In an apparatus for receiving and forwarding data packets on a network, a network device includes a plurality of ports for coupling to the network and for transmitting packets to devices disposed in or coupled to the network. At least one processor configured to process packets received via the network processes packets by selectively forwarding processed packets to one or more of the ports. A plurality of queues are defined in a memory, each configured to store packets to be transmitted by ports in the plurality of ports. A queue manager is configured to selectively assign a subset of the plurality of queues to a subset of the plurality of ports.

Claims (87)

1. A network device comprising:

a plurality of ports for coupling to a network and for transmitting packets to other devices disposed in or coupled to the network;

at least one processor configured to process packets received via the network, the processing including determining, based at least in part on destination information included in the packets, one or more ports, of the plurality of ports, via which the processed packets are to be transmitted from the network device;

a plurality of queues defined in a memory, the plurality of queues configured to store packets to be transmitted by ports among the plurality of ports; and

a queue manager configured to selectively assign a subset of the plurality of queues to a subset of the plurality of ports, including storing, in a memory, queue assignment information that indicates which queues are selectively assigned to which ports; and

the network device being configured to, based on (i) the determinations of the one or more ports via which processed packets are to be transmitted from the network device and (ii) the queue assignment information, direct processed packets to one or more queues of corresponding ports to transmit the processed packets to the other devices.

2. The network device of claim 1 , wherein the queue manager is configured to store, in the memory, at least one of the following data structures used by the queue manager to direct data packets to queues and/or ports of the network device:

(i) a port-to-queue table to configurably define which queues are assigned to each port;

(ii) a queue-to-port table to configurably define which port is associated with each queue;

(iii) a queue-to-port-group table to configurably define which port group is associated with each queue; and

(iv) a queue priority table to configurably define a priority associated with each queue.

3. The network device of claim 1 , wherein the queue manager is configured to select the subset of ports to exclude one or more defective one of the plurality of ports.

4. The network device of claim 1 , wherein the queue manager is configured to select the subset of queues to exclude at least one defective one of the plurality of queues.

5. The network device of claim 1 , wherein the queue manager is configured to select the subset of ports to exclude a port coupled to a defective serializer-deserializer functional block.

6. The network device of claim 1 , wherein the at least one processor comprises a packet processor that includes the queue manager.

7. A network device comprising:

a plurality of ports configured to (i) couple the network device to a network and (ii) transmit packets to other devices disposed in or coupled to the network;

a plurality of port profiles, each port profile corresponding to one of the plurality of ports and indicating a feature of packet traffic destined for the port or a feature of a device coupled to the port;

at least one processor configured to process packets received from the network, the processing including determining, based at least in part on destination information included in the packets, one or more ports, of the plurality of ports, via which the processed packets are to be transmitted from the network device;

a plurality of queues defined in a memory, the plurality of queues configured to store packets to be transmitted by ports among the plurality of ports; and

a queue manager responsive to the port profiles and arranged to

configurably assign to each of the plurality of ports one or more of the plurality of queues according to the port profile corresponding to the port, including storing, in a memory, queue assignment information that indicates which queues are configurably assigned, by the queue manager, to which ports, and

the network device being configured to, based on (i) the determinations of the one or more ports via which processed packets are to be transmitted from the network device and (ii) the queue assignment information, direct processed packets to one or more queues of corresponding ports to transmit the processed packets to the other devices.

8. The network device of claim 7 , wherein the queue manager is configured to store, in the memory, at least one of the following data structures used by the queue manager to direct data packets to queues and/or ports of the network device:

(i) a port-to-queue table to configurably define which queues are assigned to each port;

(ii) a queue-to-port table to configurably define which port is associated with each queue;

(iii) a queue-to-port-group table to configurably define which port group is associated with each queue; and

(iv) a queue priority table to configurably define a priority associated with each queue.

9. The network device of claim 7 , wherein the queue manager comprises a queue processor configured to allocate queues to ports according to any one or more of the following aspects of a port profile:

(i) a specified flow or protocol;

(ii) a specified traffic type;

(iii) a specified multi-tenant configuration profile; and

(iv) a specified quality of service (QoS).

10. A network device comprising:

a plurality of ports configured to (i) couple to a network, (ii) receive packets via the network, and (iii) transmit packets via the network;

at least one processor configured to process packets received via the network, the processing including selectively forwarding received packets to one or more of the ports for transmission via the network;

a plurality of queues defined in a memory, the plurality of queues configured to store packets to be transmitted via the network; and

a queue manager configured to (i) intercept a congestion notification sent to an upstream device in or coupled to the network from a downstream device in or coupled to the network and, (ii) mitigate congestion according to the intercepted congestion notification by (a) allocating one or more additional queues to a port or (b) modifying a queue length of a queue.

11. The network device of claim 10 , wherein the queue manager is configured, in response to the intercepted congestion notification, (i) to assign one of the plurality of queues to a port associated with the downstream device, and (ii) to perform a shaping operation on a flow of packets received from the upstream device and destined for the downstream device.

12. The network device of claim 10 , wherein the queue manager comprises at least one of the following data structures used by the queue manager to direct data packets to queues and/or ports of the network device:

(i) a port-to-queue table to configurably define which queues are assigned to each port;

(ii) a queue-to-port table to configurably define which port is associated with each queue;

(iii) a queue-to-port-group table to configurably define which port group is associated with each queue; and

(iv) a queue priority table to configurably define a priority associated with each queue.

13. The network device of claim 10 , wherein the queue manager is configured (i) to intercept a layer 2 congestion notification sent to an upstream device from a downstream device, and (ii) to perform a queue modification action for mitigating congestion according to the intercepted layer 2 congestion notification.

14. A method of configuring a network device, the method comprising:

configuring a plurality of ports to transmit network packets to other devices disposed in or coupled to a network to which the ports are or will be connected;

configuring at least one processor to process packets received via the network, the processing including determining, based at least in part on destination information included in the packets, one or more ports, of the plurality of ports, via which the processes packets are to be transmitted from the network device;

defining in a memory a plurality of queues;

configuring the plurality of queues to store packets to be transmitted;

selectively assigning, with a queue manager, a subset of the plurality of queues to a subset of the plurality of ports, including storing, in a memory, queue assignment information that indicates which queues are selectively assigned to which ports, so that the network device can, based on (i) the determinations of the one or more ports via which processed packets are to be transmitted from the network device and (ii) the queue assignment information, direct processed packets to one or more queues of corresponding ports to transmit the processed packets to the other devices.

15. The method of claim 14 , further comprising selecting the subset of ports to exclude at least one defective one of the plurality of ports.

16. The method of claim 14 , further comprising selecting the subset of queues to exclude at least on defective one of the plurality of queues.

17. The method of claim 14 , further comprising selecting the subset of ports to exclude a port coupled to a defective serializer-deserializer functional block.

18. The method of claim 14 , wherein selectively assigning the subset of the plurality of queues to the subset of the plurality of ports comprises setting values in one or more of the following data structures specifying relationships between queues and ports of the network device:

(i) a port-to-queue table configurably defining which queues are assigned to each port;

(ii) a queue-to-port table configurably defining which port is associated with each queue;

(iii) a queue-to-port-group table configurably defining which port group is associated with each queue; and

(iv) a queue priority table configurably defining a priority associated with each queue.

19. A method of operating a network device, the method comprising:

selecting, with a queue manager, from a pool of available queues a subset of queues to associate with a particular port of the network device;

assigning, with the queue manager, the selected subset of queues to the particular port, including storing, in a memory, queue assignment information that indicates that the subset of queues are assigned to the port;

receiving packets at ports of the network device;

determining, in a forwarding engine, one or more ports to which each of the received packets should be forwarded; and

queuing each packet in a queue according, at least in part, to the corresponding determination of the one or more ports to which the packet should be forwarded, including using (i) the determination of the one or more ports to which the packet should be forwarded and (ii) the queue assignment information to direct packets, determined by the forwarding engine to be forwarded to the port, to the subset of queues.

20. The method of claim 19 , wherein associating the subset of queues with the particular port comprises setting a value in one or more of the following data structures specifying relationships between queues and ports of the network device:

(i) a port-to-queue table configurably defining which queues are assigned to each port;

(ii) a queue-to-port table configurably defining which port is associated with each queue;

(iii) a queue-to-port-group table configurably defining which port group is associated with each queue; and

(iv) a queue priority table configurably defining a priority associated with each queue.

21. The method of claim 19 , wherein selecting from a pool of available queues a subset of queues to associate with a port comprises making a decision according to any one or more of the following aspects:

(i) a specified flow or protocol;

(ii) a specified traffic type;

(iii) a specified multi-tenant configuration profile; and

(iv) a specified quality of service (QoS).

22. A method of operating a network device having a plurality of ports coupled to a network, the method comprising:

processing packets received from the network to selectively forward the received packets to one or more of the ports for transmission;

storing the received packets in a plurality of queues, the queues defined in a memory and configured to store packets to be transmitted via the network;

intercepting a congestion notification sent to an upstream device disposed in or coupled to the network from a downstream device disposed in or coupled to the network; and

performing in a queue manager, according to the intercepted congestion notification, a queue modification action including (a) allocating one or more additional queues to a port or (b) modifying a queue length of a queue.

23. The method of claim 22 , wherein performing a queue modification action comprises (i) assigning one of the plurality of queues to a port associated with the downstream device and (ii) performing a shaping operation on a packet flow received from the upstream device and destined for the downstream device.

24. The method of claim 22 , wherein performing a queue modification action comprises setting a value in any one or more of the following data structures specifying relationships between queues and ports of the network device:

(i) a port-to-queue table configurably defining which queues are assigned to each port;

(ii) a queue-to-port table configurably defining which port is associated with for each queue;

(iii) a queue-to-port-group table configurably defining which port group is associated with each queue; and

(iv) a queue priority table configurably defining a priority associated with each queue.

25. The method of claim 22 , wherein intercepting a congestion notification comprises intercepting a layer 2 congestion notification sent to the upstream device from the downstream device.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2013
From: MARVELL INTERNATIONAL LTD.
To: MARVELL WORLD TRADE LTD
Reel/Frame 030931/0252 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2013
From: MARVELL ISRAEL (M.I.S.L) LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 030932/0918 →
LICENSE Recorded Aug 2, 2013
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 030931/0258 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2013
From: SHAMIS, MICHAEL; NACHUM, YOUVAL
To: MARVELL ISRAEL (M.I.S.L) LTD.
Reel/Frame 030932/0836 →
Continuity (3)
Provisional Application 61651227 · May 24, 2012
Provisional Application 61825182 · May 20, 2013
Related Publication 20130315054A1 · Nov 28, 2013