Autonomic traffic load balancing in link aggregation groups

Mechanisms are provided for performing traffic load balancing on ingress traffic directed to a Link Aggregation Group (LAG). The mechanisms monitor a ingress traffic load across a plurality of links of the Link Aggregation Group (LAG). The mechanisms determine if the ingress traffic load across the plurality of links is unbalanced. Moreover, the mechanisms, in response to determining that the ingress traffic load across the plurality of links is unbalanced, send a message to a switch associated with the LAG requesting the switch to modify routing of ingress traffic to the LAG to perform ingress traffic load balancing.

BACKGROUND

The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for autonomic traffic load balancing in link aggregation groups.

A physical network is typically abstracted at the endpoints for availability and scalability purposes. Both availability and scalability are addressed by providing Link Aggregation Groups (LAGs). Link aggregation is a computer networking term used to describe various methods of combining, or aggregating, multiple network connections in parallel to increase throughput beyond what a single connection could sustain, and to provide redundancy in case one of the links fails. Such link aggregation may be implemented at any of the lowest three levels of the Open Systems Interconnection (OSI) model. Examples of aggregation at layer 1 (physical layer) are power line and wireless network devices that combine multiple frequency bands. OSI layer 2 (data link layer) aggregation typically occurs across switch ports, which can be either physical ports or virtual ports managed by an operating system. OSI layer 3 (network layer) aggregation is possible using round-robin scheduling, or hash value based scheduling, a combination, or the like.

The combining of links can either occur such that multiple interfaces share one logical address (e.g., IP address) or one physical address (e.g., MAC address), or it can be done such that each interface has its own address. The former requires that both ends of a link use the same aggregation method, but has performance advantages over the latter. One standard for performing link aggregation is specified in the Link Aggregation Control Protocol (LACP).

A Link Aggregation Group (LAG) is a group of links that have been aggregated together forming a group of links. A LAG is generally coupled to one or more switches of a switch fabric in a network. With regard to availability, a LAG allows a network adapter/link error to be confined to the network adapter/interface domain, where the “interface” is the abstraction of the group of links as a single link. With regard to scalability, the grouping of multiple physical links into one abstracted interface, e.g., a single Etherchannel representing a plurality of physical links, allows for aggregate latency and throughput performance improvements. In both cases, the user space applications are not participants in determining the interface or switch fabric behavior.

SUMMARY

In one illustrative embodiment, a method, in a device comprising a processor, for performing traffic load balancing on ingress traffic directed to a Link Aggregation Group (LAG). The method comprises monitoring, by the device, an ingress traffic load across a plurality of links of the Link Aggregation Group (LAG). The method further comprises determining, by the device, if the ingress traffic load across the plurality of links is unbalanced. Moreover, the method comprises, in response to determining that the ingress traffic load across the plurality of links is unbalanced, sending, by the device, a message to a switch associated with the LAG requesting the switch to modify routing of ingress traffic to the LAG to perform ingress traffic load balancing.

In yet another illustrative embodiment, a system/apparatus is provided. The system/apparatus may comprise link aggregation logic, monitoring logic, and traffic load balancing logic, each of which are configured to perform respective ones, or combinations of, the operations of the method described above. In some illustrative embodiments, the system/apparatus may comprise one or more processor and a memory coupled to the one or more processors. The memory may comprise instructions which, when executed by the one or more processors, cause the one or more processors to perform various ones of, and combinations of, the operations outlined above with regard to the method illustrative embodiment.

DETAILED DESCRIPTION

As mentioned above, one mechanism for increasing the reliability and throughput of network connections is to use link aggregation and aggregate a plurality of links into a Link Aggregation Group (LAG). A problem arises, however, under current aggregation models, in that the load distribution among the traffic flows (flow of data, data packets, frames, etc. from one element to another) and adapters in use is determined by tuples, e.g., a tuple of source address, source port, destination address, and destination port. The lack of sufficient entropy in the active tuple space is the key determinant to unbalanced distribution of traffic on ingress flows, i.e. from the switch to the LAG. Entropy, in this context, refers to a measure of randomness where a high port entropy allows distribution of connections uniformly across all available ports in a LAG without any skew. Because links are specified in terms of tuples, even when link aggregation is utilized, traffic of a particular link tends to go through a single port rather than multiple ports so as to avoid out-of-order packets, leading to a lack of sufficient entropy. The particular port to which the traffic is directed is determined before the traffic arrives at the network adapter of the host system and thus, is not able to be controlled by the host system. For example, a hashing algorithm may be utilized by the switches of the network to take fields of a packet and generate a hash index that points to a particular hash bucket identifying a corresponding port with which the connection is associated.

