Select the interface for the device group identifier

By calculating the hash value of the device group identifier and optimizing hash ordering, the data center architecture's traffic interruption problem is solved when the interface is faulty or new interfaces are online, achieving load balancing and cost reduction.

CN113826079BActive Publication Date: 2025-04-29CISCO TECHNOLOGY INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080035616.6
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-09-06
Filing Date
2020-05-29
Publication Date
2025-04-29
Estimated Expiration
2040-05-29

AI Technical Summary

Technical Problem

Existing data center architectures may unnecessarily interrupt or readjust multicast routing traffic when interface failure or new interfaces are online, resulting in increased traffic loss and computational expenses.

Method used

By calculating the hash value of the device group identifier, select the most appropriate interface for allocation, and optimize hash ordering to minimize traffic movement when an interface fails or a new interface is available.

Benefits of technology

It realizes that when an interface fails or a new interface is online, balancing the interface load without destroying the normal operating traffic, reducing unnecessary traffic movement and computing costs.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113826079B_ABST
    Figure CN113826079B_ABST
Patent Text Reader

Abstract

In one embodiment, the computer network device calculates a first hash value for an identifier of a group of computing devices and calculates a second hash value for the identifier of the group of computing devices, each hash value being at least partially related to the identifier of the group of computing devices and an identifier of each interface. The computer network device may also analyze the first hash value relative to the second hash value and select a first interface to associate with the identifier of the group of computing devices based at least in part on the analysis. The computer networking device may further store an indication that the identifier of the group of computing devices is associated with the first interface.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to U.S. Patent Application No. 16 / 563,122, filed on September 6, 2019, which claims priority to U.S. Provisional Patent Application No. 62 / 855,859, filed on May 31, 2019, both of which are incorporated herein by reference. Technical Field

[0003] The present disclosure generally relates to techniques for selecting interfaces for device group identifiers in a manner that distributes the identifiers across the interfaces while minimizing the need to move connections when interfaces fail or new interfaces come online. Background Art

[0004] In today's digital world, more and more service providers manage and provide computing resources to users to meet their needs without the need for users to invest in and maintain their own computing infrastructure. For example, cloud computing typically involves the use of a network of data centers that house servers, routers, and other devices to provide users with computing resources, such as computing resources, network resources, storage resources, database resources, application resources, etc. Users can be allocated portions of computing resources that include portions of one or more host servers that can provide computing functions and one or more target servers that can provide storage for use by the host servers.

[0005] In such data center architectures, communications between computing devices are often routed through a series of switches, routers, and other computer network devices. In some cases, these communications include group communications for a target group of computing devices. In order to balance the load between the various components of the architecture, different device group identifiers can be assigned to different interfaces, and corresponding communications are transmitted along these interfaces. In addition, in order to balance the load, these techniques can reassign interfaces to device group identifiers in response to interface failures or new interfaces coming online. However, some of these reassignments may unnecessarily move traffic associated with the device group identifier from interfaces that are still operating to other interfaces in the architecture.

[0006] Therefore, while techniques exist to assign device group identifiers to corresponding interfaces to balance loads in a data center architecture, it may be advantageous to have a way of balancing such loads without unnecessarily interrupting the assignment of device group identifiers to normally operating interfaces. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] The following detailed description is made with reference to the accompanying drawings. In the drawings, the leftmost digit of a reference number identifies the drawing in which the reference number first appears. The same reference numbers are used in different drawings to indicate similar or identical items. The systems depicted in the drawings are not to scale, and the components in the drawings may not be depicted to scale with respect to each other.

[0008] Figure 1 A system architecture diagram of an exemplary environment is shown in which a computer network device routes traffic, such as multicast traffic, within a computing fabric. To route such multicast or other point-to-multipoint traffic, the computer network device may assign different multicast addresses to different external interfaces. As described below, the computer network device may make these assignments in a manner that balances the load of available interfaces while avoiding unnecessary reallocation of multicast addresses from an operating interface to other interfaces.

[0009] Figure 2 An example is shown, where Figure 1 The interface allocation component executed on the computer network device of the embodiment of the present invention calculates a corresponding hash value for each of 10 exemplary device group identifiers (e.g., multicast addresses) using the corresponding device group identifier and the identifier of each of four exemplary external interfaces. As shown in the figure, the interface allocation component can then sort the hash values ​​for each device group identifier to determine which interfaces are assigned to which device group identifiers. In one example, the interface associated with the highest hash value is assigned to the corresponding device group identifier, and the interface associated with the second highest hash value is assigned as a backup interface for the corresponding device group identifier.

[0010] Figure 3 An exemplary situation is shown in which one of four exemplary interfaces fails, resulting in the need to reroute traffic for device group identifiers assigned to the failed interface to one or more other interfaces. In this example, the computer network device identifies those device group identifiers currently assigned to the failed interface and identifies a backup interface for each of these identified device group identifiers. Thereafter, the computer network device assigns the identified device group identifiers to their corresponding backup interfaces while avoiding moving unaffected device group identifiers from interfaces that are still functioning.

[0011] FIG. 4A to FIG. 4BAn exemplary situation is shown together in which a new interface for routing group (e.g., multicast) communications becomes available. In this example, the computer network device can generate a hash value for each of ten exemplary device group identifiers using the corresponding device group identifier and the identifier of the new, fifth interface. The computer network device can then identify whether the corresponding hash value is the maximum hash value of any device group identifier (relative to the other four hash values). If so, the computer network device can assign the new fifth interface to these device group identifiers while avoiding changing the assignment of other device group identifiers.

[0012] Figure 5 A flow chart is shown of an example method for assigning interfaces to device group identifiers using the techniques described herein.

[0013] Figure 6 A flow chart of an exemplary method for determining when to reallocate interfaces to device group identifiers in response to interface failures and / or new interfaces becoming available using the techniques described herein is shown. As described below, the techniques can reallocate interfaces in a manner that balances the load on the available interfaces without unnecessarily disrupting traffic on interfaces that are still operating.

[0014] 7A to 7C Together, flow diagrams are shown of exemplary methods of assigning interfaces to device group identifiers (eg, multicast addresses) and potentially reassigning interfaces using the techniques described herein.

[0015] Figure 8 is a computer architecture diagram showing an illustrative computer hardware architecture for implementing a device (eg, a computer network device) configured to implement the techniques described herein. DETAILED DESCRIPTION

[0016] Overview

[0017] Various aspects of the invention are listed in the independent claims, and preferred features are listed in the dependent claims. Features of one aspect may be applied individually to each aspect or in combination with other aspects.

[0018] The present disclosure describes, in part, a computer network device configured to calculate a first hash value of an identifier of a group of computing devices, the first hash value being at least partially about the identifier of the group of computing devices and an identifier of a first interface. In addition, the computer network device may be configured to calculate a second hash value of the identifier of the group of computing devices, the second hash value being at least partially about the identifier of the group of computing devices and an identifier of the second interface. The computer network device may be configured to analyze the first hash value relative to the second hash value, and select a first interface associated with the identifier of the group of computing devices based at least in part on the analysis. The computer network device may be further configured to store an indication that the identifier of the group of computing devices is associated with the first interface.

