# US 9,438,447 B2 · Flow distribution algorithm for aggregated links in an ethernet switch

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,438,447 B2
- Document ID: US9438447B2
- Status: Granted
- Kind: B2
- Application number: 13/718,479
- Filed: 2012-12-18
- Published: 2014-06-19
- Granted: 2016-09-06
- Earliest claimed: 2012-12-18
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Claude Basso; Natarajan Vaidhyanathan; Colin B. Verrilli; Bruce M. Walk; Daniel Wind
- Web page: https://patentgrep.com/patent/US9438447B2

## CPC

- G06F 16/10: File systems; File servers
- H04L 45/245: {Link aggregation, e.g. trunking}
- H04L 45/7453: using hashing
- Y02D 30/50: in wire-line communication networks, e.g. low power modes or reduced link rate
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Link aggregation is a practice that uses multiple Ethernet links between two end points in order to obtain higher bandwidth and resiliency than possible with a single link. A flow distribution technique is provided to distribute traffic between the two end points equally across all links in the group and achieve greater efficiency. The flow distribution technique generates and sub-divides a hash value based on received packet flow. The divided portions of the hash value are used in a hierarchical fashion to select a link to use for this packet.

## Claims

### Claim 1

A computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code comprising:
computer-readable program code configured to generate a hash value based on routing information of a data frame;
computer-readable program code configured to split the hash value into a plurality of chunks, wherein values of the plurality of chunks correspond to a plurality of links associated with a link aggregation group;
computer-readable program code configured to modify each of the plurality of chunks based on a number of the plurality of links;
computer-readable program code configured to determine a selected link having an up state from the plurality of links based on a hierarchical order of the plurality of chunks; and
computer-readable program code configured to forward the data frame to the selected link.

### Claim 2 (depends on 1)

The computer-readable storage medium of claim 1, wherein the computer-readable program code configured to modify a chunk further comprises computer-readable program code configured to reduce a most significant bit of the chunk based on the number of the plurality of links.

### Claim 3 (depends on 1)

The computer-readable storage medium of claim 1, wherein the computer-readable program code configured to determine the selected link having an up state based on the hierarchical order of the plurality of chunks further comprises:
computer-readable program code configured to, responsive to determining a first chunk of the plurality of chunks is within range of a number of the plurality of links and the first chunk corresponds to a first link having an up state, select the first link.

### Claim 4 (depends on 3)

The computer-readable storage medium of claim 3, further comprising:
computer-readable program code configured to, responsive to determining the first chunk of the plurality of chunks is not within range of a number of the plurality of links or the first chunk does not correspond to a link having an up state, determine a second chunk of the plurality of chunks is within range of the number of the plurality of links and the second chunk corresponds to a second link having an up state; and
computer-readable program code configured to select the second link.

### Claim 5 (depends on 3)

The computer-readable storage medium of claim 3, further comprising:
computer-readable program code configured to determine the first chunk of the plurality of chunks is not within range of a number of the plurality of links or the first chunk does not correspond to a link having an up state;
computer-readable program code configured to modify a second chunk of the plurality of chunks to be within range of the number of the plurality of links; and
computer-readable program code configured to, responsive to determining the second chunk corresponds to a second link having an up state, select the second link.

### Claim 6 (depends on 1)

The computer-readable storage medium of claim 1, wherein the computer-readable program code configured to determine the selected link having an up state based on the hierarchical order of the plurality of chunks further comprises:
computer-readable program code configured to, responsive to determining none of the plurality of chunks are within range of a number of the plurality of links and are corresponding to a link having an up state, select a first available link relative to a down link corresponding to a first chunk of the plurality of chunks.

### Claim 7 (depends on 6)

The computer-readable storage medium of claim 6, wherein the computer-readable program code configured to select the first available link further comprises:
computer-readable program code configured to generate a rotated link state pattern based on link state information of the plurality of links and based on the first chunk; and
computer-readable program code configured to select the first available link based on the generated rotated link state pattern.

### Claim 8

A system for forwarding a data frame through a distributed network switch, comprising:
one or more computer processors; and
a memory containing a program which, when executed by the one or more computer processors, is configured to perform an operation comprising:
generating, by operation of the one or more computer processors, a hash value based on routing information of a data frame;
splitting the hash value into a plurality of chunks, wherein values of the plurality of chunks correspond to a plurality of links associated with a link aggregation group;
modifying each of the plurality of chunks based on a number of the plurality of links;
determining a selected link having an up state from the plurality of links based on a hierarchical order of the plurality of chunks; and
forwarding the data frame to the selected link.

### Claim 9 (depends on 8)

The system of claim 8, wherein the modifying a chunk further comprises reducing a most significant bit of the chunk based on the number of the plurality of links.

### Claim 10 (depends on 8)

The system of claim 8, wherein the determining the selected link having an up state based on the hierarchical order of the plurality of chunks further comprises:
responsive to determining a first chunk of the plurality of chunks is within range of a number of the plurality of links and the first chunk corresponds to a first link having an up state, selecting the first link.

### Claim 11 (depends on 10)

The system of claim 10, wherein the operation further comprises:
responsive to determining the first chunk of the plurality of chunks is not within range of a number of the plurality of links or the first chunk does not correspond to a link having an up state, determining a second chunk of the plurality of chunks is within range of the number of the plurality of links and the second chunk corresponds to a second link having an up state; and
selecting the second link.

### Claim 12 (depends on 10)

The system of claim 10, wherein the operation further comprises:
determining the first chunk of the plurality of chunks is not within range of a number of the plurality of links or the first chunk does not correspond to a link having an up state;
modifying a second chunk of the plurality of chunks to be within range of the number of the plurality of links; and
responsive to determining the second chunk corresponds to a second link having an up state, selecting the second link.

### Claim 13 (depends on 8)

The system of claim 8, wherein the determining the selected link having an up state based on the hierarchical order of the plurality of chunks further comprises:
responsive to determining none of the plurality of chunks are within range of a number of the plurality of links and are corresponding to a link having an up state, selecting a first available link relative to a down link corresponding to a first chunk of the plurality of chunks.

### Claim 14 (depends on 13)

The system of claim 13, wherein the selecting the first available link further comprises:
generating a rotated link state pattern based on link state information of the plurality of links and based on the first chunk; and
selecting the first available link based on the generated rotated link state pattern.