The egress distribution, i.e. from the LAG to the switch, is software controlled where software executing on the host system can ensure proper traffic distribution among the links of the LAG by performing load balancing operations. Thus, the ingress flow traffic balance is outside the control of the LAG mechanisms of the host even though egress traffic control is within the control of such LAG mechanisms. The switch to which the LAG is coupled is bound to the tuple constraints to ensure no out of order processing occurs on the LAG side. It would be beneficial to have a mechanism which allows the LAG to indicate to the switch how and when to perform rebalancing of the ingress flows such that optimal performance is obtained regardless of the particular traffic flows.

The illustrative embodiments provide mechanisms for autonomic traffic load balancing in link aggregation groups (LAGs). With the mechanisms of the illustrative embodiments, a LAG coordinates with an associated switch to negotiate graceful transition of ingress traffic flows among the members of the LAG. In some illustrative embodiments, the Link Aggregation Control Protocol (LACP) is extended to include extension fields to allow for passing information to the switch to indicate the options for ingress traffic rebalancing. With the mechanisms of the illustrative embodiments, the balancing of the ingress traffic is under the control of the LAG by providing extended fields in heartbeat messages that are constantly flowing between the switch and the LAG. These extended fields contain information about which links in the LAG are being overused. The extended fields may further contain information about which links in the LAG are links to which traffic that is otherwise mapped to the overused link should be redirected. The switch uses this information when routing traffic to reroute traffic from the overused link in the LAG to the desired link in the LAG. In this way, the ingress traffic is rebalanced under the control of the LAG of the host system.

The illustrative embodiments provide relief in situations where the network performance bottleneck is seen at an endpoint, i.e. source or destination computing device. The illustrative embodiments allow a system administrator to reduce network pressure by adding more adapters to the LAG, e.g., an Etherchannel. The load balancing of the illustrative embodiments is achieved without requiring measures of various metrics on the communication devices to assure port entropy. Furthermore, the illustrative embodiments do not suffer from out-of-order packet issues that plague round-robin load balancing methods.