[0019] Furthermore, the techniques described herein may be performed by methods and / or non-transitory computer-readable media storing computer-executable instructions that, when executed by one or more processors, perform the methods described herein.

[0020] Exemplary Embodiments

[0021] A typical data center architecture includes interconnected computer network devices (e.g., switches, routers, etc.) that are configured to route large amounts of traffic to other devices in the architecture. This traffic may include multicast traffic or other communications that specify individual identifiers for groups of computing devices. In some cases, these data center architectures (e.g., leaf-spine architectures, three-tier architectures, etc.) include pods in which low-level computer network devices are connected to high-level computer network devices. For example, in a leaf-spine architecture, a pod may include several "leaf" switches, each of which is connected to a "spine" switch, which in turn is connected to a router for communicating with other pods in the architecture. In some cases, each spine in a pod is connected to a router via one or more interfaces (e.g., external interfaces) so that all traffic from below the spine is routed to one or more of these interfaces.

[0022] In order to communicate effectively within and across large data center architectures, these architectures can enable devices to send messages to corresponding addresses, each of which identifies a potential large number of subscribing devices. For example, such an architecture can implement multicast addresses, each of which represents a logical identifier of a group of server computing devices in the network. In order to enable leaf devices in such an architecture to send and receive multicast or other multi-device communications, these architectures can associate each multicast route with a corresponding interface between the spine of the pod and the router of the pod. For example, if the architecture enables ten exemplary multicast routes, and if the pod of the architecture includes four interfaces from the spine of the pod to the router of the pod, the architecture can assign each of the ten multicast routes to one of the four available interfaces. In some cases, the architecture can perform the above operations in a relatively balanced load manner for each interface. For example, in this example, the architecture can balance the load so that each of the four interfaces can route (e.g., send and receive) traffic from two or three of the exemplary ten multicast routes or route traffic to two or three of the ten multicast routes.

[0023] Existing algorithms for assigning multicast routes to external interfaces attempt to balance this load by distributing routes evenly across available interfaces. However, when an interface fails or becomes unavailable, or when a new interface becomes available, existing algorithms may reallocate routes to interfaces, thereby disrupting the flow of multicast routes associated with the up-and-coming links. In other words, when an interface fails or a new interface becomes available, existing algorithms may readjust the assignment of a relatively large number of routes to interfaces, causing routes that would otherwise be unaffected - e.g., those currently associated with the up-and-coming interface - to be moved to the new interface. Given that moving routes from one interface to another requires reprogramming on the spine, these moves in the assignment of routes to interfaces may result in unnecessary traffic loss and computational overhead.

[0024] Thus, this disclosure describes techniques for assigning multicast (and other multi-destination) routes to interfaces in a manner that both balances the load of the interfaces and minimizes unnecessary movement of routes currently associated with the interfaces that are in operation.

[0025] Continuing with the above example, consider a situation where one or more computer network devices (e.g., a "spine" device) are configured to assign one of four available interfaces to each of ten corresponding identifiers of a computing device group. That is, consider a situation where a first spine has two interfaces (e.g., IF A and IF B ) is associated with the second ridge and two interfaces (e.g. IF C and IF D), and each spine is configured to determine which available interface is to be assigned to an identifier of a first group of computing devices (e.g., a first multicast route), which available interface is to be assigned to an identifier of a second group of computing devices (e.g., a second multicast route), and so on. To do this, each spine can calculate hash values ​​for each combination of each device group identifier (e.g., a multicast route) and an available interface, and can use these hash values ​​to select an interface to assign to each device group identifier.

[0026] For example, in the example above, each spine can calculate, for the identifier of the first group of computing devices, a first hash value based on the available first interface, a second hash value based on the available second interface, a third interface based on the available third interface, and a fourth hash value based on the available fourth interface. The spine can then analyze the four hash values ​​relative to each other to select which of the four interfaces to assign to the identifier of the first group of devices. In one example, the spine can select the interface associated with the highest hash value.

[0027] In one example, the spine can generate hash values ​​based on identifiers of the groups of computing devices, identifiers of specific interfaces, and identifiers of the spines associated with the specific interfaces. Continuing with the above example, for example, each spine can generate the following four hash values ​​for the identifiers of the first group of computing devices (ID1):

[0028] Hash_Value1=hash_fnc(ID1, <Spine1,IF A >)

[0029] Hash_Value2=hash_fnc(ID1, <Spine1,IF B >)

[0030] Hash_Value3=hash_fnc(ID1, <Spine2,IF c >)

[0031] Hash_Value4=hash_fnc(ID1, <Spine2,IF D >)

[0032] After calculating each of the four hash values ​​for the identifier of the first group of computing devices, each spine may order the values ​​relative to each other and may determine which hash value is the highest of the four values ​​and may associate the interface associated with the highest hash value with the identifier of the first group of computing devices. In addition, the spine associated with the selected interface may set up a connection so that communications to or from the device group identifier are routed through the selected interface. For example, if each of the two spines determines that the identifier of the first group of computing devices (ID1) is to be associated with the first (IF A ) or the second interface (IF B ), then the first ridge can configure the connection. However, if the ridge determines that ID1 will be associated with the third (IF C ) or the fourth interface (IF D ) then the fourth ridge can configure the connection.

[0033] In addition, the spine can determine which interface is associated with the second highest hash value and can store an indication that this interface will be the backup interface in the event that the primary interface (i.e., the selected interface) fails. In addition, the interface associated with the third highest hash value can serve as a backup for the backup interface, and so on.

[0034] Thus, continuing with the above example, suppose that two spines have calculated hash values ​​in the manner described above and have generated hash values ​​for the following ten device group identifiers (ID1, ID2, ID3, ID4, ID5, ID6, ID7, ID8, ID9, and ID 10 ) selects the interface. Further assume that the spine has assigned the interface to the device group identifier as follows:

[0035] ID1=>IF D

[0036] ID2=>IF B

[0037] ID3=>IF C

[0038] ID4=>IF D

[0039] ID5=>IF A

[0040] ID6=>IF A

[0041] ID7=>IF C

[0042] ID8=>IF B

[0043] ID9=>IFA

[0044] ID 10 =>IF D

[0045] In this example, if the fourth interface (IF D ) failure, the device group identifier associated with the failed interface can be transferred to one or more other interfaces, while the remaining device group identifiers can remain associated with their current corresponding interfaces. For example, in the above example, identifiers ID1, ID4 and ID 10 The interface with the second highest hash value for each device group identifier may be transferred from the fourth interface. That is, each spine may determine the interface associated with the second highest hash value previously calculated for the first device group identifier and may associate the interface with the first device group identifier. Similarly, each spine may determine these corresponding "spare" interfaces for the fourth and tenth device group identifiers and may configure corresponding interfaces for these device group identifiers.

