Multiple active link aggregators

A computing device identifies a plurality of network interface controllers (NICs) of a computing device that are available for link aggregation. The computing device establishes a first link aggregator for a first set of the plurality of NICs and a second link aggregator for a second set of the plurality of NICs. The computing device activates the first link aggregator. The computing device activates the second link aggregator while maintaining the first link aggregator active to cause the first link aggregator and the second link aggregator to simultaneously handle network communications.

TECHNICAL FIELD

Implementations of the present disclosure relate to link aggregation, and more specifically to multiple active link aggregators.

BACKGROUND

Network interface controllers (NICs), also known as network adapters, network interface controllers, network interface cards, or local area network (LAN) adapters, are hardware devices that handle interfaces to computer networks and allow a computing device, such as a network-capable device, to access the respective networks. The NIC has a read-only memory chip that stores a unique number, the media access control (MAC) address. The MAC address identifies the device uniquely on the network (e.g., LAN). The NIC can be both Layer 1 (physical layer) and Layer 2 (data link layer) device, since it provides physical access to a networking medium and provides a low-level addressing system, typically using the MAC address. The NICs allow users of the computing devices to connect over wired or wireless networks.

The bandwidth used by a compute node in a data center typically exceeds the capabilities of a single NIC. Accordingly, link aggregation technologies are used to bundle network bandwidth and provide redundancy. In conventional systems, only a single aggregator can be active at a given time. While some conventional systems can have multiple aggregators, one aggregator is active and the others serve as backup aggregators. Should one of the backup aggregators become active, the originally active aggregator becomes a backup aggregator.

DETAILED DESCRIPTION

Described herein are methods and systems for providing multiple active link aggregators. Link aggregation is the generation of a single logical channel from the bundling of multiple physical ports. Link aggregation is performed to provide redundancy for network interface controllers (NICs), to provide bandwidth that is greater than a single NIC can provide, to perform load balancing, and for other reasons. Conventional systems, however, can only have one active aggregator. Accordingly, any additional aggregators are in-active and can be used for backup. This is problematic because the resources of the backup aggregator(s) are underutilized.

Implementations of the present disclosure provide a mechanism for a computing system to use available aggregators concurrently. In one implementation, processing logic identifies multiple (NICs) of a computing device that are available for link aggregation. The processing logic then establishes a first link aggregator for a first set of NICs and establishes a second link aggregator for a second set of NICs. The processing logic then activates the first link aggregator. The processing logic also activates the second link aggregator while maintaining the first link aggregator active. With both the first link aggregator and second link aggregator being active, they both can simultaneously handle network communications. Both link aggregators can be selected to handle data in any direction with respect to the computing device (e.g., incoming, outgoing).

Some implementations are described herein with reference to physical switches. However, it should be appreciated that the principles introduced and described with reference to physical switches also apply to virtual network switches. Accordingly, implementations of the present disclosure are not limited to physical switches, and those implementations describing physical switches may be modified for use with virtual network switches.

FIG. 1block diagram that illustrates an example system architecture in which link multiple active link aggregators may be configured, in accordance with one implementation of the present application. The example system architecture can include a computing device100. The computing device100may be a rackmount server, a workstation, a desktop computer, a notebook computer, a tablet computer, a mobile phone, a palm-sized computing device, a personal digital assistant (PDA), etc. The computing device100includes hardware105, which may include one or more processors120, one or more devices124, memory128, and multiple physical NICs130-142, and other hardware components. The memory128may include volatile memory devices (e.g., random access memory (RAM)), non-volatile memory devices (e.g., flash memory), and/or other types of memory devices. The hardware105may also be coupled to external storage (not shown) via a direct connection or a network. The computing device100may be a single machine or multiple machines arranged in a cluster.

Each of the devices124may be a physical device that is internal or external to the computing device100. Examples of internal devices include a graphics card, hardware RAID controller, secondary storage (e.g., hard disk drive, magnetic or optical storage based disks, tapes or hard drives), universal serial bus (USB) devices, internal input/output (I/O) devices, etc. Examples of external devices include a keyboard, mouse, speaker, external hard drive, external I/O devices, etc.

