This application relates generally to managing network resources in a network switching node, and more particularly, to dynamic allocation and de-allocation of queues in the node for managing data traffic.
Packets received by a network switching node are generally stored in hardware or software queues prior to being forwarded to a destination. Each queue in the node is typically configured by a network administrator prior to its use. For example, the queue may be configured with various parameters available for the particular queue, with an interface type, and with information on the priority of data packets to be stored in the queue.
A drawback with the existing manner of configuring queues is that the process is manual and time consuming. In addition, the network administrator must generally know the specific parameters of the queue in advance before the configuration can occur. For example, the network administrator generally needs advance knowledge of the number of queues to be configured and the traffic that will flow through those queues. A further drawback with the existing configuration process is that statically assigned queues may not change in real-time to accommodate the dynamic nature of network traffic, resulting in inefficient use of network resources.
Accordingly, what is desired are queues whose queuing parameters are not statically configured prior to their use. Such queues should instead be dynamically created and configured based on varying flows in network traffic.
The present invention is directed to a dynamic queue allocation and de-allocation mechanism. According to one embodiment, the invention is directed to a switching node in a data communications network that includes an input receiving an inbound packet, a data store storing a plurality of policy rules, and a packet processor coupled to the input and the data store. The packet processor identifies a policy rule applicable to the packet and dynamically creates a queue in accordance with the identified policy rule.
According to another embodiment, the invention is directed to a switching node in a data communications network that includes an input and a packet processor. The input receives an inbound packet for forwarding on an output. The packet processor identifies a priority associated with the packet and dynamically creates at a destination associated with the output a queue for storing packets associated with the identified priority prior to forwarding the packet to the output.
According to a further embodiment, the invention is directed to a switching node in a data communications network that includes an input receiving an inbound packet, a data store storing a plurality of policy rules, and a packet processor coupled to the input and the data store. The packet processor identifies a policy rule applicable to the packet and determines if the identified policy rule indicates a quality of service parameter. If the policy rule indicates a quality of service parameter, the packet processor dynamically creates a queue according to the indicated quality of service parameter. The quality of service parameter may be, according to one embodiment, a quality of service priority.
In an additional embodiment, the packet processor monitors network resources and allocates the resources to the new queue based on their availability.
In yet another embodiment, the packet processor de-allocates resources allocated to an existing queue if the existing queue is associated with a priority that is lower than the priority indicated for the new queue. The de-allocated resources are then re-allocated to the new queue.
In another embodiment, the invention is directed to a method for managing network traffic in a data communications network. The method includes receiving an inbound packet, identifying a policy rule applicable to the packet, identifying an egress port for the packet, and determining if a destination associated with the egress port has a queue associated with the identified policy rule. If the destination does not have a queue associated with the identified policy rule, dynamically creating at the destination a queue in accordance with the identified policy rule.
It should be appreciated, therefore, that the dynamic queue allocation of a preferred embodiment avoids the need for pre-configuring and pre-allocating queues in a static manner. The dynamic queue allocation further allows the switching node to adjust to varying flows in network traffic and ensure that queues with the highest priority flows are provided with the necessary network resources prior to providing those resources to queues with lower priority flows.
These and other features, aspects and advantages of the present invention will be more fully understood when considered with respect to the following detailed description, appended claims, and accompanying drawings. Of course, the actual scope of the invention is defined by the appended claims.
The switching interfaces 14, 16, 18 forward packets to and from their respective groups of LANs 30, 32, 34 in accordance with one or more operative communication protocols, such as, for example, media access control (MAC) bridging and Internet Protocol (IP) routing. The switching node 10 is shown for illustrative purposes only. In practice, packet switching nodes may include more or less than three switching interfaces.
The packet switching controller 52 receives inbound packets, classifies the packets, modifies the packets in accordance with flow information, and transmits the modified packets on switching backplane, such as the switching backplane 12 of
The packet switching controller 52 may include a packet buffer 102, packet classification engine 104, policy engine 106, policy enforcement engine 108, queue mapper 124, port manager 110, and policy database 120. The packet classification engine 104, policy engine 106, policy enforcement engine 108, queue mapper 124, and port manager 110 are logical devices that may be implemented in software, hardware, firmware (e.g. ASIC), or any combination thereof. It is understood, of course, that
In general terms, the packet switching controller 52 receives inbound packets which may include, but are not limited to, Ethernet frames, ATM cells, TCP/IP and/or UDP/IP packets, and may also include other Layer 2 (Data Link/MAC Layer), Layer 3 (Network Layer) or Layer 4 (Transport Layer) data units.
The received packets are stored in the packet buffer 102. The packet buffer 102 provides the stored packets or portions thereof to the packet classification engine 104 for processing. The packet buffer 102 may include one or more of a data extractor and a data cache. The data extractor may be used to extract one or more fields from the packets, and store the extracted fields in the data cache as extracted data. The extracted data may include, but is not limited to, some or all of the packet header. In an Ethernet system, for example, the header data cache may also store first N bytes of each frame.
The extracted data is provided in an output signal 114 to the packet classification engine 104 for processing. The policy engine 106 may also request and receive the extracted data over an interface 116. The extracted data may include, but is not limited to, one or more of Layer 2 MAC addresses, 802.1P/Q tag status, Layer 2 encapsulation type, Layer 3 protocol type, Layer 3 addresses, ToS (type of service) values, Layer 4 port numbers, portions of the packet body, and/or any other data used for determining a policy. In other embodiments, output signal 114 may include the whole inbound packet, instead of or in addition to the extracted data.
The packet classification engine 104 receives the extracted data and classifies the packet based on the extracted data. In essence, the packet classification engine 104 selects traffic flows to be processed based on the policies in the policy database 120.
The classification information is transmitted to the policy engine 106 via an output signal 118. The policy engine 106 accesses the policy database 120 and selects a policy applicable to the packet. The policy database 120 may be implemented in a local memory and/or in an external LDAP database. The policy database 120 includes a list of policies that are based on the contents of a packet and/or other elements such as, for example, time information, port information, and the like. Policies are rules composed of one or more conditions that describe a packet and one or more actions that define how the packet is to be processed if the condition is satisfied.
The policy engine 106 compares the extracted packet data with the policies in the policy database 120. If a match is found between the condition(s) in the policy and the extracted data, the policy engine determines the action(s) to be taken on the packet. The action(s) to be taken on the packet are transmitted to the policy enforcement engine 108 via an output signal 122.
The policy enforcement engine 108 ensures that the packet is processed according to the parameters defined in the action(s) received. According to one embodiment of the invention, if the policy rule applicable to the packet is a QoS policy rule, the policy enforcement engine 108 transmits a queue request 126 to the queue mapper 124 for a queue matching the QoS parameters of the QoS policy rule for storing the packet prior to being forwarded.
The queue mapper 124 receives the queue request and identifies or dynamically creates at a destination associated with an output where the packet is to be forwarded, a queue for storing the packet. The destination may be a single physical egress port or multiple physical egress ports treated as a single logical port for sharing common egress queues. Hereinafter, references to a port shall be deemed to mean either a physical port or a logical port with multiple physical ports.
If a new queue may not be created because of limits in the global and/or local resources, the mapper 124 may de-allocate queues of a lower priority already created on the destination to free the resources and assign the newly freed resources to the new queue. According to one embodiment of the invention, a determination of which queue is of a lower priority is done based on a strict queueing/flow priority. A person skilled in the art should recognize, however, that the determination may be made based on any precedence/priority mapping. For example, higher precedence policies may take priority over lower precedence policies when it comes to queue allocation.
According to one embodiment of the invention, the queue mapper 124 informs the policy enforcement engine 108 whether the queue was successfully identified or created via output signal 126. Upon an indication of success, the policy enforcement engine 108 transmits a command to the packet buffer 102 via output signal 130 to forward the packet as an outbound packet 132 to the queue.
The port manager 110 manages port bandwidth resources and tracks the status of the ports as either up or down. The queue mapper allocates or releases the queues on a particular destination based on the port information 134 provided by the port manager.
According to one embodiment of the invention, the mapper 124 and port manager 110 are located in a single switching interface 14, 16, or 18 designated as a control switching interface. From this central location, the port manager 110 may manage resource and port status information and the mapper 124 may dynamically allocate and de-allocate the resources to the various queues
The queue management module 200 receives queue requests 126 from the policy enforcement engine 108 and port information 134 from the port manager 110, and dynamically creates and/or releases queues based on the received information. Updates are made to the queue tables 202 as queues are created and/or released.
According to one embodiment of the invention, the queue management module 200 attempts to create a queue for a QoS rule if the QoS rule is applicable to an inbound data packet. Future data packets that match the QoS rule are then placed in the same queue. In certain scenarios, multiple queues may be created for a match of a single QoS rule if traffic matching the QoS rule may flow out of different egress ports.
For example, if a QoS rule only specifies a source IP address, packets initiated from the source IP address but flowing to different destination IP addresses may match the rule. In this scenario, the queue management module 200 attempts to create a queue on each port that the packet matching the rule egresses. According to one embodiment of the invention, the queues are created on an as-needed basis as a flow egresses on a particular port.
In another embodiment of the invention, two or more QoS rules having a same policy action may share a single queue. The fact that a queue is shared may be indicated by setting a “shared” field in the QoS rules that share the queue.
In attempting to create a new queue on a particular egress port, the queue management module 200 determines whether enough resources are available to the port based on the port information obtained from the port manager 110. If a queue cannot be created because of resource limitation, such as for example, limits on the reserved bandwidth and/or the number of queues that may be created for a particular egress port, the queue management module 200 attempts to de-allocate queues of lower priority created on the port. If enough resources are available from the lower priority queues, the queue management module reclaims the resources used by the lower priority queues and uses them to create the new higher priority queue. Any traffic in the reclaimed queues are moved to an appropriate default queue for the port.
In addition to queue resources, the queue management module 200 determines the status of a port in attempting to create a new queue. The status of the port may be based on the port information 206 provided by the port manager 110. If the egress port in which the new queue is to be created does not support QoS, is disabled, or has QoS disabled, the queue is not created.
The queue management module 200 may further release an existing queue if its port becomes disabled, when a packet stored in the queue times out, or the queue does not store any packets. The queue management module 200 receives notification of a disabled port as part of the port information 134 transmitted by the port manager 110. If an existing queue is to be freed, the resources assigned to the queue is reclaimed and its entry deleted from the queue table.
The queue ID field 202a identifies the queues that have been created on the port. The queues may be implemented in either hardware or software. The priority field 202b indicates a priority associated with each queue on the port. The priority information reflects the QoS priority indicated in the QoS policy rule for which the queue was created. The minimum bandwidth field 202c indicates a bandwidth reserved for the queue by the port. The minimum bandwidth information may be obtained from the QoS policy rule associated with the queue. The stored flow field 202d identifies the flows being stored in the queue. The flows may be assigned a particular flow ID, and be associated with conditions of the QoS policy rule matching the particular flow.
The port status tracking module 220 monitors the status of one or more ports according to conventional mechanisms. For example, the port status tracking module monitors the addition or deletion of physical or virtual ports, their condition as either up or down, and their QoS settings. The resource management module 222 tracks the available resources reserved for each port as queues are created and released. The resource management module 222 may also track global resources available to the entire switching node. One of the resources tracked for a particular queue is the reserved bandwidth. Updates are made the port table 224 based on the information provided by the port status tracking module 220 and the resource management module 222.
The mapper invokes the queue management module 200 for determining whether the queue tables 202 indicate that a queue has been created on the identified port for the matched QoS policy rule. In step 302, a determination is made as to whether such a queue was found. If the answer is YES, the inbound packet is stored in the identified queue in step 318.
If the answer is NO, a determination is made in step 304 as to whether the port is enabled for creating a queue on the port. In this regard, the queue management module determines based on the port information 134 transmitted by the port manager whether the port is up or down, and whether the port has its QoS enabled or disabled. If the port is up and has its QoS enabled, a queue may be created on the port if enough resources are available.
In step 306, the queue management module 200 determines the resources available to the port. In this regard, the queue management module 200 compares the bandwidth needed for creating the new queue with the available bandwidth 224 information in the port table 224 and determines whether sufficient bandwidth exists. The queue management module 200 also determines if a new queue may be created based on the maximum number of queues allotted to the port and/or other global and local resource constraints.
If enough resources are available to the port, the queue management module creates, in step 316, the new queue on the port, and in step 318, places the packet in the queue. A new entry is placed in the queue table 202 for the port to reflect the new queue, and the available bandwidth 224 information in the port table 224 is updated to take into account the resources taken by the new queue.
If enough resources are not available to the port for creating the new queue, a determination is made in step 308 as to whether lower priority queues exist that are currently using the needed resources. If the answer is YES, the lower priority queues and the resources occupied by these queues are reclaimed by the queue management module in step 312. In step 314, any packets stored in the reclaimed queues are transferred to one or more best matching default queues. The default queues may be either statically or dynamically generated and configured. If a default queue with a same priority as the reclaimed queue exists, the packets from reclaimed queue is transferred to such default queue. Otherwise, a default queue with a closest priority is selected as the recipient for the transferred packets.
In step 316 the new queue is created and the reclaimed resources re-allocated to the new queue. In step 318, the packets are placed in the newly created queue.
Table 500 illustrates an initial queue table for the port. Upon initialization, the port contains no queues, and all of the port's bandwidth is available for allocating to a newly generated queue. The port receives a first traffic flow matching Cond1 of the policy rules in the policy table 400. Cond1 requires a queue with a QoS priority of “1” and a minimum bandwidth of 80M. The minimum bandwidth is available to the port, and the queue is created based on the QoS parameters associated with Cond1, leaving an available bandwidth of 20M to the port. The queue table is also updated as reflected in Table 502.
The port next receives a second traffic flow matching Cond2 of the policy rules. No queues matching Cond2 exist on the port, and a determination is made as to whether a new queue may be created based on available resources. Because the minimum bandwidth required for the new queue is 30M, which is more than the currently available bandwidth, the queue management module 200 reclaims the lower priority Queue 1 to obtain the necessary minimum bandwidth, and reassigns the reclaimed bandwidth to the new queue. The contents of the reclaimed Queue 1 are then transferred to a best matching default queue. The queue table is further updated as reflected in Table 504.
The port then receives a third traffic flow matching Cond3 of the policy rules. No queues matching Cond3 exist on the port, and a determination is made as to whether a new queue may be created based on available resources. Because the available bandwidth is 70M, the new queue is created based on the QoS parameters associated with Cond3, leaving an available bandwidth of 30M. The queue table is then updated as reflected in Table 506.
The port then receives a fourth traffic flow matching Cond4 of the policy rules. No queues matching Cond4 exist on the port, and a determination is made as to whether a new queue may be created based on available resources. The QoS action parameters for Cond4 do not indicate a minimum bandwidth to be reserved for the queue but only a maximum bandwidth that may be allowed for the queue. Thus, no minimum bandwidth constraints are imposed in creating the new queue. However, two queues have already been created for the port satisfying the maximum number of queues allowed for the port. In this scenario, the queue management module 200 reclaims one of the previously created queues, both having a lower priority than the priority of the new queue to be created, and the reclaimed resources are allocated for creating the new queue. The updated queue table is illustrated in Table 508.
Although this invention has been described in certain specific embodiments, those skilled in the art will have no difficulty devising variations which in no way depart from the scope and spirit of the present invention. It is therefore to be understood that this invention may be practiced otherwise than is specifically described. Thus, the present embodiments of the invention should be considered in all respects as illustrative and not restrictive, the scope of the invention to be indicated by the appended claims and their equivalents rather than the foregoing description.
This application claims the benefit of U.S. provisional application No. 60/328,159, filed on Oct. 10, 2001, the contents of which are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
4953157 | Franklin et al. | Aug 1990 | A |
5390176 | Schoute et al. | Feb 1995 | A |
5521923 | Willmann et al. | May 1996 | A |
5546389 | Wippenbeck et al. | Aug 1996 | A |
5768257 | Khacherian et al. | Jun 1998 | A |
6286052 | McCloghrie et al. | Sep 2001 | B1 |
6449251 | Awadallah et al. | Sep 2002 | B1 |
6678248 | Haddock et al. | Jan 2004 | B1 |
6865388 | Walsh et al. | Mar 2005 | B2 |
6970921 | Wang et al. | Nov 2005 | B1 |
7006472 | Immonen et al. | Feb 2006 | B1 |
7065616 | Gajjar et al. | Jun 2006 | B2 |
20040076161 | Lavian et al. | Apr 2004 | A1 |
20060010265 | Aiken et al. | Jan 2006 | A1 |
Number | Date | Country | |
---|---|---|---|
20030076849 A1 | Apr 2003 | US |
Number | Date | Country | |
---|---|---|---|
60328159 | Oct 2001 | US |