[0046] However, it is to be understood that, upon an interface failure, the techniques described herein do not require that device group identifiers (e.g., multicast routes) associated with unaffected interfaces be rerouted to different interfaces in response to the exemplary interface failure. That is, although the fourth interface becomes unavailable in the above example, each of the ten device group identifiers whose communications were not routed through the fourth interface continue to be associated with their interface. Instead, only the three affected device group identifiers (i.e., those associated with the failed interface) are moved to the new interface. Thus, the techniques described herein significantly reduce the traffic loss and computational overhead of moving a relatively large number of device group identifiers upon an interface failure.

[0047] In another example, one or more new interfaces may become available, such as when an interface is added to an existing spine or when a new spine comes "online." In these examples, each spine can calculate a hash value for each device group identifier based on the identifier of the new interface. For example, if the second spine in the above example adds a fifth interface (the third interface of the second spine) IF5, each spine can now calculate an additional hash value for each of the ten device group identifiers. In addition, each spine can determine whether the new hash value represents the maximum value in the (now) five hash value sets, and if so, an indication can be stored that the corresponding device group identifier will be associated with the fifth interface, and a corresponding path can be configured for the device group identifier. At the same time, for each device group identifier whose highest hash value is not associated with the fifth interface, the existing association can persist.

[0048] Again, it is to be understood that these techniques can generally balance the load of device group identifiers (e.g., multicast routing) while limiting the situations in which device group identifiers currently associated with operating interfaces are to be moved. Thus, the techniques described herein minimize the traffic loss and computational cost associated with setting up and tearing down communication paths (e.g., multicast routing) for device group identifiers.

[0049] Certain implementations and embodiments of the present disclosure will now be described more fully below with reference to the accompanying drawings, in which various aspects are shown. However, various aspects may be implemented in many different forms and should not be construed as being limited to the implementations described herein. The present disclosure includes variations of the embodiments described herein. Similar reference numerals refer to similar elements throughout the text.

[0050] Figure 1 A system architecture diagram of an exemplary environment 100 is shown, which includes one or more servers 102 in a network, which are connected through a structure 104 of the network, representing one or more computer network devices 106. The computer network device 106 may include an array of one or more devices, such as gateways, routers, network bridges, modems, wireless access points, network cables, line drivers, switches, hubs, protocol converters, servers, firewalls, network address translators, multiplexers, network interface controllers, wireless network interface controllers, terminal adapters, and / or the like.

[0051] In some examples, environment 100 includes a data center or cloud computing network that includes servers and other network components (e.g., routers, switches, etc.) stored in multiple data centers located in different geographic regions. In these cases, the cloud computing environment can be a distributed network that users (typically customers) can interact with through user devices to manage or otherwise interact with services provided by the cloud computing network. The cloud computing network can provide on-demand availability of computing system resources (such as data storage, computing power (such as CPU, GPU, etc.), network, database, etc.) without the need for direct active management by the user. In some examples, the cloud computing network can be managed and maintained by a service provider so that the user does not have to invest in and maintain computing infrastructure for its computing resource needs. In general, users can obtain access to or allocate usage rights to a portion of the computing resources in the cloud computing network. The cloud computing network can be expanded according to the needs of a single user, for example, by increasing or decreasing resources. A portion of the cloud computing network can be allocated using hardware virtualization so that a portion of the cloud computing network can be configured and managed by the user (e.g., security configuration, load balancing configuration, etc.). However, the cloud computing network does not need to be managed by a service provider and can be managed by any entity (including the user running the application or service itself).

[0052] As shown, in some cases, the computer network device 106 can be at least partially arranged in a multi-layer architecture, such as a three-layer architecture, a leaf-spine architecture, and / or the like. In the illustrated embodiment, the computer network device 106 can include a first computer network device 106(1) (or "router 106(1)") connected to a second computer network device 106(2) (or "first spine 106(2)") and a third computer network device 106(3) (or "second spine 106(3)"). The first spine 106(2) can send traffic to and receive traffic from the router 106(1) via a first interface 108(A) and a second interface 108(B). At the same time, the second spine 106(3) can send traffic to and receive traffic from the router 106(1) via a third interface 108(C) and a fourth interface 108(D).

[0053] In addition, the first spine 106(2) and the second spine 106(3) can be connected to a fourth computing network device 106(4) (or "first leaf 106(4)"), a fifth computing network device 106(5) (or "second leaf 106(5)"), a sixth computing network device 106(6) (or "third leaf 106(6)"), and a seventh computing network device 106(7) (or "fourth leaf 106(7)"). It will be understood that although the present example is described with reference to the illustrated leaf and spine architecture, these techniques can be applied to other multi-layer architectures having any other number of computer network devices.

[0054] Figure 1 Components of the first spine 106(2) are further shown. It is to be understood that the second spine 106(2) and potentially other computer network devices 106 may include the same or similar components. As shown, the first spine 106(2) may include a memory 110 (e.g., a non-transitory computer readable medium) and one or more hardware processors 108. The processor 108 may be configured to execute one or more stored instructions and may include one or more kernels. At the same time, the memory 110 may store one or more operating systems that generally support the basic functionality of the first spine 106(2) as well as the interface determination component 112 and the routing component 118.

[0055] The interface determination component 112 is configured to determine, for each of the plurality of device group identifiers, which interface is to be assigned to the corresponding device group identifier. For example, the interface determination component 112 can be configured to determine which of the four interfaces 108(A)-(D) shown is to be assigned to an identifier of a first group of computing devices (e.g., a first multicast "route" or "address"), which of the four interfaces 108(A)-(D) shown is to be assigned to an identifier of a second group of computing devices (e.g., a second multicast "route" or "address"), and so on. In some cases, the interface determination component 112 can make these determinations by calculating one or more hash values ​​for each device group identifier and analyzing the hash values ​​relative to each other, as described below.

[0056] As shown, the interface determination component 112 may include a hash calculation component 114 and an interface selection component 116. The hash calculation component 114 may be configured to generate one or more hash values ​​for each device group identifier, and the interface selection component 116 may analyze these hash values ​​to select an interface for each device group identifier. In some examples, the hash calculation component 114 may generate a hash value for each combination of each device group identifier and each interface. For example, in an example with ten device group identifiers (and four interfaces 108 (A)-(D) shown), the hash calculation component 114 may generate four hash values ​​for each device group identifier, i.e., 40 hash values. In some cases, the hash calculation component 114 may generate a hash value for each device group identifier based at least in part on one or more of the identifiers of each device group identifier, each interface, and each ridge associated with each interface using a predefined hash function. For example, in an example of two ridges each associated with two interfaces, the hash calculation component may calculate the following hash values ​​for "N" device group identifiers (e.g., multicast routing):

[0057] Device Group Identifier 1 (ID1):

[0058] Hash_Value1=hash_fnc(ID1, <Spine1,IF A >);

[0059] Hash_Value2=hash_fnc(ID1, <Spine1,IF B >);

[0060] Hash_Value3=hash_fnc(ID1,<Spine2,IFc> );and