NICs130-142provide a hardware interface between the computing device100and a network. NICs may support wired standards, wireless standards, or both. The NICs130-142may be Ethernet controllers, Wi-Fi controllers, Token Rings, InfiniBand, and so forth. The NICs130-142provide functionality to communicate over a network using specific physical layer (OSI layer 1) and data link layer (OSI layer 2) standards (e.g., Ethernet, Wi-Fi, Token Ring, InfiniBand, etc.). Ethernet NICs typically support 10 Megabits per second (Mbits/s), 100 Mbits/s, 1000 Mbits/s, 10 Gigabits per second (Gbits/s) or 40 Gbits/s. Wi-Fi NICs typically support between 54 Mbits/s and 866 Mbits/s. Each NIC130-142includes a unique media access control (MAC) address, which may be stored in a read only memory of the NIC130-142.

The computing device100includes an operating system (OS)110. The computing device may additionally include a server (e.g., a web server), a database and/or database management system (DBMS), a hypervisor and/or virtual machines, or other functionality. The computing device100may be configured to manage many connections to other devices over a network. Accordingly, the computing device may consume large amounts of bandwidth, and may accordingly have multiple NICs130-142to handle the large bandwidth usage.

To optimally use the multiple NICs130-142, the computing device100may establish one or more link aggregators144,148using some or all of the NICs130-142. After establishing more than one link aggregator144,148, the computing device100may activate each of the established link aggregators144,148without deactivating any previously activated link aggregators144,148. Each of the activated link aggregators144,148can simultaneously handle network communications (incoming, outgoing), as further described in conjunction withFIG. 3.

To ensure that data (e.g., incoming, outgoing) is handled by the appropriate link aggregator144,148, the computing device100may assign an address to each link aggregator. The computing device100can select an address from an available set of addresses that have previously been allocated for link aggregation. In other implementations, the computing device100can generate an address for each link aggregator using any address protocol or technique, such as medium access control (MAC). In implementations, the computing device100associates a different MAC address with each link aggregator144,148. The MAC address for each link aggregator144,148can be broadcast to other components within the computing device100. Alternatively, any device can access each link aggregator144,148to determine the MAC address of the link aggregator144,148. Communications can be directed to a particular link aggregator144,148using the address. When the computing device100uses the link aggregators144,148, the computing device100can perform load balancing techniques to select a link aggregator to handle communications, as further described in conjunction withFIG. 4.

In one example, the operating system110can receive a communication to be handled by one of the link aggregators144,148. The communication can originate from within the computing device100or from another source, such as from another device via the network160. For example, an application on the computing device100can generate or receive a User Datagram Protocol (UDP) packet. Other types of communications are contemplated, such as frames (LACPDU), packets, and the like. The application can send the UDP packet to an operating system, such as by passing the UDP packet through a socket to a kernel. The operating system110identifies a destination address (e.g., a MAC address) for the UDP packet and then decides how to send the UDP packet to the destination. The operating system110selects a link aggregator using the techniques described herein. Then, the operating system110(e.g., the kernel) can pass the UDP packet through a driver to the selected link aggregator. The selected link aggregator uses a NIC associated with the selected link aggregator to send the UDP packet to a switch150,154and the switch uses the destination address to forward the UDP packet to the appropriate path (e.g., a port of the switch) toward the destination.

In implementations, the operating system110can use an NIC158to implement a bridge (e.g., a Level 2 bridge) through a network160. To implement the bridge, the operating system110can provide addresses of link aggregators144,148to the NIC158. The NIC158can receive communications from any source via the network160. The NIC158can forward the received communications to a link aggregator144,148using the addresses of link aggregators144,148. The NIC158can also receive communications from a link aggregator144,148and can forward the communications toward the destination via the network160.

In implementations, the operating system110establishes and/or activates the aggregators144,148according to a link aggregation control protocol (LACP). LACP is a link aggregation protocol that can be used to aggregate links that share the same switch150,154. That is, two NICs that are both connected to the same switch that supports LACP may be configured into a link-layer level link aggregation that uses the LACP protocol. LACP aggregated links may utilize all aggregated NICs for both uplinks and downlinks while non-LACP aggregated links may use all NICs for uplinks but only a single NIC for the downlink.

