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.
|
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.
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.
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.
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.
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.
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.
2. The network device of
(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
4. The network device of
5. The network device of
6. The network device of
8. The network device of
(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
(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).
11. The network device of
12. The network device of
(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
15. The method of
16. The method of
17. The method of
18. The method of
(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.
20. The method of
(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
(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).
23. The method of
24. The method of
(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
|
The present application claims the benefit of U.S. Provisional Application No. 61/651,227, entitled “Flexible Queues,” filed on May 24, 2012, and U.S. Provisional Application No. 61/825,182, also entitled “Flexible Queues,” filed May 20, 2013, the entire disclosures of which are hereby incorporated by reference herein in their entireties and for all purposes.
The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.
Network devices such as network switches, routers, edge devices, and the like often employ store and forward architectures in which received packets are queued in memory in the network device—for example, but not only, for scheduling—for subsequent transmission from the network device. Such network devices typically perform traffic “shaping” by storing packets corresponding to different subscribers, or to packets having different priorities, in separate queues, and independently controlling transmission of packets stored in each of the queues. With growing numbers of subscribers and growing numbers of services offered to subscribers, such network devices need to support, for example, flexible provision and assignment of queues to switch ports.
In one embodiment, a network device includes a plurality of ports for coupling to a network and for transmitting packets to devices disposed in or coupled to the network. The network device also includes at least one processor configured to process packets received via the network, which processing includes selectively forwarding processed packets to one or more of the ports. The network device further includes a plurality of queues defined in a memory. The plurality of queues is configured to store packets to be transmitted by ports in the plurality of ports. A queue manager in the network device is configured to selectively assign a subset of the plurality of queues to a subset of the plurality of ports.
In another embodiment, a network device includes a plurality of ports configured to (i) couple the network device to a network and (ii) transmit packets to devices disposed in or coupled to the network. The device also includes a plurality of port profiles. Each port profile corresponds to one of the plurality of ports and indicates a feature of packet traffic destined for the port or a feature of a device coupled to the port. Further, the network device includes at least one processor configured to process packets received from the network. The processing includes selectively forwarding processed packets to one or more of the ports. A plurality of queues is defined in a memory of the network device. The plurality of queues is configured to store packets to be transmitted by ports in the plurality of ports. The network device also includes 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.
In still another embodiment, a network device includes a plurality of ports configured to (i) couple to a network, (ii) receive packets via the network, and (iii) transmit packets via the network. The network device includes at least one processor configured to process packets received via the network. The processing includes selectively forwarding received packets to one or more of the ports for transmission via the network. A plurality of queues is defined in a memory of the network device. The plurality of queues is configured to store packets to be transmitted via the network. The network device further includes 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.
In yet another embodiment, a method of configuring a network device includes configuring a plurality of ports to transmit network packets to devices disposed in or coupled to a network to which the ports are or will be connected, and configuring at least one processor to process packets received via the network, the processing including selectively forwarding processed packets to one or more of the ports. The method also includes defining in a memory a plurality of queues, configuring the plurality of queues to store packets to be transmitted, and configuring a queue manager to selectively assign a subset of the plurality of queues to a subset of the plurality of ports.
In another embodiment, a method of operating a network device includes receiving packets at ports of the network switch and determining, in a forwarding engine, one or more ports to which each of the received packets should be forwarded. The method also includes 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. Further, the method includes selecting from a pool of available queues a subset of queues to associate with a port, and associating the selected subset of queues with the port.
In still another embodiment, a method of operating a network device having a plurality of ports coupled to a network includes processing packets received from the network to selectively forward the received packets to one or more of the ports for transmission and 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. The method includes 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.
In embodiments described below, a network switch receives packets from an upstream device and forwards the packets to a downstream device. The packets are forwarded according to the type of information included in the packet and/or according to the protocol embodied by the packet. Packets are queued for transmission to downstream devices according to the type of packet and/or protocol, and/or according to the priority of the packet, such that packets related to real-time or near-real time communications are transmitted before packets that are not related to data that is highly time-sensitive. The packets are queued and/or prioritized so as to limit network congestion on particular ports, downstream devices, networks, and the like, in embodiments. The network switch includes a queue manager that, among other things, configurably assigns and/or couples available queues to ports of the network switch.
The methods and apparatus described herein facilitate the increasing and/or decreasing of the number of queues associated with and coupled to each port (or port group) of a network switch. The additional flexibility, in turn, facilitates implementation of extended priority schemes such as that described in U.S. patent application Ser. No. 13/894,952 entitled “Extended Priority for Ethernet Packets”, as well as the Differentiated Services Code Point (DSCP) architecture and other queuing strategies. For example, where prior network switches generally support a maximum of eight queues per port, the presently described methods and apparatus can provide more than eight queues per port. In embodiments, for example, a network switch can be configured via the queue manager to assign 64 (or any other number of available queues) queues per port. In such embodiments, each of 64 quality of service (QoS) profiles on a network can be mapped directly to a particular queue for each port. As another example, the implementation of the queue manager described herein allows the network switch to support (or better support) a multi-tenant environment having, for example, eight tenant profiles each having eight queues.
In embodiments, the queue manager configurably couples available queues to a number of ports upon initial configuration of the device according to, for example, the number of available queues and the number of ports activated in the switch and, thereafter, the queues assigned to each of the ports remain fixed for the lifetime of the device. In other embodiments, the queue manager configurably assigns and/or couples available queues to ports of the network switch according to one or more conditions during the operation of the network switch and, for example, assigns and couples available queues to ports of the network switch according to traffic network traffic congestion conditions. In still other embodiments, the queue manager configurably assigns and couples available queues to ports of the network switch according to a configuration routine that facilitates configuration of the network switch, for example, by a network administrator configuring the network switch to assign available queues to ports according to a traffic type associated with each port, for example. Details of these and other embodiments will be described below.
The network switch 100 includes a packet processor 102 coupled to a plurality of ports such as ingress ports 104 (also referred to herein as receive (RX) ports) and egress ports 106 (also referred to herein as transmit (TX) ports). In general, the packet processor 102 is configured to process packets received via ingress ports 104, to determine respective egress ports 106 via which the packets should be transmitted, and to transmit the packets via the determined egress ports 106. In at least some embodiments, the packet processor 102 is configured to receive a packet at an ingress port 104, to store the packet in a memory, to perform processing of the packet while the packet is stored in the memory, to determine one or more egress ports 106 via which the packet should be transmitted, and, after making the forwarding decision, to retrieve the packet from the memory and transmit the packet via the one or more egress ports 106. The packet processor 102 includes an ingress processing unit 108 that generally performs initial processing of packets that ingress via the ports 104. In embodiments, the ingress processing unit 108 generates a packet descriptor for the packet, and the packet descriptor, rather than the packet itself, is subsequently processed by the packet processor 102. A packet descriptor includes some information from the packet, such as some or all of the header information of the packet, in an embodiment. In some embodiments, the packet descriptor additionally includes other information such as an indicator of where in the memory the packet is stored. For ease of explanation, the term “packet” hereinafter is used to refer to a packet itself or to a packet descriptor associated with the packet.
The ingress processing unit 108 (and an egress processing unit (not shown) each include one or more processing units (not seen in
The ingress processing unit 108 includes a packet classifier (not shown), in embodiments, that classifies each received packet based on one or more parameters associated with or determined for the packet, and assigns to the packet a particular traffic class and/or a particular data flow. Different data flows or different traffic classes are associated with different types of packets, for example, in an embodiment. For example, different data flows are defined for different subscribers and/or for different services (e.g., different applications) utilized by the subscribers, in some embodiments. The network switch 100 then independently manages the data flows, for example to ensure that services (e.g., real time services, bandwidth provisioned services, QoS services, etc.) provided to subscribers conform to service level agreements (SLAs) between service providers and their customers and to generally efficiently utilize the overall bandwidth of the network device 100, in an embodiment. For example, in an embodiment, the network switch 100 assigns different data flows different priority levels based on, for example the services to which the data flows correspond, and independently manages the data flows to transmit higher priority traffic with less delay than lower priority traffic.
In some embodiments, priority information is used to implement quality of service (QoS) during egress processing (e.g., egress traffic management) in the network switch 100. In an embodiment, a different priority is assigned to a packet or to a flow of which the packet is a part to differentiate between applications, delay sensitivity, and/or QoS offerings, for example. For instance, in an embodiment, a network operator guarantees to provide a customer with a specified amount of bandwidth for the customer's applications and further agrees to supply a certain quality of service based upon the type of traffic. To support differentiated services, the packet processor 102 maintains one or more attributes such as a priority, a traffic class, etc. for each data packet. These values are set when the packet is received and are sometimes altered as the packet passes through the various processing stages, in an embodiment. In some embodiments, traffic class, priority, and/or various other packet attributes are included as part of a QoS profile that is assigned to the packet by various hardware or software modules (not shown) of ingress processing unit 108. The packet processor 102 maintains attributes for each packet received at an ingress (RX) port 104 (e.g., I0, I1, I2, . . . , Ik) and uses this information for managing egress of traffic from the network switch 100 during egress processing of the packet, such as to schedule transmission of the packet at an egress (TX) port 106 (e.g., E0, E1, E2, . . . , Em). Although
The packet processor 102 also includes a forwarding engine 110 coupling together the ingress ports 104 and the egress ports 106. Generally, the forwarding engine 110 receives packets from the ingress processing unit 108, determines an egress port 106 corresponding to a destination of each packet, and forwards each packet to appropriate egress port 106. In some embodiments, the forwarding engine 110 analyzes data in a header of the packet to determine via which port or ports 106 the packet should be transmitted. For example, the forwarding engine 110 analyzes one or more of a destination address (unicast, multicast, or broadcast), a virtual local area network (VLAN) tag, etc., in the packet. The forwarding engine 110 includes a forwarding database (not shown) that stores forwarding information for different destination addresses (e.g., media access control (MAC) addresses, Internet Protocol (IP) addresses, VLANs, multicast addresses, etc.). In an embodiment, the forwarding engine 110 includes a ternary content-addressable memory (TCAM) engine (not shown).
The forwarding engine 110 processes a packet, determining, based on source and destination information, the type of packet and/or protocols associated with the packet and/or data included in the packet, for example, a port 106 of the network switch 100 via which the packet should be transmitted. The forwarding engine 110 also sets a priority of the packet, in certain embodiments, allowing the packet to be enqueued (i.e., stored in a queue), according to the priority, in a corresponding one of a plurality of queues associated with a port 106 via which the packet will be transmitted. In other embodiments, the forwarding engine 110 (e.g., TCAM policy control logic (PCL)) specifies a particular queue for a packet, instead of specifying a port and/or a priority. For example, the TCAM PCL specifies that all packets associated with a particular traffic flow be enqueued in a corresponding queue. In any event, though
A queue manager 112 controls queuing operations of the network switch 100 including, in embodiments, enqueuing packets received from the forwarding engine 110. In embodiments, the queue manager 112 sets the number of queues per port, sets the priority of individual queues, and/or associates a queue with a port group (e.g., for multicast packets). The queue manager 112 is a configurable hardware element, in embodiments, operable to associate any number of queues (up to the number of queues available) with any one or more specific ports. The queue manager 112, in embodiments, is configurable at the time of device manufacture. In other embodiments, the queue manager 112 is dynamically configurable, during operation, to associate queues with ports according to present operating conditions (e.g., network conditions such as network congestion). In still other embodiments, the queue manager 112 is configurable to associate queues with ports according to a configurable port profile corresponding to each port. In any event, though
The queue processor 114, meanwhile, enqueues packets received from the forwarding engine 110. In embodiments, the queue processor 114 enqueues packets according, at least in part, to a port associated with the destination of the packet. The queue processor 114 determines the port associated with the destination of the packet by reading a destination port field in a packet or packet descriptor, for example. After determining an egress port 106 via which the packet will eventually be transmitted from the network switch 100, the queue processor 114 enqueues the packet (i.e., places the packet into one of the queues 118 in the queue pool 116). The queue processor 114 enqueues the packet according to a port-to-queue table 120, in embodiments. The port-to-queue table 120 is a configurable table that defines exactly which queues 118 are associated with a specific port. For example, an egress port 106 has allocated to it eight (8) queues of differing priority, in an embodiment. The port-to-queue table 120 defines, in some embodiments, the subset of queues 118 allocated to or associated with a particular egress port 106.
The queue processor 114, also enqueues packets according to a priority of a packet, in embodiments. That is, for a port 106 that has associated with it (in the port-to-queue table 120) multiple queues 118 of differing priority, the queue processor 114 enqueues packets according to the priority of each packet, enqueuing each packet in a queue 118 of corresponding priority.
The queue processor 114 determines which of the queues 118 correspond to particular priorities, in some embodiments, according to a configurable queue priority table 122. The queue priority table 122 is configured prior to operation of the network switch 100 in some embodiments, and configured during operation of the network switch 100 in other embodiments. For example, in embodiments in which the queue priority table 122 is configured prior to operation of the network switch 100, each of the queues 118 associated with a particular port 106 is assigned a corresponding priority, reflected in the queue priority table 122, and the queue processor 114 enqueues packets in the queues 118 according to the port and priority associated with each packet by referring to the port-to-queue table 120 and the queue priority table 122. In embodiments, the network switch 100 is configured as a reduced-functionality device, having a fewer number of active ports (and a different price point), for example, without requiring design and/or manufacture of an additional device. In embodiments, the network switch 100 is configured with a fewer number of active ports to increase yield by allowing the sale of devices having one or more dysfunctional ports or one or more ports coupled to defective serializer-deserializer blocks. As another example, in embodiments in which the queue priority table 122 is configured during operation of the network switch 100, the queue processor 114 (or another processor) modify the queue priority table 122 when an additional queue 118 becomes associated with a particular port 106, assigning a priority to the queue 118 and modifying the queue priority table 122 accordingly. Thereafter, the queue processor 114 enqueues packets according to the port and priority associated with each packet by referring to the port-to-queue table 120 and the queue priority table 122.
In embodiments, the forwarding engine 110 specifies for some packets forwarded to the queue processor 114 a particular queue or queues 118 of the queue pool 116 into which the queue processor 114 should enqueue the packet (“direct queuing”). When processing packets for which a specific queue 118 or set of queues 118 is specified by the forwarding engine 110, the queue processor 114 enqueues packets accordingly, without performing any further analysis or processing.
A scheduler module 124, retrieves packets from the queues 118 and forwards the packets to the ports 106. The scheduler 124 services the queues 118 in strict priority, in some embodiments, and/or in a weighted round robin (WRR) priority in other embodiments. The scheduler 124 is designed or configured to support the case(s) where queues 118 associated with a particular port 106 are not sequential. For example, consider the case where eight queues 118 are assigned to each of four ports 106. That is, queues 0-7 are assigned to port 0, queues 8-15 are assigned to port 1, queues 16-23 are assigned to port 2, and queues 24-31 are assigned to port 3. The scheduler 124 is designed or configured such that if, during operation of the network switch 100, the queue processor 114 assigns an additional queue (queue 32) to port 0, the scheduler 124 will still properly function. As another example, consider the case where the network switch 100 is preconfigured with eight queues 118 assigned to each of four ports 106, but the queues 118 assigned to each port 106 are not sequential because, for instance, one or more queues 118 are defective (e.g., because the device is defective) and cannot be used. In this case, the scheduler 124 must be able to function properly even though port 0 is assigned queues 0-4 and 6-8, for example. In one embodiment, the scheduler 124 is designed using a queue link-list implementation, such that a highest priority queue 118 is linked to or points to a queue 118 with the next highest priority, and so on.
The scheduler 124 services each of the queues 118 according to the queue priority table 122 and forwards packets from the queues 118 to the ports 106 according to a queue-to-port table 126 and/or according to a queue-to-port group table 128. Simply stated, the queue-to-port table 126 is a configurable table defining which port is associated with each queue. That is, for each queue 118, the queue-to-port table 126 specifies the port 118 via which packets enqueued are to be transmitted.
The queue manager 112 is configured to process multi-cast packets, in addition to unicast and broadcast packets, in embodiments. In an embodiment in which the queue manager 112 processes multi-cast packets, the queue processor 114 identifies incoming packets marked as multi-cast and enqueues each multi-cast packet in multiple ones of the queues 118, such that the multi-cast packet is enqueued in one queue 118 for each of the ports 106 via which it is to be multicast. In other embodiments, however, the queue processor 114 enqueues multicast packets into a queue 118 not associated with one particular port 106. Queues 118 that are not associated with a particular port 106 are referred to herein as “virtual queues.” Instead of being associated with a particular one of the ports 106, virtual queues are associated with a group of queues (e.g., a multicast group), in embodiments. The queue-to-port group table 128 is a configurable table defining which multicast group of ports 106 is associated with a particular virtual queue. In such embodiments, the queue processor 114 (or another processor) configures the port-to-port group table 128 to associate a group of ports 106 with a particular queue 118. The queue processor 114 (or another processor) also, in some embodiments, dynamically allocates and configures one of the queues 118 as a virtual queue.
In any event, the scheduler 124 directs packets from queues 118 to ports 106 according to the tables 122, 126, and/or 128.
As described above, the network switch 100 and, in particular, the queue manager 112, are configured at the time of manufacture and/or sale in some embodiments, providing static configurations that facilitate the sale of devices having the same design but a different number of ports 104 and 106 that are enabled and/or different numbers of queues 118 and/or different numbers of queues 118 assigned to each port 106.
In embodiments, the queue manager 112 is configured (e.g., by a network administrator configuring the network switch 100) to assign queues 118 from the queue pool 116 dynamically according to port profiles associated with each of the ports 106. For example, a first port may be configured as associated with an “end station” port profile, a second port may be configured as associated with an “VoIP” port profile, a third port may be configured as associated with “storage” port profile, and a fourth port may be configured as associated with a “switching element” port profile. Different applications require different numbers of ports for reasons related to the number of attached devices associated with an application and/or the bandwidth of the particular application, for example. Of course, these particular examples of port profiles are intended only as non-limiting examples. It should be understood that any number of different port profiles can be configured and that multiple ports can be associated with any one of the profiles. In but one example, multiple ports of a network switch 100 are coupled to end stations and, accordingly, each port coupled to an end station is associated with the “end station” port profile. In such embodiments, each port profile defines a number of queues 118 to be assigned to ports 106 associated with the port profile. For instance, turning back to the example above, the queue manager 112 assigns 8 queues to ports associated with the “end station” port profile or to ports associated with the “storage” profile, while the queue manager assigns only a single queue to ports associated with a “VoIP” profile and assigns the maximum number of queues to ports associated with the “switching element” port profile, for example.
The queue manager 112 is additionally or alternatively configured to support multi-tenancy, in embodiments. In one such embodiment, the queue manager 112 supports multi-tenancy in that a port profile associated with a port 106 of the network switch 100 indicates that the port is associated with a plurality of tenants on a downstream device. The port profile also indicates a same number of queues per tenant (i.e., that all tenant should receive twelve queues each) in one embodiment, and indicates individually for each tenant a number of queues (i.e., four queues for a first tenant, eight queues for a second tenant, eight queues for a third tenant, etc.) in another embodiment. The queue manager 112 operates in such embodiments to associate with the port 106 queues 118 for each of the tenants. For example, where the port 106 is associated with 8 tenants, the queue manager 112 assigns eight queues (or any other number of queues, as desired and/or available) to each of the tenants, in an embodiment.
In embodiments, the network switch 100 (
Referring still to
In another example, the flow logic 162 determines that a new data packet flow destined for the destination device 156, but having a different priority than the data packet flow 158 is being received at the network switch 150. The flow logic 162 sends a message to the queue processor 144 (
Turning now to
The queue processor 114 selects form the pool 116 of queues 118 a subset of the queues 118 to associate with a port 116 according to a port profile associated with the port 106 (block 280). The port profile relates, in an embodiment to a specified flow or protocol (e.g., to the VoIP protocol). In another embodiment, the port profile relates to a specified traffic type (e.g., storage network traffic). In yet another embodiment, the port profile relates to a multi-tenancy configuration. In still another embodiment, the port profile relates to a specified quality of service (e.g., ports configured for certain users/entities).
Having selected the subset of available queues 118, the queue processor 114 associates the selected subset of queues 118 with the port 106 (block 285). In embodiments, associating the selected subset of queues 118 with the port 106 includes setting a value in the port-to-queue table 120 that configurably defines which queues 118 are assigned to each port 106 and/or setting a value in the queue-to-port table 126 that configurably defines which port 106 is the destination for each queue 118 and/or setting a value in a queue-to-port group table 128 that configurably defines a group of ports 106 that are the destination for each queue 118 and/or setting a value in a queue priority table 122 that configurably defines a priority associated with each queue 118.
In response to the congestion notification, the queue manager 112 performs a queue modification action for mitigating congestion (block 320). In embodiments, the queue manager 112 performs a queue modification action by assigning an available (i.e., unallocated) one of the plurality of queues 118 to a port 106 associated with the downstream device 154 and performing a shaping operation on packets received from the upstream device 152 and destined for the downstream device 154. In other embodiments, the queue manager 112 performs a queue modification action by de-allocating an assigned one of the plurality of queues 118 from a port 106 associated with the downstream device 154. In still other embodiments, the queue manager 112 performs a queue modification action by modifying a queue length of a queue in response to the intercepted congestion notification. Performing a queue modification action can include setting a value in the port-to-queue table 120 that configurably defines which queues 118 are assigned to each port 106 and/or setting a value in the queue-to-port table 126 that configurably defines which port 106 is the destination for each queue 118 and/or setting a value in a queue-to-port group table 128 that configurably defines a group of ports 106 that are the destination for each queue 118 and/or setting a value in a queue priority table 122 that configurably defines a priority associated with each queue 118, in various embodiments.
While the principles of the disclosure have been described above in connection with specific apparatuses and methods, it is to be clearly understood that this description is made only by way of example and not as limitation on the scope of the invention. Additionally, at least some of the various blocks, operations, and techniques described above may be implemented in hardware, a processor or computer executing firmware and/or software instructions, or any combination thereof. The software or firmware instructions may include computer readable or machine readable instructions stored on a memory of another one or more computer readable or machine readable storage medium that, when executed by the processor, cause the processor to perform various acts. When implemented in hardware, the hardware may comprise one or more of discrete components, an integrated circuit, an application-specific integrated circuit, etc.
While the present invention has been described with reference to specific examples, which are intended to be illustrative only and not to be limiting of the invention, changes, additions and/or deletions may be made to the disclosed embodiments without departing from the scope of the invention.
Nachum, Youval, Shamis, Michael
Patent | Priority | Assignee | Title |
10608948, | Jun 07 2018 | Marvell Israel (M.I.S.L) Ltd. | Enhanced congestion avoidance in network devices |
10749803, | Jun 07 2018 | Marvell Israel (M.I.S.L) Ltd. | Enhanced congestion avoidance in network devices |
11929931, | Mar 18 2020 | Marvell Israel (M.I.S.L) Ltd. | Packet buffer spill-over in network devices |
11936569, | Nov 22 2017 | Marvell Israel (M.I.S.L) Ltd. | Hybrid packet memory for buffering packets in network devices |
9887929, | May 24 2012 | MARVELL INTERNATIONAL LTD; CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Flexible queues in a network switch |
Patent | Priority | Assignee | Title |
6351474, | Jan 14 1998 | SKYSTREAM NETWORKS INC | Network distributed remultiplexer for video program bearing transport streams |
7697422, | Jan 17 2006 | MARVELL ISRAEL M I S L LTD | Quality of service marking techniques |
20030058880, | |||
20040163084, | |||
20050207436, | |||
20070180188, | |||
20080259798, | |||
20100014428, | |||
20110182181, | |||
20120063316, | |||
20120063333, | |||
20130148654, | |||
20130308648, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
May 22 2013 | SHAMIS, MICHAEL | MARVELL ISRAEL M I S L LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030932 | /0836 | |
May 22 2013 | NACHUM, YOUVAL | MARVELL ISRAEL M I S L LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030932 | /0836 | |
May 23 2013 | Marvell World Trade Ltd. | (assignment on the face of the patent) | / | |||
Jul 22 2013 | MARVELL ISRAEL M I S L LTD | MARVELL INTERNATIONAL LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030932 | /0918 | |
Aug 01 2013 | MARVELL INTERNATIONAL LTD | Marvell World Trade Ltd | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030931 | /0252 | |
Aug 02 2013 | Marvell World Trade Ltd | MARVELL INTERNATIONAL LTD | LICENSE SEE DOCUMENT FOR DETAILS | 030931 | /0258 | |
Dec 31 2019 | Marvell World Trade Ltd | MARVELL INTERNATIONAL LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 051778 | /0537 | |
Dec 31 2019 | MARVELL INTERNATIONAL LTD | CAVIUM INTERNATIONAL | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 052918 | /0001 | |
Dec 31 2019 | CAVIUM INTERNATIONAL | MARVELL ASIA PTE, LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053475 | /0001 |
Date | Maintenance Fee Events |
Feb 28 2020 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 27 2024 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Sep 06 2019 | 4 years fee payment window open |
Mar 06 2020 | 6 months grace period start (w surcharge) |
Sep 06 2020 | patent expiry (for year 4) |
Sep 06 2022 | 2 years to revive unintentionally abandoned end. (for year 4) |
Sep 06 2023 | 8 years fee payment window open |
Mar 06 2024 | 6 months grace period start (w surcharge) |
Sep 06 2024 | patent expiry (for year 8) |
Sep 06 2026 | 2 years to revive unintentionally abandoned end. (for year 8) |
Sep 06 2027 | 12 years fee payment window open |
Mar 06 2028 | 6 months grace period start (w surcharge) |
Sep 06 2028 | patent expiry (for year 12) |
Sep 06 2030 | 2 years to revive unintentionally abandoned end. (for year 12) |