[0061] Hash_Value4=hash_fnc(ID1, <Spine2,IF D >).

[0062] Device Group Identifier 2 (ID2):

[0063] Hash_Value1=hash_fnc(ID2, <Spine1,IF A >);

[0064] Hash_Value2=hash_fnc(ID2, <Spine1,IF B >);

[0065] Hash_Value3 = hash_fnc(ID2,<Spine2,IFc> );and

[0066] Hash_Value4=hash_fnc(ID2, <Spine2,IF D >).

[0067] ***

[0068] Device Group Identifier N (ID N ):

[0069] Hash_Value1 = hash_fnc(ID N , <Spine1,IF A >);

[0070] Hash_Value2 = hash_fnc(ID N , <Spine1,IF B >);

[0071] Hash_Value3 = hash_fnc(ID N ,<Spine2,IFc> );and

[0072] Hash_Value4 = hash_fnc(ID N , <Spine2,IF D >).

[0073] At the same time, the interface selection component 116 can receive the hash value generated by the hash selection component 114, and can select the interface associated with the device group identifier for each device group identifier. For example, the interface selection component 116 can compare each of the four corresponding hash values ​​with each other to select an interface. In one example, the interface selection component 116 is configured to sort the hash values ​​from large to small, and select the interface associated with the largest hash value as the interface through which the traffic to and from the corresponding device group identifier is routed. In addition, the interface associated with the second largest hash value can include a backup interface for the device group identifier, so that in the event of a failure of the selected (or "primary") interface, the traffic to and from the device group identifier is routed through the backup interface.

[0074] At the same time, routing component 118 can be configured to route traffic to corresponding device group identifiers based on the interfaces selected by interface selection component 116. In some cases, routing component 118 stores indications of which interfaces are associated with which device group identifiers in address-interface data store 120, which will be referred to below. Figure 2 Further details are discussed. In addition, routing component 118 can be configured to program each corresponding spine and interface according to the selected interface / device group identification pairing.

[0075] However, in some cases, one or more interfaces in the pod shown may fail, while in other cases, one or more interfaces may become available. In each example, the interface selection component 116 can be configured to select an interface for each device group identifier in a manner that balances the load across interfaces while minimizing the traffic loss and programming associated with moving the device group identifier across interfaces. For example, in the case of an interface failure, the interface selection component 116 can be configured to determine which device group identifiers are currently associated with the failed interface. That is, the interface selection component 116 can determine that the traffic of those device group identifiers is routed through the failed interface. The interface selection component can then determine a spare interface (e.g., an interface associated with the second highest hash value calculated and sorted above) for each of these identified device group identifiers. The interface selection component 116 can then provide this information to a routing component 118, which can enable the interface to receive traffic from the affected device group identifier and can update the data store 120.

[0076] However, it is noted that the algorithm executed by the interface selection component causes device group identifiers whose traffic was not routed through the failed interface to maintain their current interfaces. That is, those device group identifiers associated with interfaces that are still healthy continue to route traffic through those interfaces, thereby minimizing traffic loss and the computational overhead associated with rerouting that traffic to new interfaces.

[0077] Meanwhile, in other cases, one or more new interfaces may become available, for example, where a new spine comes online or an interface is added to an existing spine. In these cases, in response to receiving an indication that a new interface is available, hash calculation component 114 can generate a hash value associated with the new interface for each of the "N" device group identifiers. Again, these corresponding hash values ​​can be based on one or more of the device group identifier, the identifier of the new interface, and the identifier of the spine associated with the new interface.

[0078] When generating a new hash value for each device group identifier (or multiple hash values ​​if multiple interfaces are available), the interface selection component can determine whether the new hash value is the maximum value for any device group identifier. If so, the interface selection component 116 can provide an indication to the routing component 118, which can divert traffic associated with these device group identifiers to the new interface and can update the data store 120 accordingly. In addition, if the new interface is not associated with the highest hash value, but is associated with the second or third highest hash value, the interface selection component 116 can provide this indication to the routing component 118, which can update the backup interface in the data store 120, etc.

[0079] Figure 2 An example of the above technique is shown. As shown, the hash calculation component 114 can calculate hash values ​​for four available interfaces for each of ten device group identifiers (e.g., multicast routing), as described above. At the same time, the interface selection component 116 can rank these hash values ​​from one to four for each of the ten device group identifiers. Likewise, it should be understood that the number of device group identifiers and the number of available interfaces are illustrative, and other possibilities include more and / or fewer numbers of device group identifiers and the number of available interfaces.

[0080] Figure 2 An ordering 202 of each hash value for each device group identifier is shown. As shown, for the identifier of the first group of computing devices ("ID(1)"), the hash value associated with interface 108(A) ("IF(A)") is the highest hash value, followed by the hash value associated with interface 108(D) ("IF(D)"), followed by the hash value associated with interface 108(C) ("IF(C)"), followed by the hash value associated with interface 108(B) ("IF(B)"). Thus, in this example, interface 108(A) may be used as the interface for routing communications between the pods, while interface 108(D) may be designated as a backup interface. It is to be understood that Figure 2 Each primary interface (the interface over which traffic for a given device group identifier will be routed) is shown as a square, while each backup interface is shown as a circle.

[0081] Given the exemplary ranking, interface selection component 116 can determine the following associations between device group identifiers and available interfaces:

[0082] ID(1)=>interface 108(A);

[0083] ID(2)=>interface 108(C);

[0084] ID(3)=>interface 108(B);

[0085] ID(4)=>interface 108(A);

[0086] ID(5)=>interface 108(D);

[0087] ID(6)=>interface 108(B);

[0088] ID(7)=>interface 108(C);

[0089] ID(8)=>interface 108(D);

[0090] ID(9)=>interface 108(A); and

[0091] ID(10)=>interface 108(C).

[0092] In addition, the interface selection component 116 may determine the following association between the device group identifier and the available interface to be designed as the backup interface for the device group identifier:

[0093] ID(1)=>interface 108(D);

[0094] ID(2)=>interface 108(B);

[0095] ID(3)=>interface 108(A);

[0096] ID(4)=>interface 108(C);

[0097] ID(5)=>interface 108(B);

[0098] ID(6)=>interface 108(D);

[0099] ID(7)=>interface 108(A);

[0100] ID(8)=>interface 108(B);

[0101] ID(9)=>interface 108(C); and

[0102] ID(10)=>interface 108(D).

[0103] Based on the above exemplary ranking 202, the routing component can store respective indications 204 of the primary interface and the backup interface for each device group identifier in the data store. In addition, the routing component 118 can configure the interfaces 108(A)-(D) on the corresponding spines 106(2) and 106(3) to send and receive data traffic based on the indications 204.

[0104] Figure 3 An exemplary situation is shown in which one of four exemplary interfaces fails, resulting in the need to reroute traffic for device group identifiers assigned to the failed interface to one or more other interfaces. In this example, interface 108(A) fails. In response, interface determination component 112 can determine (e.g., from data store 120) those device group identifiers for which traffic is currently being routed through failed interface 108(A). In this example, interface determination component 112 can determine that the following three of the ten example device group identifiers are currently associated with interface 108(A): ID(1), ID(4), and ID(9).

