Various example embodiments relate generally to communications and, more particularly but not exclusively, to supporting communications using load balancing techniques.
In communication networks, various communications technologies may be used to support various types of communications.
In at least some example embodiments, an apparatus includes at least one processor and at least one memory including computer program code, wherein the at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus at least to create, for a set of flows mapped to an outgoing link, a respective set of link pinning state entries mapping the respective flows to the outgoing link, remap a first subset of flows in the set of flows to at least one other outgoing link while a second subset of flows in the set of flows remain mapped to the outgoing link, and retain ones of the link pinning state entries associated with respective flows in the first subset of flows and deactivate ones of the link pinning state entries associated with respective flows in the second subset of flows. In at least some example embodiments, the flows in the set of flows are mapped to the outgoing link based on stateless per-flow load balancing. In at least some example embodiments, the set of link pinning state entries is created based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, to remap the first subset of flows to the at least one other outgoing link, the at least one memory and the computer program code are configured, with the at least one processor, to cause the apparatus at least to monitor, for each flow in the set of flows based on the respective link pinning state entries associated with the respective flows, a respective bandwidth consumption of the respective flow on the outgoing link, and identify the first subset of flows and the second subset of flows based on the respective bandwidth consumptions of the respective flows on the outgoing links. In at least some example embodiments, the first subset of flows includes ones of the flows in the set of flows having the highest respective bandwidth consumptions on the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link in a manner tending to evenly distribute traffic of the flows in the set of flows across a set of outgoing links that includes the outgoing link and the at least one other outgoing link. In at least some example embodiments, to remap the first subset of flows to the at least one other outgoing link, the at least one memory and the computer program code are configured, with the at least one processor, to cause the apparatus at least to modify, for each flow in the first subset of flows, the respective link pinning state entry of the respective flow from mapping the respective flow to the outgoing link to mapping the respective flow to the at least one other outgoing link. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the first subset of flows are retained by continuing to store the ones of the link pinning state entries as long as packets continue to be forwarded on the respective flows. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the second subset of flows are deactivated by at least one of deleting the ones of the link pinning state entries or marking the ones of the link pinning state entries for deletion. In at least some example embodiments, to retain ones of the link pinning state entries associated with respective flows in the first subset of flows, the at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus at least to retain the ones of the link pinning state entries associated with respective flows in the first subset of flows by making the ones of the link pinning state entries associated with respective flows in the first subset of flows permanent based on a determination that packets are forwarded on the respective flows in the first subset of flows. In at least some example embodiments, to deactivate ones of the link pinning state entries associated with respective flows in the second subset of flows, the at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus at least to deactivate the ones of the link pinning state entries associated with respective flows in the second subset of flows in response to the ones of the link pinning state entries associated with respective flows in the second subset of flows being updated to reflect the remapping of the respective flows in the second subset of flows from the outgoing link to the at least one other outgoing link. In at least some example embodiments, to retain ones of the link pinning state entries associated with respective flows in the first subset of flows, the at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus at least to change the ones of the link pinning state entries associated with respective flows in the first subset of flows from being temporary entries to being permanent entries. In at least some example embodiments, to deactivate ones of the link pinning state entries associated with respective flows in the second subset of flows, the at least one memory and the computer program code are configured to, with the at least one processor, cause the apparatus at least to change the ones of the link pinning state entries associated with respective flows in the second subset of flows from being temporary entries to being deactivated entries.
In at least some example embodiments, a computer readable medium stores computer program code configured to cause an apparatus to create, for a set of flows mapped to an outgoing link, a respective set of link pinning state entries mapping the respective flows to the outgoing link, remap a first subset of flows in the set of flows to at least one other outgoing link while a second subset of flows in the set of flows remain mapped to the outgoing link, and retain ones of the link pinning state entries associated with respective flows in the first subset of flows and deactivate ones of the link pinning state entries associated with respective flows in the second subset of flows. In at least some example embodiments, the flows in the set of flows are mapped to the outgoing link based on stateless per-flow load balancing. In at least some example embodiments, the set of link pinning state entries is created based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, to remap the first subset of flows to the at least one other outgoing link, the computer program code is configured to cause the apparatus at least to monitor, for each flow in the set of flows based on the respective link pinning state entries associated with the respective flows, a respective bandwidth consumption of the respective flow on the outgoing link, and identify the first subset of flows and the second subset of flows based on the respective bandwidth consumptions of the respective flows on the outgoing links. In at least some example embodiments, the first subset of flows includes ones of the flows in the set of flows having the highest respective bandwidth consumptions on the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link in a manner tending to evenly distribute traffic of the flows in the set of flows across a set of outgoing links that includes the outgoing link and the at least one other outgoing link. In at least some example embodiments, to remap the first subset of flows to the at least one other outgoing link, the computer program code is configured to cause the apparatus at least to modify, for each flow in the first subset of flows, the respective link pinning state entry of the respective flow from mapping the respective flow to the outgoing link to mapping the respective flow to the at least one other outgoing link. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the first subset of flows are retained by continuing to store the ones of the link pinning state entries as long as packets continue to be forwarded on the respective flows. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the second subset of flows are deactivated by at least one of deleting the ones of the link pinning state entries or marking the ones of the link pinning state entries for deletion. In at least some example embodiments, to retain ones of the link pinning state entries associated with respective flows in the first subset of flows, the computer program code is configured to cause the apparatus at least to retain the ones of the link pinning state entries associated with respective flows in the first subset of flows by making the ones of the link pinning state entries associated with respective flows in the first subset of flows permanent based on a determination that packets are forwarded on the respective flows in the first subset of flows. In at least some example embodiments, to deactivate ones of the link pinning state entries associated with respective flows in the second subset of flows, the computer program code is configured to cause the apparatus at least to deactivate the ones of the link pinning state entries associated with respective flows in the second subset of flows in response to the ones of the link pinning state entries associated with respective flows in the second subset of flows being updated to reflect the remapping of the respective flows in the second subset of flows from the outgoing link to the at least one other outgoing link. In at least some example embodiments, to retain ones of the link pinning state entries associated with respective flows in the first subset of flows, the computer program code is configured to cause the apparatus at least to change the ones of the link pinning state entries associated with respective flows in the first subset of flows from being temporary entries to being permanent entries. In at least some example embodiments, to deactivate ones of the link pinning state entries associated with respective flows in the second subset of flows, the computer program code is configured to cause the apparatus at least to change the ones of the link pinning state entries associated with respective flows in the second subset of flows from being temporary entries to being deactivated entries.
In at least some example embodiments, a method includes creating, for a set of flows mapped to an outgoing link, a respective set of link pinning state entries mapping the respective flows to the outgoing link, remapping a first subset of flows in the set of flows to at least one other outgoing link while a second subset of flows in the set of flows remain mapped to the outgoing link, and retaining ones of the link pinning state entries associated with respective flows in the first subset of flows and deactivating ones of the link pinning state entries associated with respective flows in the second subset of flows. In at least some example embodiments, the flows in the set of flows are mapped to the outgoing link based on stateless per-flow load balancing. In at least some example embodiments, the set of link pinning state entries is created based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, remapping the first subset of flows to the at least one other outgoing link includes monitoring, for each flow in the set of flows based on the respective link pinning state entries associated with the respective flows, a respective bandwidth consumption of the respective flow on the outgoing link, and identifying the first subset of flows and the second subset of flows based on the respective bandwidth consumptions of the respective flows on the outgoing links. In at least some example embodiments, the first subset of flows includes ones of the flows in the set of flows having the highest respective bandwidth consumptions on the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link in a manner tending to evenly distribute traffic of the flows in the set of flows across a set of outgoing links that includes the outgoing link and the at least one other outgoing link. In at least some example embodiments, remapping the first subset of flows to the at least one other outgoing link includes modifying, for each flow in the first subset of flows, the respective link pinning state entry of the respective flow from mapping the respective flow to the outgoing link to mapping the respective flow to the at least one other outgoing link. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the first subset of flows are retained by continuing to store the ones of the link pinning state entries as long as packets continue to be forwarded on the respective flows. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the second subset of flows are deactivated by at least one of deleting the ones of the link pinning state entries or marking the ones of the link pinning state entries for deletion. In at least some example embodiments, retaining ones of the link pinning state entries associated with respective flows in the first subset of flows includes retaining the ones of the link pinning state entries associated with respective flows in the first subset of flows by making the ones of the link pinning state entries associated with respective flows in the first subset of flows permanent based on a determination that packets are forwarded on the respective flows in the first subset of flows. In at least some example embodiments, deactivating ones of the link pinning state entries associated with respective flows in the second subset of flows includes deactivating the ones of the link pinning state entries associated with respective flows in the second subset of flows in response to the ones of the link pinning state entries associated with respective flows in the second subset of flows being updated to reflect the remapping of the respective flows in the second subset of flows from the outgoing link to the at least one other outgoing link. In at least some example embodiments, retaining ones of the link pinning state entries associated with respective flows in the first subset of flows includes changing the ones of the link pinning state entries associated with respective flows in the first subset of flows from being temporary entries to being permanent entries. In at least some example embodiments, deactivating ones of the link pinning state entries associated with respective flows in the second subset of flows includes changing the ones of the link pinning state entries associated with respective flows in the second subset of flows from being temporary entries to being deactivated entries.
In at least some example embodiments, an apparatus includes means for creating, for a set of flows mapped to an outgoing link, a respective set of link pinning state entries mapping the respective flows to the outgoing link, means for remapping a first subset of flows in the set of flows to at least one other outgoing link while a second subset of flows in the set of flows remain mapped to the outgoing link, and means for retaining ones of the link pinning state entries associated with respective flows in the first subset of flows and means for deactivating ones of the link pinning state entries associated with respective flows in the second subset of flows. In at least some example embodiments, the flows in the set of flows are mapped to the outgoing link based on stateless per-flow load balancing. In at least some example embodiments, the set of link pinning state entries is created based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link based on detection of a bandwidth condition associated with the outgoing link. In at least some example embodiments, the bandwidth condition includes a bandwidth of the outgoing link reaching a bandwidth threshold. In at least some example embodiments, the bandwidth threshold of the outgoing link is less than a total bandwidth capacity of the outgoing link. In at least some example embodiments, the means for remapping the first subset of flows to the at least one other outgoing link includes means for monitoring, for each flow in the set of flows based on the respective link pinning state entries associated with the respective flows, a respective bandwidth consumption of the respective flow on the outgoing link, and means for identifying the first subset of flows and the second subset of flows based on the respective bandwidth consumptions of the respective flows on the outgoing links. In at least some example embodiments, the first subset of flows includes ones of the flows in the set of flows having the highest respective bandwidth consumptions on the outgoing link. In at least some example embodiments, the first subset of flows is remapped to the at least one other outgoing link in a manner tending to evenly distribute traffic of the flows in the set of flows across a set of outgoing links that includes the outgoing link and the at least one other outgoing link. In at least some example embodiments, the means for remapping the first subset of flows to the at least one other outgoing link includes means for modifying, for each flow in the first subset of flows, the respective link pinning state entry of the respective flow from mapping the respective flow to the outgoing link to mapping the respective flow to the at least one other outgoing link. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the first subset of flows are retained by continuing to store the ones of the link pinning state entries as long as packets continue to be forwarded on the respective flows. In at least some example embodiments, the ones of the link pinning state entries associated with respective flows in the second subset of flows are deactivated by at least one of deleting the ones of the link pinning state entries or marking the ones of the link pinning state entries for deletion. In at least some example embodiments, the means for retaining ones of the link pinning state entries associated with respective flows in the first subset of flows includes means for retaining the ones of the link pinning state entries associated with respective flows in the first subset of flows by making the ones of the link pinning state entries associated with respective flows in the first subset of flows permanent based on a determination that packets are forwarded on the respective flows in the first subset of flows. In at least some example embodiments, the means for deactivating ones of the link pinning state entries associated with respective flows in the second subset of flows includes means for deactivating the ones of the link pinning state entries associated with respective flows in the second subset of flows in response to the ones of the link pinning state entries associated with respective flows in the second subset of flows being updated to reflect the remapping of the respective flows in the second subset of flows from the outgoing link to the at least one other outgoing link. In at least some example embodiments, the means for retaining ones of the link pinning state entries associated with respective flows in the first subset of flows includes means for changing the ones of the link pinning state entries associated with respective flows in the first subset of flows from being temporary entries to being permanent entries. In at least some example embodiments, the means for deactivating ones of the link pinning state entries associated with respective flows in the second subset of flows includes means for changing the ones of the link pinning state entries associated with respective flows in the second subset of flows from being temporary entries to being deactivated entries.
The teachings herein can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
To facilitate understanding, identical reference numerals have been used herein, wherever possible, in order to designate identical or similar elements that are common among the various figures.
Various example embodiments for supporting quasi-stateful load balancing in communication networks are presented herein. Various example embodiments for supporting quasi-stateful load balancing in communication networks may be configured to reduce or minimize the amount of state information that needs to be maintained by a node for supporting load balancing across outgoing links of the node. Various example embodiments for supporting quasi-stateful load balancing in communication networks may be configured to reduce or minimize the number of link pinning state entries that need to be maintained by a node for supporting load balancing across outgoing links of the node. Various example embodiments for supporting quasi-stateful load balancing in communication networks may be configured to reduce or minimize the number of link pinning state entries that need to be maintained by a node for supporting load balancing across outgoing links of the node by deactivating those link pinning state entries associated with flows that remain default mapped to outgoing links of the node and retaining only those link pinning state entries associated with flows that are remapped between outgoing links of the node. It will be appreciated that these as well as various other example embodiments and advantages or potential advantages of supporting quasi-stateful load balancing in communication networks may be further understood by way of reference to the various figures, which are discussed further below.
The communication system 100 includes a communication network 110 and a controller 120. The communication network 110 is a packet-switched network including a set of routers 111-A-111-H (collectively, routers 111, which are also referred to herein using the notation of the router A through router H or, more generally, node A through node H) communicatively connected via various communication links. The controller 120 is configured to provide various control functions for the communication network 110 and routers 111 of the communication network 110 (e.g., maintaining network topology and traffic engineering information associated with the routers 111, computing routes for routers 111, or the like, as well as various combinations thereof).
The routers 111 may be configured to support communication of packets based on load balancing. The routers 111 may be configured to support improved or optimal load balancing of packets to a destination using multiple paths to the destination, where the multiple paths may include multiple equal cost multipath (ECMP) paths to the destination or multiple unequal cost multipath (UCMP) paths to the destination, by spraying the packets across the multiple paths to the destination for improved or optimal operation (e.g., packet throughput, network utilization, or the like, as well as various combinations thereof). The routers 111 may be configured to support load balancing of packets based on various load balancing techniques, including stateful load balancing, stateless load balancing, quasi-stateful load balancing, or combinations thereof.
The controller 120 may be configured to support communication of packets based on load balancing. The controller 120 may be configured to support communication of packets by the routers 111 based on load balancing (e.g., computing multiple paths to destinations for the routers 111 and installing the multiple paths to the destinations on the routers 111, or the like, as well as various combinations thereof). The controller 120 may be configured to support load balancing of packets based on various load balancing techniques, including stateful load balancing, stateless load balancing, quasi-stateful load balancing, or combinations thereof.
The communication system 100 may be configured to support communication of packets based on load balancing using various load balancing elements 130. For example, router 111-A illustratively includes a load balancing element 130-A configured to support forwarding of packets based on load balancing techniques such as stateful load balancing, stateless load balancing, quasi-stateful load balancing, and so forth. It will be appreciated that, although omitted for purposes of clarity, the other routers 111-B-111-H also may include similar load balancing elements configured to support forwarding of packets based on load balancing techniques such as stateful load balancing, stateless load balancing, quasi-stateful load balancing, and so forth. For example, the controller 120 illustratively includes a load balancing element 130-CNT configured to provide control functions for supporting forwarding of packets by the routers 111 based on load balancing techniques such as stateful load balancing, stateless load balancing, quasi-stateful load balancing, and so forth.
It will be appreciated that various example embodiments for supporting quasi-stateful load balancing within the communication system 100 may be further understood by first considering various aspects of stateless load balancing techniques and stateful load balancing techniques.
In stateless load balancing, for load balancing purposes, a packet flow is typically identified as the packets exchanged for an application between two end hosts. For example, a Transmission Control Protocol (TCP) connection for a Hypertext Transfer Protocol (HTTP) application between a user and web server is a packet flow, which can be uniquely identified across the network by the tuple {source address in IP header, destination address in IP header, source port in TCP header, destination port in TCP header}. In this scheme, a node does not maintain any packet flow specific states for load balancing purposes. Stateless load balancing schemes generally can be of two types: per-flow load balancing and per-packet load balancing.
Per-flow load balancing sends each of the packets of a flow over the same outgoing link. In per-flow load balancing, the load balancing node classifies each packet by its packet flow. The load balancing node computes a hash value based on the flow tuple encoded in a packet and then performs modulo on the hash value by the number of outgoing links to the intended destination of the packet. The result is the outgoing link for the packet, i.e., outgoing_link=hash (flow tuple) % number_of_outgoing_links. The computation is performed on every packet, so there is no need to maintain state of a flow in the node balancing node. Every packet that belongs to a flow gets forwarded on the same outgoing link and this guarantees that packets in the flow arrives at the destination in order. For example, if TCP packets arrive at the destination out of order then it impacts the performance of the connection. If voice or video traffic is transmitted on a TCP connection then out of order arrival of packets can result in delays or jitters in voice and video, which in turn degrades the user experience. An example embodiment of per-flow load balancing over ECMP is presented in
The communication network 200 includes nodes A-H with interconnecting links. Each link is assigned a cost (or metric) in the topology graph, which is used for computation of paths to destinations. The costs assigned to the links are illustrated next to the links. In this example, assume that each node computes paths to the destinations using a shortest path first (SPF) algorithm on the topology graph, e.g., using Dijkstra's algorithm.
The communication network 200 includes two ECMP paths from node A to node H. The first path is A→B→D→F→H and the second path is A→C→E→G→H, each of cost 6. Assume that the bandwidth (BW) available on path 1 is 100 Mbps and that the bandwidth on path 2 is 50 Mbps. Node A receives, on an incoming link, the packets P1, P2, P3, P4, and P5, which are to be transmitted to node H. Node A classifies the packets into their associated flows. Packets P1, P3, and P4 are associated with Flow 1 and packets P2 and P5 are associated with Flow 2. Hash computation on Flow 1 maps to the first path and hash computation on Flow 2 maps to the second path. So packets P1, P3, and P4 are forwarded on the first path and packets P2 and P5 are forwarded on the second path. The packets on each flow arrive at node H exactly in the order. The bandwidth consumed by Flow 1 and Flow 2 are 40 Mbps and 30 Mbps, respectively.
In per-flow load balancing, packet flows to a destination may not be evenly distributed across all outgoing links to the destination since choice of the outgoing link depends on the flow specific fields in the headers the packet. In the worst case, all packet flows may get hashed (mapped) to the same outgoing link. For example, assume that both Flow 1 and Flow 2 in
Per-packet load balancing addresses the problem of uneven per-flow load balancing by evenly load balancing the packets to a destination across all outgoing links to the destination. The load balancing node is agnostic of a packet flow and spays all packets to a destination among the outgoing links in a round-robin manner. So, it does not guarantee sequential delivery of packets of a flow since packets of a flow can get sprayed across multiple links. An example embodiment of per-packet load balancing is presented in
In stateful load balancing, a node dynamically creates states of packet flows by snooping the flow specific tuple in the packet headers. If a flow is no longer sending packets for a certain duration then the node deletes such stale flows. An outgoing link among the multiple outgoing links for the flow is determined based on the measured bandwidth of the flow and keeping in view of even distribution of all flows across all links. Once the outgoing link for a flow is determined, the state of the flow keeps a record of the chosen outgoing link and all packets of the flow are forwarded on that link based on that state. Herein, unless indicated otherwise, this state of a packet flow is referred to as a link pinning state (LPS) of the packet flow. Stateful load balancing generally guarantees even load balancing of packets to destination as well as in-order delivery of packets at the destination. An example embodiment of stateful load balancing is presented in
Various example embodiments presented herein may be configured to support quasi-stateful load balancing which may utilize aspects of stateless load balancing and stateful load balancing and which may overcome various potential issues associated with use of stateless load balancing and stateful load balancing. The stateless load balancing schemes are scalable because a load balancing node does not have to maintain states of the packet flows (LPSs); however, the per-flow load balancing scheme can result in uneven load balancing, resulting in traffic loss on overloaded links. The per-packet load balancing scheme does not guarantee in-order delivery of the packets of a flow, so the scheme is not applicable for flows that demand sequential delivery of its packets. For example, all TCP traffic requires in-order delivery and, currently, approximately 70% of Internet traffic is based on TCP. The stateful load balancing scheme provides even load balancing and strict in-order delivery of packets, but is not scalable when the number of flows is very high (e.g., multiples of millions). Various example embodiments of quasi-stateful load balancing, as discussed further below, may be configured to provide even load balancing and strict in-order delivery, which is desirable in various contexts and generally unavailable with stateless load balancing and stateful load balancing schemes.
Various example embodiments presented herein may be configured to support quasi-stateful load balancing, which is a hybrid of stateless per-flow load balancing and stateful load balancing. A node may perform quasi-stateful load balancing as follows. The node starts load balancing with stateless per-flow load balancing (e.g., by hashing on the tuple that identifies a flow). This way of mapping a flow to an outgoing link is referred to herein as a default mapping. The node monitors bandwidth consumption on each outgoing link. If a link is nearing overload then the node starts creating temporary LPS entries for the flows that are default mapped on the link and monitors bandwidth consumption on each of the LPS entries for a specific duration. After the bandwidth on each LPS entry is determined, the node shifts the higher bandwidth LPS entries to under-utilized links (among the multiple outgoing links for the respective flows). The LPS entries are remapped to links in a way such that traffic is evenly distributed across the links. The node makes the remapped LPS entries of the flows into permanent LPS entries as long as packets continue to be forwarded on the flows. The node then deactivates temporary LPS entries that remain pinned to the link that was originally nearing overload (e.g., deleting the LPS entries from the node, marking the LPS entries for deletion on the node, or the like), because the corresponding flows continue to be default mapped to the link. In at least some example embodiments, since the remapping of flows from oversubscribed links to undersubscribed links takes time due to the need to perform bandwidth consumption measurements for the flows default mapped on the oversubscribed link using the temporary LPSs for the flows, an overload threshold may be defined for a link (e.g., a threshold that is less than the maximum bandwidth available on the link) and when the node detects that the overload threshold on the link has been reached then the node can begin monitoring the bandwidth consumption of the flows on the link for identifying which of the flows are to be remapped from the link to one or more other links (so that flows can be transferred to other links before the bandwidth of the oversubscribed link is exceeded). It will be appreciated, as discussed further below, that with quasi-stateful load balancing the node needs to maintain LPS entries for only those flows which are remapped to a link other than its default mapped link and, thus, the solution is more scalable than stateful load balancing.
It will be appreciated that various example embodiments for supporting quasi-stateful load balancing may be configured to guarantee that the maximum number of LPS entries in a node is always less than the number of LPS entries required when stateful load balancing is used by the node. For example, assume that there are N flows being load balanced by a node. In stateful load balancing, the node needs to maintain N×LPS entries. In the worst case of quasi-stateful load balancing, there will be two outgoing links for N flows and all flows would default map to the first link (i.e., by hash computation on flow specific fields in packet headers). Here, assume that all N flows consume the same amount of bandwidth. In that case, a maximum of N/2 flows need to be shifted to the second link. Thus, the node will maintain N/2 LPS entries at the maximum. In the best case of quasi-stateful load balancing, when all N flows are evenly default mapped across all outgoing links then the node does not have to maintain any LPS entries at all.
It will be appreciated that various example embodiments of quasi-stateful load balancing may be further understood by way of the example presented with respect to
In the example of
In
In
In
In
Various example embodiments for supporting quasi-stateful load balancing in communication networks may provide various advantages or potential advantages. For example, various example embodiments for supporting quasi-stateful load balancing in communication networks may be configured to support load balancing in a manner that realizes benefits of both stateful load balancing and stateless load balancing. For example, various example embodiments for supporting quasi-stateful load balancing in communication networks may be configured to reduce or minimize the amount of state information that needs to be maintained by a node for supporting load balancing across outgoing links of the node. For example, various example embodiments for supporting quasi-stateful load balancing in communication networks may be configured to reduce or minimize the number of link pinning state entries that need to be maintained by a node for supporting load balancing across outgoing links of the node. Various example embodiments for supporting quasi-stateful load balancing in communication networks may provide various other advantages or potential advantages.
The computer 1700 includes a processor 1702 (e.g., a central processing unit (CPU), a processor, a processor having one or more processor cores, a processor core of a processor, or the like) and a memory 1704 (e.g., a random access memory, a read only memory, or the like). The processor 1702 and the memory 1704 may be communicatively connected. In at least some example embodiments, the computer 1700 may include at least one processor and at least one memory including computer program code, wherein the at least one memory and the computer program code are configured to, with the at least one processor, cause the computer to perform various functions presented herein.
The computer 1700 also may include a cooperating element 1705. The cooperating element 1705 may be a hardware device. The cooperating element 1705 may be a process that can be loaded into the memory 1704 and executed by the processor 1702 to implement various functions presented herein (in which case, for example, the cooperating element 1705 (including associated data structures) can be stored on a non-transitory computer-readable storage medium, such as a storage device or other suitable type of storage element (e.g., a magnetic drive, an optical drive, or the like)).
The computer 1700 also may include one or more input/output devices 1706. The input/output devices 1706 may include one or more of a user input device (e.g., a keyboard, a keypad, a mouse, a microphone, a camera, or the like), a user output device (e.g., a display, a speaker, or the like), one or more network communication devices or elements (e.g., an input port, an output port, a receiver, a transmitter, a transceiver, or the like), one or more storage devices (e.g., a tape drive, a floppy drive, a hard disk drive, a compact disk drive, or the like), or the like, as well as various combinations thereof.
It will be appreciated that computer 1700 may represent a general architecture and functionality suitable for implementing functional elements described herein, portions of functional elements described herein, or the like, as well as various combinations thereof. For example, computer 1700 may provide a general architecture and functionality that is suitable for implementing one or more elements presented herein, such as node or a portion thereof (e.g., a router or a portion thereof), a controller or a portion thereof (e.g., a network controller or a portion thereof), or the like, as well as various combinations thereof.
It will be appreciated that at least some of the functions presented herein may be implemented in software (e.g., via implementation of software on one or more processors, for executing on a general purpose computer (e.g., via execution by one or more processors) so as to provide a special purpose computer, and the like) and/or may be implemented in hardware (e.g., using a general purpose computer, one or more application specific integrated circuits, and/or any other hardware equivalents).
It will be appreciated that at least some of the functions presented herein may be implemented within hardware, for example, as circuitry that cooperates with the processor to perform various functions. Portions of the functions/elements described herein may be implemented as a computer program product wherein computer instructions, when processed by a computer, adapt the operation of the computer such that the methods and/or techniques described herein are invoked or otherwise provided. Instructions for invoking the various methods may be stored in fixed or removable media (e.g., non-transitory computer-readable media), transmitted via a data stream in a broadcast or other signal bearing medium, and/or stored within a memory within a computing device operating according to the instructions.
It will be appreciated that the term “or” as used herein refers to a non-exclusive “or” unless otherwise indicated (e.g., use of “or else” or “or in the alternative”). It will be appreciated that, although various embodiments which incorporate the teachings presented herein have been shown and described in detail herein, those skilled in the art can readily devise many other varied embodiments that still incorporate these teachings.