In implementations, the operating system110applies one or more aggregation rules to establish, activate and/or select the link aggregators. Aggregation rules may be used to associate individual NICs with specific link aggregators. In some implementations, NICs with higher weights are better capable of processing data than NICs with lower weights. The operating system110can use the weights when establishing a link aggregator. The operating system110, for example, can establish a link aggregator using the two NICs with the highest weight, thereby establishing a link aggregator that is highly capable of processing data. In another example, the operating system110can attempt to establish multiple link aggregators that are equally capable of processing data. For example, when the computing system includes four NICs, the operating system110can establish a first link aggregator from the NICs with the highest and lowest weights and a second link aggregator from the NICs with weights in the middle. In an example, the operating system110can assign weights to NICs based on their link speeds, where higher speed NICs are assigned a higher weighting than lower speed NICs, based on switch connectivity, where a higher weighting can be assigned to NICs that are connected to the same switch than to NICs that are connected to different switches. This is because typically higher performance gains can be realized for aggregations of links that are to the same switch. A third aggregation rule may assign a higher weighting to NICs that are connected to switches that support LACP than to NICs that are connected to switches that do not support LACP. Other aggregation rules may also be used, such as rules that are related to a number of aggregated ports, a total bandwidth of all ports, links within the aggregator, or LACP port priority. Any of the aggregation rules can be created or set by a system administrator. In some implementations, a system administrator creates a rule and the rule is transferred (e.g., via LACPDU packets) to the computing device100. The aggregation rules may be used in combination to determine an optimal link aggregator to handle a communication.

Multiple different types of link aggregation configurations are possible and can be defined by a system administrator or can be predefined (e.g., based on a specific type of hardware or purpose). For example, a first type of link aggregation configuration may combine multiple links in parallel to increase throughput above what a single NIC can sustain. A second type of link aggregation configuration may combine links in such a way that one or more secondary links provide redundancy in case a primary link fails. Other types of link configurations are also possible. An aggregated link may have a single logical address that is shared by multiple NICs or a single physical address that is shared by the multiple NICs.

FIGS. 2-4are flow diagrams of various implementations of methods related to multiple active link aggregators that can simultaneously handle communication. The methods are performed by processing logic that may include hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In one implementation, the methods are performed by an operating system110running multiple link aggregators, such as link aggregators144,148ofFIG. 1.

FIG. 2is a flow diagram illustrating one implementation for a method200of establishing and activating multiple link aggregators. At block205of method200, processing logic identifies multiple (NICs) of a computing device that are available for link aggregation. In one implementation, a system administrator provides a list or grouping of available NICs. In some implementations, the processing logic determines whether a list of available NICs has been provided. If no such list is available, processing logic may use one or more probes to identify NICs that are available for link aggregation.

At block210, processing logic establishes a first link aggregator for a first set of NICs. At block215, processing logic establishes a second link aggregator for a second set of NICs. The second link aggregator can handle communications at the same time as the first link aggregator. In some implementations, establishing the aggregators at blocks210and215includes assigning different addresses to or associating different addresses with the first and second aggregators.

At block220, the processing logic activates the first link aggregator. At block225, the processing logic activates the second link aggregator while maintaining the first link aggregator active. In implementations, the processing logic activates the second link when a certain event occurs (e.g., when the first link aggregator has reached a threshold data throughput capacity, an action by a system administrator, upon detection of data of a specific type of data (e.g., UDP, LACPDU).). The events may be defined as part of aggregation rules and/or aggregation configuration (e.g., as previously provided by a system administrator). In addition, the second link aggregator to be activated can be chosen based on the aggregation rules. For example, the second link can be established in response to receiving data of a specific protocol or type of data (e.g., UDP, LACPDU). The second link aggregator can be established specifically to support LACP, for example. In another example, the second link can be established to provide high data throughput based on NIC link speeds. In other implementations, the processing logic activates all link aggregators that have previously been established, such as at blocks205and210.