[0105] In response, interface determination component 112 may determine that a previously listed backup interface (e.g., an interface associated with the second highest hash value) is to become the primary interface, or is to become the interface through which traffic to and from the device group identifiers is to be routed. For example, interface determination component 112 may determine that the identifier of the first group of computing devices (ID(1)) is now to be associated with interface 108(D), the identifier of the fourth group of computing devices (ID(4)) is now to be associated with interface 108(C), and the identifier of the ninth group of computing devices (ID(9)) is now to be associated with interface 108(C).

[0106] In response to receiving this information, routing component 118 may configure the interface (and therefore the spine) to be receiving and sending traffic for these respective device group identifiers. In addition, routing component 118 may update data store 120 to indicate the new association of addresses to interfaces. In addition, routing component 118 may update data store 120 to indicate new backup interfaces for these device group identifiers. That is, each interface associated with the third highest hash value may now be designated as a backup interface. For example, routing component 118 may indicate that interface 108(C) is now a backup interface for the first group of computing device identifiers, interface 108(B) is now a backup interface for the fourth group of computing device identifiers, and interface 108(D) is now a backup interface for the ninth group of computing device identifiers.

[0107] In addition, interface determination component 112 and / or routing component 118 can determine that the backup interfaces correspond to those device group identifiers of the now failed interface 108(A). In this example, component 112 or component 118 can determine that the identifier of the third group of computing devices (ID(3)) and the identifier of the seventh group of computing devices (ID(7)) designate interface 108(A) as the backup interface. Thus, while the identifiers of these device groups do not need to be changed from their current interfaces, routing component 118 can update data store 120 to indicate the new backup interfaces (interfaces 108(D) and 108(B), respectively).

[0108] FIG. 4A to FIG. 4B An exemplary scenario is collectively illustrated in which a new interface 108(E) becomes available for routing group (e.g., multicast) communications. In response to determining the availability of interface 108(E), hash calculation component 114 may calculate a hash value corresponding to new interface 108(E) for each device group identifier. As described above, the hash value may be based on one or more of the device group identifier, the identifier of interface 108(E), and / or the identifier of spine 106(3) associated with interface 108(E). Thereafter, interface selection component 116 may generate a reordering 402 of hash values ​​for each device group identifier, or may otherwise determine whether the new hash value is greater than the primary interface hash value (and possibly the backup interface hash value).

[0109] In this example, the new hash value is the fifth largest hash value of the first group of computing device identifiers, the fourth largest hash value of the second group of computing device identifiers, and so on. Importantly, this new hash value is the maximum hash value of the identifiers of the third group of computing devices and the identifiers of the eighth group of computing devices. Therefore, the interface selection component 116 can select this new interface 108 (E) as the primary interface for these device group identifiers. The routing component 118 can receive this indication and reroute traffic from interfaces 108 (B) and 108 (D) to interface 108 (E), respectively. In addition, the routing component 118 can update the data store 120 to indicate this change, as well as indicating that the previous primary interfaces (108 (B) and 108 (D), respectively) now correspond to backup interfaces when interface 108 (E) fails.

[0110] Figure 4BThe new association between ID(3) and ID(8) and the new interface 108(E) and the change to the backup interface for these device group identifiers is shown by the stored indication 402. In addition, the interface selection component 116 or the routing component 118 can determine that the new hash value is the second largest hash value for the following device group identifiers: ID(5) and ID(7). Therefore, the routing component has updated the stored indication 402 in the data store 120 to indicate that the interface 108(E) will become the backup interface for these device group identifiers.

[0111] Figure 5 A flow chart is shown of an exemplary method 500 for assigning an interface to a device group identifier using the techniques described herein. In some cases, the method 500 and other described methods may be performed in whole or in part by one or more computer network devices 106 (e.g., first spine 106(2), second spine 106(3), etc.).

[0112] As shown, operation 502 represents calculating a hash value based at least in part on an identifier of a candidate interface for an identifier (e.g., a multicast address) of a computing device group. As described above, the hash value may also be based at least in part on an identifier of a spine device maintaining the interface and / or an identifier of the computing device of the group.

[0113] Meanwhile, operation 504 represents determining whether there are additional candidate interfaces. If so, the process returns to operation 502 for computing another hash value of the identifier of the set of computing devices based at least in part on the identifier of the additional candidate interface.

[0114] However, if this is not the case (e.g., after calculating a hash value for each candidate interface), the method proceeds to identifying an interface in the candidate interfaces associated with the highest hash value for the identifier of the set of computing devices at operation 506. Operation 508 represents storing an indication that the identifier of the set of computing devices is associated with the interface associated with the highest hash value. For example, the indication may indicate that communications with and / or from the identifier of the set of computing devices are to be routed through the indicated interface.

[0115] Meanwhile, operation 510 represents identifying an interface of the candidate interface associated with the second highest hash value, and operation 512 represents storing an indication that the interface comprises a backup interface for the primary interface identified in operation 506. Thus, the interface associated with the second highest hash value may be used to route communications to and / or from the identifier of the set of computing devices in the event that the primary interface fails (e.g., goes offline, etc.).

[0116] At the same time, operation 514 represents determining whether there are additional identifiers for a group of computing devices associated with the interface, such as whether there are additional multicast addresses for associating with the primary interface and / or the backup interface. If so, the method 500 returns to operation 502 for selecting the primary interface and the backup interface through the above operations. However, if not (e.g., after selecting the primary and / or backup interface for each identifier of the computing device group), the method continues at operation 516 to program routing within the architecture based on the association between the identifier of the device group and the corresponding interface.

[0117] Figure 6 A flow chart of an exemplary method 600 for determining when to reallocate interfaces to device group identifiers in response to interface failures and / or new interfaces becoming available using the techniques described herein is shown. As described below, the techniques can reallocate interfaces in a manner that balances the load across available interfaces without unnecessarily disrupting traffic on interfaces that remain operational.

[0118] Operation 602 represents storing an association between each device group of one or more device groups and a corresponding interface. This operation may include, for example, storing an association between an identifier of a first group of computing devices (e.g., a first multicast address) and a primary interface of the group of devices, storing an association between an identifier of a second group of computing devices (e.g., a second multicast address) and a primary interface of the group of devices, etc. Meanwhile, operation 604 represents routing communications to the identifier of the device group according to the stored association.

[0119] At operation 606, the method 600 determines whether one or more interfaces have failed. If not, the method may continue to determine whether one or more new interfaces are available at operation 608. If not, the method 600 returns to operation 604, indicating routing communications according to the stored associations between the identifiers of the device groups and the associated interfaces.

[0120] However, if the method 600 determines at operation 606 that an interface has failed, then at operation 610, the method may identify any identifiers of device groups associated with the failed interface. At the same time, operation 612 represents deleting the association between each identified device group identifier and the failed interface. In other words, the route calculation 118 may delete the association between the affected device group identifier and the failed interface at the corresponding spine.

