IP Library Granted Patent US 8,780,902
Granted Patent B1
US 8,780,902 · App. 13/038,290 · Granted Jul 15, 2014

Multipathing using multiple endpoint addresses for load balancing in a network

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,780,902
App. No.
13/038,290
Granted
Jul 15, 2014
Kind
B1
Abstract

A method for balancing load on a network by selecting a path based on a load balancing algorithm and assigning one of several pairs of endpoint addresses for a flow based on the path selected. One pair of endpoint addresses corresponds to a first path and another pair of endpoint addresses corresponds to a second path. If the first path is selected, the first pair of endpoint addresses is assigned to the flow. If the second path is selected, the second pair of endpoint addresses is assigned to the flow. In one embodiment, based on the assigned pair of endpoint address, the flow is switched to an endpoint by the selected path.

Claims (49)

1. A method comprising:

selecting, by a first endpoint, one of a plurality of paths to a second endpoint for a flow based on a load balancing algorithm, the paths including at least a first path and a second path, the first path corresponding to a first pair of Infiniband local identifier endpoint addresses and including a first switch, and the second path corresponding to a second pair of Infiniband local identifier endpoint addresses and including a second switch, wherein a first destination Infiniband local identifier in the first pair of Infiniband local identifiers and a second destination Infiniband local identifier in the second pair of Infiniband local identifiers identify the second endpoint, and wherein the first destination Infiniband local identifier and the second destination Infiniband local identifier are not identical, wherein a first source Infiniband local identifier in the first pair of Infiniband local identifiers and a second source Infiniband local identifier in the second pair of Infiniband local identifiers identify the first endpoint, and wherein the first source Infiniband local identifier and the second source Infiniband local identifier are not identical, and wherein the load balancing algorithm comprises a load balancing algorithm that operates on performance data of the first switch and on performance data of the second switch;

assigning, by the first endpoint, the first pair of Infiniband local identifier endpoint addresses to the flow if the first path is selected; and

assigning, by the first endpoint, the second pair of Infiniband local identifier endpoint addresses to the flow if the second path is selected.

2. The method of claim 1 , wherein the second path does not include the first switch.

3. The method of claim 1 , further comprising:

based on the assigned pair of Infiniband local identifier endpoint addresses, switching the flow to an endpoint by the selected path.

4. The method of claim 1 , wherein selecting the path comprises alternating selection of the first path and of the second path.

5. The method of claim 1 , wherein selecting the path comprises:

determining a number of active flows through the first path;

determining a number of active flows through the second path;

if the number of active flows through the first path is larger than the number of active flows through the second path, selecting the second path; and

if the number of active flows through the second path is larger than the number of active flows through the first path, selecting the first path.

6. The method of claim 1 , wherein selecting the path comprises:

determining a first average based on an amount of data originated by an endpoint and

passing through a first critical section, the first path includes the first critical section;

determining a second average based on an amount of data originated by the endpoint and passing through a second critical section, the second path includes the second critical section; if the first average is larger than the second average, selecting the second path; and

if the second average is larger than the first average, selecting the first path.

7. The method of claim 1 , wherein selecting the path comprises:

determining a first average based on an amount of data passing through a first critical section, the first path includes the first critical section;

determining a second average based on an amount of data passing through a second critical section, the second path includes the second critical section;

if the first average is larger than the second average, selecting the second path; and

if the second average is larger than the first average, selecting the first path.

8. A system for balancing traffic load on a network, the system comprising:

an endpoint, including:

a processor; and

a memory, the memory containing a flow, a load balancing algorithm, and a load balancing program for selecting one of a plurality of paths to a second endpoint based upon the load balancing algorithm, the paths including at least a first path and a second path, the first path corresponding to a first pair of Infiniband local identifier endpoint addresses and including a first switch, and the second path corresponding to a second pair of Infiniband local identifier endpoint addresses and including a second switch, wherein the load balancing program assigns the first pair of Infiniband local identifier endpoint addresses to the flow if the first path is selected and assigns the second pair of Infiniband local identifier endpoint addresses to the flow if the second path is selected, wherein a first destination Infiniband local identifier in the first pair of Infiniband local identifiers and a second destination Infiniband local identifier in the second pair of Infiniband local identifiers identify the second endpoint, and wherein the first destination Infiniband local identifier and the second destination Infiniband local identifier are not identical, wherein a first source Infiniband local identifier in the first pair of Infiniband local identifiers and a second source Infiniband local identifier in the second pair of Infiniband local identifiers identify the first endpoint, and wherein the first source Infiniband local identifier and the second source Infiniband local identifier are not identical, and wherein the load balancing algorithm comprises a load balancing algorithm that operates on performance data of the first switch and on performance data of the second switch.

9. The system of claim 8 , wherein the second path does not include the first switch.

10. The system of claim 8 , wherein the memory further contains a forwarding table configured to switch the flow towards an endpoint by the selected path based on the assigned pair of endpoint addresses.

11. The system of claim 8 , wherein the load balancing algorithm is configured to alternate selection of the first path and of the second path.

12. The system of claim 8 , wherein the load balancing algorithm is configured to:

determine a number of active flows through the first path;

determine a number of active flows through the second path;

if the number of active flows through the first path is larger than the number of active flows through the second path, select the second path; and

if the number of active flows through the second path is larger than the number of active flows through the first path, select the first path.

13. The system of claim 8 , wherein the load balancing algorithm is configured to:

determine a first average based on an amount of data originated by an endpoint and passing through a first critical section, the first path includes the first critical section;

determine a second average based on an amount of data originated by the endpoint and passing through a second critical section, the second path includes the second critical section;

if the first average is larger than the second average, select the second path; and

if the second average is larger than the first average, select the first path.

14. The system of claim 8 , wherein the load balancing algorithm is configured to:

determine a first average based on an amount of data passing through a first critical section, the first path includes the first critical section;

determine a second average based on an amount of data passing through a second critical section, the second path includes the second critical section; if the first average is larger than the second average, select the second path; and if the second average is larger than the first average, select the first path.

15. A computer program product for balancing traffic load on a network, the computer program product stored on a non-transitory computer-readable medium containing computer program code for:

selecting one of a plurality of paths for a flow based a load balancing algorithm, the paths including at least a first path and a second path, the first path corresponding to a first pair of Infiniband local identifier endpoint addresses and including a first switch, and the second path corresponding to a second pair of Infiniband local identifier endpoint addresses and including a second switch, wherein a first destination Infiniband local identifier in the first pair of Infiniband local identifiers and a second destination Infiniband local identifier in the second pair of Infiniband local identifiers identify the second endpoint, and wherein the first destination Infiniband local identifier and the second destination Infiniband local identifier are not identical, wherein a first source Infiniband local identifier in the first pair of Infiniband local identifiers and a second source Infiniband local identifier in the second pair of Infiniband local identifiers identify the first endpoint, and wherein the first source Infiniband local identifier and the second source Infiniband local identifier are not identical, and wherein the load balancing algorithm comprises a load balancing algorithm that operates on performance data of the first switch and on performance data of the second switch;

assigning the first pair of Infiniband local identifier endpoint addresses to the flow if the first path is selected; and

assigning the second pair of Infiniband local identifier endpoint addresses to the flow if the second path is selected.

16. The computer program product of claim 15 , wherein the computer readable medium further contains computer code for:

based on the assigned pair of Infiniband local identifier endpoint addresses, switching the flow to an endpoint by the selected path.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2012
From: QLOGIC CORPORATION
To: INTEL CORPORATION
Reel/Frame 028168/0202 →