FIG. 3is a flow diagram illustrating one implementation for a method300of using multiple aggregators to simultaneously handle communications (e.g., incoming, outgoing). At block305of method300, processing logic (e.g., operating system110ofFIG. 1) receives a first data set (e.g., one or more data packets) from any source (e.g., from within the computing system100ofFIG. 1or via a network160ofFIG. 1). At block310, the processing logic selects a first link aggregator to process the first data set. One example of a selection mechanism is discussed in more detail below in conjunction withFIG. 4. At block315, the processing logic receives a second data set. At block320, the processing logic selects a second link aggregator, such as using techniques described in conjunction withFIG. 4, to process the second data set. The first link aggregator and the second link aggregator can process their respective data sets at the same time. In implementations, the processing logic selects the second link aggregator while the first link aggregator processes the first data packet.

FIG. 4is a flow diagram illustrating one implementation for a method400of selecting a link aggregator to handle a communication according to implementations. The link aggregator can be selected to handle data in any direction with respect to the computing device100ofFIG. 1(e.g., incoming, outgoing). At block405of method400, processing logic (e.g., operating system110ofFIG. 1) accesses a statistics table of a set of aggregators. The statistics table can include information about multiple aggregators, such as information related to load, capacity, bandwidth, or any other attribute of the link aggregators or their respective underlying NICs. At block410, the processing logic selects a link aggregator from among the set of link aggregators that are listed in the statistics table. In implementations, the processing logic applies aggregation rules and/or aggregation configuration settings to the statistics table to determine which link aggregator to use. For example, the processing logic can select the link aggregator that is under the least amount of load to handle the communication. In another example, the processing logic can select the link aggregator that is most capable of handling data of a specific protocol or type of data (e.g., UDP, LACPDU). In a further example, the processing logic can select the link aggregator with the highest bandwidth capacity. In yet another example, the processing logic can select a link aggregator where all of the NICs that comprise the link aggregator are connected to the same switch.

At block415, the processing logic can update the statistics table to reflect the selected aggregator. When updating the statistics table, the processing logic can enter a characteristic of the communication, such as a packet length, a data size, or the like at block420. For example, to indicate load of a link aggregator, the statistics table can include, for each link aggregator, a length of a communication that is being processed by the link aggregator. The statistics table can also include a length of a communication that is in a processing queue of a link aggregator. In some instances, once the processing logic updates the statistics table with this information, the selected link aggregator is no longer the least loaded link aggregator. Subsequent communications can be handled by another active link aggregator.

In some implementations, at block425, the processing logic can set a source address associated with the communication to an address of the selected aggregator. In some instances, the communication can be associated with an address of a first link aggregator. When the processing logic selects a second link aggregator to handle the communication, then the processing logic can change the source address from the first link aggregator to the second link aggregator. In implementations, when handling a stream of data (e.g., multiple data packets generated by a specific application), the source address for the stream of data is set to the selected link aggregator such that the entire stream of data is processed by the selected link aggregator.

The processing device502represents one or more general-purpose processors such as a microprocessor, central processing unit, or the like. The term “processing device” is used herein to refer to any combination of one or more integrated circuits and/or packages that include one or more processors (e.g., one or more processor cores). Therefore, the term processing device encompasses a single core CPU, a multi-core CPU and a massively multi-core system that includes many interconnected integrated circuits, each of which may include multiple processor cores. The processing device502may therefore include multiple processors. The processing device502may include a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. The processing device502may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.

The computer system500may further include one or more network interface devices522(e.g., NICs). The computer system500also may include a video display unit510(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device512(e.g., a keyboard), a cursor control device514(e.g., a mouse), and a signal generation device520(e.g., a speaker).

The secondary memory516may include a machine-readable storage medium (or more specifically a computer-readable storage medium)524on which is stored one or more sets of instructions554embodying any one or more of the methodologies or functions described herein (e.g., operating system110, link aggregators144,148ofFIG. 1). The instructions554may also reside, completely or at least partially, within the main memory504and/or within the processing device502during execution thereof by the computer system500; the main memory504and the processing device502also constituting machine-readable storage media.

Any modules, components and other features described herein (for example in relation toFIG. 1) can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices. In addition, the modules can be implemented as firmware or functional circuitry within hardware devices. Further, the modules can be implemented in any combination of hardware devices and software components, or only in software.

It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other implementations will be apparent to those of skill in the art upon reading and understanding the above description. Although the present disclosure has been described with reference to specific implementations, it will be recognized that the disclosure is not limited to the implementations described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.