[0121] At the same time, operation 614 represents, for each device group identifier previously associated with the failed interface, identifying the available interface associated with the highest of the remaining hash values. That is, operation 614 represents, for each affected device group identifier, determining the interface associated with the highest hash value (excluding the failed interface). In some cases, the operation includes the routing component 118 accessing the data store 120 to determine, for each affected device group identifier, the interface listed as a backup interface. Operation 616 represents storing the association between these device group identifiers and each corresponding interface determined at operation 614.

[0122] Returning to operation 608, this operation represents determining whether the new interface is already available for the device group identifier. If so, then operation 618 represents calculating a hash value based at least in part on the identifier of the new interface for each device group identifier. As described above, the hash value can further be based at least in part on the respective device group identifier and the identifier of the spine device associated with the new interface.

[0123] Operation 620 represents determining whether the new hash value is the highest hash value for any device group identifier. If so, then operation 622 represents, for each device group identifier for which the new hash value is the highest hash value, deleting the association between the device group identifier and its primary interface, and storing the association between the device group identifier and the new interface. The method 500 then proceeds to operation 504 described above, as it would if the new hash value was not the highest hash value for any device group identifier. In addition, although not illustrated, it is to be understood that in some cases, the method 500 may further include updating the association between one or more device group identifiers and the backup interface, as described above.

[0124] 7A to 7C Collectively, a flow chart is shown of an exemplary method 700 for assigning and potentially reassigning interfaces to a device group identifier (eg, a multicast address) using the techniques described herein.

[0125] Operation 702 represents calculating a first hash value for an identifier of a group of computing devices, the first hash value being based at least in part on an identifier of the group of computing devices and an identifier of a first interface. Meanwhile, operation 704 represents calculating a second hash value for an identifier of the group of computing devices, the second hash value being based at least in part on an identifier of the group of computing devices and an identifier of a second interface. In some cases, the first and second hash values ​​are also based at least in part on an identifier of a computer network device associated with each interface.

[0126] Operation 706 represents analyzing the first hash value relative to the second hash value, and operation 708 represents selecting the first interface to be associated with the identifier of the group of computing devices based at least in part on the analysis. In some cases, the analysis includes comparing the first hash value to the second hash value to determine the highest hash value. However, it is understood that in other cases, any agreed-upon function may be used to select an interface, such as selecting the interface with the lowest hash value, or the like.

[0127] Meanwhile, operation 710 represents storing an indication that the identifier of the group of computing devices is associated with the first interface, and operation 712 represents storing an indication that the second interface is to be used as a backup for the first interface of the group of computing devices.At operation 714, method 700 determines that the first interface has failed.

[0128] Figure 7B Method 700 is continued and includes, at operation 716, deleting an indication that the identifier of the set of computing devices is associated with the first interface, and storing an indication that the identifier of the set of computing devices is associated with the second interface, at operation 718. That is, now that the primary interface has failed, communications with the identifier of the set of computing devices may now be routed via the second interface, the second interface comprising the backup interface.

[0129] Operation 720 represents receiving an indication that the third interface has been opened. At operation 722, method 700 calculates a third hash value of an identifier of a group of computing devices based at least in part on receiving an indication that the third interface has been opened, the third hash value being based at least in part on an identifier of the first group of computing devices and an identifier of the third interface. Operation 724 represents analyzing the third hash value relative to at least the second hash value (corresponding to the interface that is now the primary interface). Operation 726 represents determining whether to select the third interface as the primary interface (e.g., based on the third hash value being greater than the second hash value). If not, operation 728 represents determining not to select the third interface to be associated with the group of computing devices based at least in part on an analysis of the third hash value relative to at least the first hash value.

[0130] If the third interface is selected, then method 700 proceeds to Figure 7C Operation 730 represents deleting the indication that the identifier of the group of computing devices is associated with the second interface, and at operation 732, storing the indication that the identifier of the group of computing devices is associated with the third interface. Accordingly, communications sent to and / or from the identifier of the group of computing devices will be routed through the third interface.

[0131] The implementation of the various components described herein is a matter of choice depending on the performance and other requirements of the computing system. Therefore, the logical operations described herein are referred to as operations, structural devices, actions, or modules to varying degrees. These operations, structural devices, actions, and modules may be implemented in software, firmware, special purpose digital logic, and any combination thereof. It should also be understood that the comparison may be made. Figure 5 , Figure 6 and 7A to 7C The present invention also provides a method for performing the above-mentioned operations. The above-mentioned operations may be performed in parallel or in a different order than described herein. Some or all of these operations may also be performed by those specifically identified components. Although the techniques described in this disclosure refer to specific components, in other examples, these techniques may be implemented by fewer components, more components, different components, or any configuration of components.

[0132] Figure 8 800 , which can be used to implement various aspects of the various techniques presented herein. The computer network device 106 and / or server 102 discussed above may include some or all of the components discussed below with reference to the device 800 .

[0133] As described above, the computing resources provided by a cloud computing network, a data center, or a similar organization may be data processing resources (e.g., virtual machine instances or hardware computing systems, database clusters, computing clusters, storage clusters) data storage resources, database resources, network resources, and others. Some devices 800 may also be configured to execute a resource manager capable of instantiating and / or managing computing resources. For example, in the case of a virtual machine instance, the resource manager may be a hypervisor or another type of program configured to be able to execute multiple virtual machine instances on a single server device 800. The device 800 of the data center may also be configured to provide network services and other types of services.

[0134] The device 800 includes a baseboard 802 or "motherboard", which is a printed circuit board to which numerous components or devices may be connected via a system bus or other electrical communication paths. In one illustrative configuration, one or more central processing units (CPUs) 804 operate in conjunction with a chipset 806. The CPU 804 may be a standard programmable processor that performs the arithmetic and logic operations required for the operation of the device 800.

[0135] The CPU 804 operates by manipulating switching elements that distinguish and change these states, transitioning from one discrete physical state to the next. Switching elements generally include electronic circuits that maintain one of two binary states (such as flip-flops) and electronic circuits that provide output states based on logical combinations of the states of one or more other switching elements (such as logic gates). These basic switching elements can be combined into more complex logic circuits, including registers, adder-subtractors, arithmetic logic units, floating point units, and the like.

[0136] Chipset 806 provides an interface between CPU 804 and the remaining components and devices on baseboard 802. Chipset 806 can provide an interface to RAM 808, which is used as the main memory of device 800. Chipset 806 can further provide an interface with computer-readable storage media (such as read-only memory (ROM) 810 or non-volatile RAM (NVRAM)), which is used to store basic programs that help start device 800 and transfer information between components and devices. ROM 810 or NVRAM can also store other software components required to operate device 800 according to the configuration described herein.