The above aspects and advantages of the illustrative embodiments of the present invention will be described in greater detail hereafter with reference to the accompanying figures. It should be appreciated that the figures are only intended to be illustrative of exemplary embodiments of the present invention. The present invention may encompass aspects, embodiments, and modifications to the depicted exemplary embodiments not explicitly shown in the figures but would be readily apparent to those of ordinary skill in the art in view of the present description of the illustrative embodiments.

Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium is a system, apparatus, or device of an electronic, magnetic, optical, electromagnetic, or semiconductor nature, any suitable combination of the foregoing, or equivalents thereof. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical device having a storage capability, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber based device, a portable compact disc read-only memory (CDROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium is any tangible medium that can contain or store a program for use by, or in connection with, an instruction execution system, apparatus, or device.

In some illustrative embodiments, the computer readable medium is a non-transitory computer readable medium. A non-transitory computer readable medium is any medium that is not a disembodied signal or propagation wave, i.e. pure signal or propagation wave per se. A non-transitory computer readable medium may utilize signals and propagation waves, but is not the signal or propagation wave itself. Thus, for example, various forms of memory devices, and other types of systems, devices, or apparatus, that utilize signals in any way, such as, for example, to maintain their state, may be considered to be non-transitory computer readable media within the scope of the present description.

As a server, data processing system200may be, for example, an IBM® eServer™ System P® computer system, running the Advanced Interactive Executive (AIX®) operating system or the LINUX® operating system. Data processing system200may be a symmetric multiprocessor (SMP) system including a plurality of processors in processing unit206. Alternatively, a single processor system may be employed.

In accordance with the illustrative embodiments, one or more of the computing devices inFIG. 1may implement link aggregation mechanisms that implements Link Aggregation Groups (LAGs) and permits such LAGs to control ingress traffic by providing mechanisms for communicating between the LAGs and their associated switches to thereby inform the switches of the manner by which the LAGs wish the switches to rebalance traffic across the links of the LAG. For example, network adapters, such as network adapter212inFIG. 2, in one or more of the servers104,106inFIG. 1may implement logic and an extended Link Aggregation Control Protocol (LACP) that is extended to implement the features of the illustrative embodiments for performing ingress traffic load balancing with a LAG of the network adapter.

FIGS. 3-4are example diagrams illustrating issues with regard to unbalanced traffic in a link aggregation group.FIG. 3is an example diagram of the link aggregation group during normal operation when traffic is balanced across the links, i.e. no spikes in traffic have occurred on any of the links of the link aggregation group. As shown inFIG. 3, the link aggregation group (LAG)310, created using the link aggregation logic320(which may be implemented as software executed on hardware of the network adapter, firmware, hardware logic circuits, or any combination of the above) of the network adapter330, comprises four links312-318that are aggregated into the LAG310. The links312-318may be provided via physical of a network adapter that are coupled to the switch340of a switch fabric350. It should be appreciated that the network adapter may utilize logical ports as well, but these logical ports must be coupled to the switch340via physical ports. Logical ports may be assigned to LAGs in a similar manner as physical ports without departing from the spirit and scope of the illustrative embodiments.

The links themselves may utilize any suitable communication protocol for the particular implementation. For purposes of the description of the illustrative embodiments, it will be assumed that the links are Ethernet links. However, it should be appreciated that this is only an example and is not intended to be limiting with regard to the types of links with which the illustrative embodiments operate. To the contrary, other types of links, such as Fiber Channel, InfiniBand, and the like, may be used without departing from the spirit and scope of the illustrative embodiments.

As mentioned above, the links312-318are combined into a LAG by link aggregation logic320of the network adapter330. Link aggregation is generally known in the art and thus, a more detailed explanation of how link aggregation is accomplished is not provided herein. Any link aggregation model and logic may be used to perform the actual link aggregation and manage the link aggregation with the illustrative embodiments enhancing the management of the link aggregation by providing the additional functionality as described herein for balancing ingress traffic of a LAG.

For purposes of the description of the illustrative embodiments, it will be assumed that the LAG310is an EtherChannel comprising the plurality of Ethernet links312-318. EtherChannel is a port link aggregation technology that allows grouping of several physical Ethernet links to create on logical Ethernet link for purposes of providing fault-tolerance and high-speed links between switches, routers, and servers. An EtherChannel can be created from between two and eight active Fast, Gigabit or 10-Gigabit Ethernet ports, with an additional one to eight inactive (failover) ports which become active as the other active ports fail. EtherChannel is primarily used in the backbone network, but can also be used to connect end user machines. While an EtherChannel is assumed for description purposes, this is not intended to be limiting and any type of LAG310may be used depending on the particular implementation desired.

As shown inFIG. 3, the traffic flowing from the switch340of the switch fabric350into the LAG310, i.e. ingress traffic, is balanced under normal conditions. This is depicted inFIG. 3as the arrow pointing from the switch340to the link ports (physical or logical)312-318being all of the same thickness. That is, no link312-318is being overly utilized and no other link312-318is being underutilized. In such a situation, load balancing of the ingress traffic is not needed and the mechanisms of the illustrative embodiments need not perform any rebalancing of the ingress traffic.

With reference now toFIG. 4, this figure illustrates a condition in which the traffic flowing from the switch340to the LAG310becomes unbalanced. This may occur, for example, when there is a burst or spike of traffic on one of the links312-318of the LAG310. For example, in the depicted example, the traffic on link318experiences a spike which is depicted as a wider or thicker arrow flowing from the switch340to port318of the LAG310. In accordance with the illustrative embodiments, monitoring logic360is provided in the network adapter330for monitoring the load on each of the links312-318. For example, the monitoring logic360may generate statistics for each of the links312-318of the LAG310to determine a statistical measure of the amount of data flowing through each of the links312-318over a specified time quanta. These statistical measures may be further analyzed by the monitoring logic360to determine if the traffic of the LAG310is unbalanced. For example, comparisons of the statistical measures of each of the links312-318for the specified time quanta may be made to determine if one or more of the links312-318has a threshold amount or more of extra traffic than another link312-318in the LAG310. Other types of analysis may be utilized as long as the analysis results in an indication of whether the ingress traffic of a LAG is balanced or unbalanced.

The monitoring logic360generates a result based on its analysis as to whether the ingress traffic of the LAG310is unbalanced or not and provides that result, as well as the statistical measure information for the links312-318to the traffic load balancing logic370of the network adapter330. The traffic load balancing logic370determines the manner by which to balance the traffic load across the links312-318of the LAG310. In so doing, the traffic load balancing logic370determines a desired LAG link and an exclude LAG link. The desired LAG link is a preferred physical link to which future traffic for the connection is to be transitioned, e.g., a link312-316that has a relatively lower statistical measure of traffic flow for the time quanta. The exclude LAG link is a physical link to exclude from the balancing group for this connection so that additional future traffic is not directed to this link, e.g., a link318having a relatively high statistical measure of traffic flow for the time quanta.

This information may be communicated back to the switch340so that the switch340may utilize this information when routing traffic to the LAG310. That is, this information is communicated back to the switch340along with information specifically identifying the connection with which the information is associated. The switch340receives this information and updates its routing table(s)380, e.g., its Content Addressable Memories (CAM), to route traffic, e.g., data packets, to the desired LAG link port and to no longer route traffic to the exclude LAG link port. Various ways of implementing this change in the routing may be utilized including extending the CAM table of the routing table(s)380to include a directive field for each entry that has a pointer to a directive database that indicates a directive for routing purposes. Other implementations may be to include an invalidate bit for link entries in the CAM table that invalidates the exclude LAG link and may have a different value for desired LAG links. Any implementation that permits the switch340to discern between a desired LAG link and an exclude LAG link in a LAG of a connection may be used without departing from the spirit and scope of the illustrative embodiments.

After updating its routing table(s)380data structures, the switch340may begin routing the ingress traffic destined for the LAG310using the updated routing table(s)380. In this way, traffic is rebalanced by rerouting traffic from the overly utilized link318to one or more of the less utilized links312-316. The network adapter320on the LAG310side of the communication is responsible for buffering and synchronizing data packets until the traffic begins to flow over the newly configured LAG links. Hence, the balance of the ingress traffic is returned to the state shown inFIG. 3.

In order to communicate the information from the LAG310side of the communication connection to the switch340, e.g., from the traffic load balancing logic370of the network adapter320to the switch340, a message is transmitted by the network adapter320to the switch340. Such messages may be sent continuously, periodically, or in response to detected events, e.g., in response to an unbalanced traffic load of the LAG310being detected. In one illustrative embodiment, the message sent to the switch340is a Link Aggregation Control Protocol (LACP) message having the information in a LACP header associated with the LACP message. The LACP message may be a heartbeat message that is sent from the network adapter320to the switch340on a periodic basis to inform the switch340that the connections with the network adapter320are still live. The illustrative embodiments may utilize reserved fields of the LACP header that are not being utilized for communicating other information, as a mechanism for communicating the information regarding desired and excluded LAG links for specified connections to the switch340. Thus, a separate message for this purpose is not required and the information may be communicated without requiring additional fields or large payloads in the LACP message.

FIG. 5is an example diagram of a LACP header of an LACP message in accordance with one illustrative embodiment. As shown inFIG. 5, the LACP header500comprises a plurality of fields, the majority of which are utilized for their standard purposes as specified in the LACP specification. As shown inFIG. 5, fields510and520, in the LACP specification, are reserved fields for the actor (the entity initiating communication and performing actions), and the partner, respectively. These fields may be 3 bytes in size in the current LACP specification. However, in accordance with the illustrative embodiments, these fields510and520are repurposed to store the traffic load balancing information530that is communicated by the network adapter to the switch for purposes of performing ingress traffic load balancing for a LAG. For example, a tuple value and unique token value (described hereafter) may be placed in field510and a desired/exclude LAG link identifiers may be placed in field520. Of course other distributions of this information between fields510and520may be used without departing from the spirit and scope of the illustrative embodiments.

For example, in one illustrative embodiment, on the LAG side of the communication connection, each ingress tuple representing a communication connection, e.g., source address, source port, destination address, and destination port, is identified by a unique token value. This token value may be provided to the switch via a LACP extension exchange such that the switch is informed of the correspondence between the tuple and the token and this information may be stored in a routing table data structure in the switch.

The LACP message that is transmitted from the network adapter to the switch contains the LACP header500with the ingress traffic load balancing information contained in one or more of the fields510and520of the LACP header500. The ingress traffic load balancing information comprises the tuple value for the connection, i.e. the switch side value used to identify the connection (this tuple may be generated via a tuple hashing mechanism of the switch as is generally known in the art). The ingress traffic load balancing information further comprises the unique token that is generated on the LAG side to identify the connection, the desired LAG link identifier which is the preferred physical link to transition future traffic to as determined by the traffic load balancing logic of the network adapter, and an exclude LAG link identifier which is the physical link to exclude from the balancing group for the connection as determined by the traffic load balancing logic for the network adapter. It should be appreciated that the token is included in the illustrative embodiments since it is foreseeable that different directives may be used for the same tuple, however in other illustrative embodiments the tuple along may be used without the need for a token.

Thus, the LACP header500contains the ingress traffic load balancing information that is used to direct the switch to perform ingress traffic load balancing for the LAG and is communicated by the network adapter to the switch. Such control over ingress traffic for LAGs is not available in known load balancing mechanisms.

The LACP message containing the LACP header500may be a heartbeat message that is sent to the switch on a periodic basis to inform the switch that the network adapter is still alive and functioning properly. Alternatively, the LACP message may be a message that is sent in response to an event being detected, such as the detection of unbalanced ingress traffic for a LAG, for example. In accordance with the illustrative embodiments, the switch further comprises logic for consuming the received LACP message and using the token value, desired LAG link, and exclude LAG link as additional entropy variables when generating the result of the tuple hash of a data packet. That is, if a data packet is destined for the LAG and has a tuple hash that results in the exclude LAG link being the target of the routing, then the desired LAG link is used instead, at least until further notice from the network adapter.

The LACP message having the LACP header500is sent to the switch as a request which the switch is free to ignore if the switch does not support such functionality or if conditions exist that make it necessary to ignore the request. One or more of these LACP messages may be exchanged between the network adapter and the switch, such as one for each LAG supported by the network adapter. While a single LACP message at a time is described above as being used to reconfigure the routing of the switch with regard to ingress traffic, the illustrative embodiments are not limited to such. Rather, in some illustrative embodiments, the network adapter may generate a LACP frame with multiple LACP messages describing multiple connections. The switch may then batch process the messages when the LACP frame is received at the switch.

The determination of an unbalanced condition of ingress traffic of a LAG and subsequent messaging between the network adapter and the switch may be repeated over the lifetime of the LAG to switch association, thereby providing normalization of optimal performance traffic distribution. The mechanism of the illustrative embodiments avoid using an OSI layer 5 header as it introduces application level impacts resulting in proprietary protocols. Thus, the illustrative embodiments are independent of any mechanism which would break the standard OSI or application semantics.

FIG. 6is a flowchart outlining an example operation for performing ingress traffic balancing in accordance with one illustrative embodiment. As shown inFIG. 6, the operation starts with the establishment in a network adapter of a link aggregation group (LAG) comprising a plurality of links, each being identified by a tuple, e.g., source address, source port, destination address, and destination port (step610). A unique token is associated with each of the links in the LAG and communicated to the switch with which the LAG is associated (step620). The ingress traffic of the links of the LAG is monitored and statistical measures of the ingress traffic are generated (step630). The statistical measures of the ingress traffic are analyzed to determine if the ingress traffic is unbalanced across the links of the LAG (step640).

A determination is made as to whether the ingress traffic is unbalanced for the LAG (step650). If not, the operation terminates. If so, then a desired LAG link and exclude LAG link are identified (step660). An ingress traffic load balancing request is transmitted to the switch indicating the desired LAG link and exclude LAG link (step670). The switch updates its routing data structures to cause data traffic targeting the exclude LAG link to be rerouted to the desired LAG link before transmission to the LAG (step680). The operation then terminates.

It should be appreciated that whileFIG. 6illustrates the operation terminating, the operation may in fact be repeated on a continuous or periodic basis. Moreover, it should be appreciated that whileFIG. 6shows the message being transmitted in response to the determination that the ingress traffic is unbalanced, in other illustrative embodiments the messages are always transmitted, but when the ingress traffic is not unbalanced, the messages will not indicate any desired or exclude LAG links. Such an embodiment may utilize the heartbeat messages transmitted between the network adapter and switch to accomplish the messaging, for example.

Moreover, it should be appreciated that while the illustrative embodiments have been described with the traffic load balancing and monitoring logic being provided in the network adapter, in other illustrative embodiments, one or more of the logic elements may be provided in the host system associated with the network adapter. In this way, the host system may be involved in determining how to perform the traffic load balancing for a LAG rather than requiring the logic to be provided in the network adapter.

Thus, the illustrative embodiments provide mechanisms for allowing the LAG of a network adapter to control the routing of traffic to the LAG by the network adapter. In this way, ingress traffic may be load balanced when it would otherwise not be able to be controlled by the LAG.