[0137] The device 800 can operate in a network environment using logical connections to remote computing devices and computer systems via a network, such as a local area network 824. The chipset 806 may include functionality for providing network connectivity via a network interface card (NIC) 812, such as a Gigabit Ethernet adapter. The NIC 812 is capable of connecting the device 800 to other computing devices via a network. It should be understood that multiple NICs 812 may be present in the device 800 to connect the computer to other types of networks and remote computer systems.

[0138] The device 800 may be connected to a storage device 818 that provides non-volatile storage for the computer. The storage device 818 may store an operating system 820, programs 822, and data, which have been described in more detail herein. The storage device 818 may be connected to the device 800 via a storage controller 814 connected to the chipset 806. The storage device 818 may be composed of one or more physical storage units. The storage controller 814 may be connected to the physical storage unit via a serial attached SCSI (SAS) interface, a serial advanced technology attachment (SATA) interface, an FC interface, or other types of interfaces to physically connect and transfer data between the computer and the physical storage unit.

[0139] The device 800 can store data on the storage device 818 by transforming the physical state of the physical storage unit to reflect the stored information. In different examples of the present description, the specific transformation of the physical state can depend on various factors. Examples of these factors can include, but are not limited to, the technology used to implement the physical storage unit, whether the storage device 818 is characterized as primary storage or secondary storage, etc.

[0140] For example, the device 800 can store information to the storage device 818 by issuing instructions through the storage controller 814 to change the magnetic characteristics of specific locations in the magnetic disk drive unit, the reflective or refractive characteristics of specific locations in the optical storage unit, or the electrical characteristics of specific capacitors, transistors or other discrete components in the solid-state storage unit. Other transformations of the physical medium are possible without departing from the scope and spirit of the present description, and the above examples are provided only for the convenience of this description. The device 800 can further read information from the storage device 818 by detecting the physical state or characteristics of one or more specific locations in the physical storage unit.

[0141] In addition to the mass storage device 818 described above, the device 800 can access other computer-readable storage media to store and retrieve information, such as program modules, data structures or other data. It should be understood by those skilled in the art that computer-readable storage media is any available medium that provides non-temporary storage of data and can be accessed by the device 800.

[0142] By way of example, and not limitation, computer-readable storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology. Computer-readable storage media include, but are not limited to, RAM, ROM, erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory or other solid-state storage technology, compact disk ROM (CD-ROM), digital versatile disk (DVD), high-definition DVD (HD-DVD), BLU-RAY or other optical storage, magnetic tape, magneto-optical disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information in a non-temporary manner.

[0143] As briefly mentioned above, the storage device 818 can store an operating system 720 for controlling the operation of the device 800. According to one example, the operating system includes a LINUX operating system. According to another example, the operating system includes a LINUX operating system from MICROSOFT Corporation of Redmond, Washington. SERVER operating system. According to further embodiments, the operating system may include a UNIX operating system or one of its variants. It should be understood that other operating systems may also be utilized. Storage device 818 may store other systems or applications and data used by device 800.

[0144] In one example, the storage device 818 or other computer-readable storage medium is encoded with computer-executable instructions that, when loaded into the device 800, transform the computer from a general-purpose computing system into a special-purpose computer capable of implementing the examples described herein. As described above, these computer-executable instructions transform the device 800 by specifying how the CPU 804 transitions between states. According to one example, the device 800 can access a computer-readable storage medium storing computer-executable instructions that, when executed by the device 800, perform the various processes described above with respect to Figures 4-7C. The device 800 can also include a computer-readable storage medium having stored thereon instructions for performing any other computer-implemented operations described herein.

[0145] The device 800 may also include one or more input / output controllers 816 for receiving and processing input from some input device, such as a keyboard, a mouse, a touch pad, a touch screen, an electronic stylus, or other types of input devices. Similarly, the input / output controller 816 may provide output to a display (such as a computer monitor, a flat panel display, a digital projector, a printer) or other types of output devices. It is understood that the device 800 may not include Figure 8 All components shown in the Figure 8 Other components not explicitly shown in the drawings or may utilize Figure 8 A completely different architecture is shown in .

[0146] The server device 800 may also store the interface determination component 112 and the routing component 118 in the storage device 818 for performing the above reference. Figure 1-7C Some or all of the techniques described.

[0147] In summary, in one example, a computer network device calculates a first hash value for an identifier of a group of computing devices and calculates a second hash value for the identifier of the group of computing devices, each hash value being based at least in part on the identifier of the group of computing devices and an identifier of a corresponding interface. The computer network device may also analyze the first hash value relative to the second hash value and select a first interface to associate with the identifier of the group of computing devices based at least in part on the analysis. The computer network device may further store an indication that the identifier of the group of computing devices is associated with the first interface.

[0148] Although the present invention is described with respect to specific examples, it should be understood that the scope of the present invention is not limited to these specific examples. Since other modifications and changes made to adapt to specific operating requirements and environments are obvious to those skilled in the art, the present invention is not considered to be limited to the examples selected for the purpose of disclosure, and covers all changes and modifications that do not constitute a departure from the true spirit and scope of the present invention.

[0149] Although the present application describes examples with specific structural features and / or method actions, it should be understood that the claims are not necessarily limited to the specific features or actions described. Instead, the specific features and actions are only examples that fall within the scope of the claims of the present application.

Claims

1. A computer network device, comprising: one or more processors; as well as One or more non-transitory computer-readable media storing computer-executable instructions, which, when executed by the one or more processors, cause the one or more processors to perform the following actions, the actions comprising: calculating, at a first network device and a second network device, a first hash value, the first hash value representing at least an identifier of a group of computing devices and an identifier of a first interface of the first network device; calculating, at the first network device and the second network device, a second hash value, the second hash value representing at least an identifier of the set of computing devices and an identifier of a second interface of the second network device; determining, by the first network device and the second network device, and based at least in part on the first hash value and the second hash value, that a first interface of the first network device is a better interface for sending traffic for the set of computing devices than a second interface of the second network device; Based at least in part on the first interface being a better interface, establishing a connection with the set of computing devices through the first network device, thereby causing the traffic to flow through the first interface.

2. The computer network device according to claim 1, wherein the actions further comprise: storing an indication to use the second interface as a backup for the first interface of the set of computing devices; Determining that the first interface has failed; deleting an indication associating identifiers of the set of computing devices with the first interface; as well as An indication is stored associating identifiers of the set of computing devices with the second interface.

3. The computer network device according to claim 1 or 2, wherein the actions further comprise: receiving an indication that the third interface has been opened; as well as Based at least in part on receiving an indication that the third interface has been opened, a third hash value is calculated, the third hash value representing at least an identifier of the set of computing devices and an identifier of the third interface.

4. The computer network device according to claim 3, wherein the actions further comprise: analyzing the third hash value relative to at least the first hash value; selecting the third interface to be associated with an identifier of the set of computing devices based at least in part on an analysis of the third hash value relative to at least the first hash value; deleting an indication associating identifiers of the set of computing devices with the first interface; as well as An indication is stored associating identifiers of the set of computing devices with the third interface.

5. The computer network device according to claim 3, wherein the actions further comprise: analyzing the third hash value relative to at least the first hash value; Based at least in part on an analysis of the third hash value relative to at least the first hash value, a determination is made not to select the third interface for association with the set of computing devices.

6. The computer network device according to claim 1 or 2, wherein: The actions also include: calculating a third hash value representing an identifier of a second group of computing devices different from the group of computing devices, the third hash value being based at least in part on the identifier of the second group of computing devices and the identifier of the first interface; calculating a fourth hash value representing an identifier of the second set of computing devices, the fourth hash value being based at least in part on the identifier of the set of computing devices and an identifier of the second interface; analyzing the third hash value relative to the fourth hash value; selecting the second interface to be associated with an identifier of the second set of computing devices based at least in part on an analysis of the third hash value relative to the fourth hash value; and An indication is stored associating identifiers of the second group of computing devices with the second interface.

7. The computer network device according to claim 1 or 2, wherein: Calculating the first hash value further comprises: calculating the first hash value based at least in part on an identifier of the set of computing devices, an identifier of the first interface, and an identifier of the computer network device; and Calculating the second hash value further includes calculating the second hash value based at least in part on an identifier of the set of computing devices, an identifier of the second interface, and an identifier of the computer network device.

8. A method comprising: calculating a first hash value at a first switch device and a second switch device, the first hash value representing at least an identifier of a group of computing devices and an identifier of a first interface of the first switch device, the first switch device being capable of sending traffic to the group of computing devices via the first interface; calculating a second hash value at the first switch device and the second switch device, the second hash value representing at least an identifier of the group of computing devices and an identifier of a second interface of the second switch device, the second switch device being capable of sending traffic to the group of computing devices via the second interface; determining, by the first switch device and the second switch device, and based at least in part on the first hash value and the second hash value, that a first interface of the first switch device is a better interface than a second interface of the second switch device for sending traffic for the group of computing devices; establishing, through the first switch device, a connection with the set of computing devices such that the traffic flows through the first interface based at least in part on the first interface being a better interface; The traffic is sent to the set of computing devices using the connection through the first switch device.

9. The method according to claim 8, further comprising: storing an indication to use the second interface as a backup for the first interface of the set of computing devices; Determining that the first interface has failed; deleting an indication associating identifiers of the set of computing devices with the first interface; as well as An indication is stored associating identifiers of the set of computing devices with the second interface.

10. The method according to claim 8 or 9, further comprising: receiving an indication that the third interface has been opened; as well as Based at least in part on receiving the indication that the third interface has been opened, calculating a third hash value that represents at least an identifier of the set of computing devices and an identifier of the third interface.

11. The method according to claim 10, further comprising: analyzing the third hash value relative to at least the first hash value; selecting the third interface to be associated with the identifier of the set of computing devices based at least in part on an analysis of the third hash value relative to at least the first hash value; deleting the indication that the identifier of the set of computing devices is associated with the first interface; as well as An indication that the identifiers of the set of computing devices are associated with the third interface is stored.

12. The method according to claim 10, further comprising: analyzing the third hash value relative to at least the first hash value; Based at least in part on an analysis of the third hash value relative to at least the first hash value, a determination is made not to select the third interface for association with the set of computing devices.

13. The method according to claim 8 or 9, wherein: The method further comprises: calculating a third hash value representing an identifier of a second group of computing devices different from the group of computing devices, the third hash value being based at least in part on the identifier of the second group of computing devices and the identifier of the first interface; calculating a fourth hash value representing an identifier of the second set of computing devices, the fourth hash value being based at least in part on the identifier of the set of computing devices and an identifier of the second interface; analyzing the third hash value relative to the fourth hash value; selecting the second interface to be associated with an identifier of the second set of computing devices based at least in part on an analysis of the third hash value relative to the fourth hash value; and An indication is stored associating identifiers of the second group of computing devices with the second interface.

14. One or more computer-readable media storing computer-executable instructions, which when executed, cause one or more processors to perform the following actions, the actions comprising: calculating a first hash value at a first switch device and a second switch device, the first hash value representing at least an identifier of a group of computing devices and an identifier of a first interface of the first switch device, the first switch device being capable of sending traffic to the group of computing devices via the first interface; calculating a second hash value at the first switch device and the second switch device, the second hash value representing at least an identifier of the group of computing devices and an identifier of a second interface of the second switch device, the second switch device being capable of sending traffic to the group of computing devices via the second interface; determining, by the first switch device and the second switch device, and based at least in part on the first hash value and the second hash value, that a first interface of the first switch device is a better interface for sending traffic for the set of computing devices than a second interface of the second switch device; establishing, through the first switch device, a connection with the set of computing devices such that the traffic flows through the first interface based at least in part on the first interface being a better interface; The traffic is sent to the set of computing devices using the connection through the first switch device.

15. The one or more computer-readable media of claim 14, the actions further comprising: storing an indication to use the second interface as a backup for the first interface of the set of computing devices; Determining that the first interface has failed; deleting an indication associating identifiers of the set of computing devices with the first interface; as well as An indication is stored associating identifiers of the set of computing devices with the second interface.

16. The one or more computer readable media of claim 14 or 15, the actions further comprising: receiving an indication that the third interface has been opened; as well as Based at least in part on receiving an indication that the third interface has been opened, a third hash value is calculated, the third hash value representing at least an identifier of the set of computing devices and an identifier of the third interface.

17. The one or more computer-readable media of claim 16, the actions further comprising: analyzing the third hash value relative to at least the first hash value; selecting the third interface to be associated with an identifier of the set of computing devices based at least in part on an analysis of the third hash value relative to at least the first hash value; deleting an indication associating identifiers of the set of computing devices with the first interface; as well as An indication is stored associating identifiers of the set of computing devices with the third interface.

18. A device comprising: means for calculating, at a first switch device and a second switch device, a first hash value, the first hash value representing at least an identifier of a group of computing devices and an identifier of a first interface of the first switch device, the first switch device being capable of sending traffic to the group of computing devices via the first interface; means for calculating, at the first switch device and the second switch device, a second hash value representing at least an identifier of the set of computing devices and an identifier of a second interface of the second switch device, the second switch device being capable of sending traffic to the set of computing devices via the second interface; means for determining, by the first switch device and the second switch device and based at least in part on the first hash value and the second hash value, that a first interface of the first switch device is a better interface for sending traffic for the set of computing devices than a second interface of the second switch device; means for establishing a connection with the set of computing devices through the first switch means based at least in part on the first interface being a better interface so that the traffic flows through the first interface; Means for sending the traffic to the set of computing devices using the connection through the first switch means.

19. The apparatus of claim 18, further comprising means for carrying out the method of any one of claims 9 to 13.

20. A computer program product comprising instructions which, when executed by a computer, cause the computer to perform the steps of the method according to any one of claims 8 to 13.

Citation Information

Patent Citations

  • Load balancing for multipath group routed flows by re-routing the congested route

    US10116567B1

  • Dynamic port failover

    US20060274647A1