Link Aggregation Standard and Custom Algorithms

All ExtremeSwitching switches and stacks support address-based load sharing.

There are two types of algorithms:

Standard Algorithms

The following are the types of traffic to which standard addressed-based algorithms apply and the traffic components used to select egress links:
  • Layer 2 frames, Unknown unicast packet and non-IP traffic—The source and destination MAC addresses.
  • IPv4 and IPv6 packets—Load sharing is based on the configured options supported on each platform:
    • L2 algorithm—Layer 2 source and destination MAC addresses.
    • L3 algorithm—Layer 3 source and destination IP addresses.
    • L3_L4 algorithm—Layer 3 and Layer 4, the combined source and destination IP addresses and source and destination TCP and UDP port numbers.
  • MPLS packets—The source and destination MAC addresses.

Custom Algorithms

The following are the types of traffic to which custom addressed-based algorithms apply and the traffic components used to select egress links:
  • Non-IP Layer 2—Uses the VLAN ID, the source and destination MAC addresses, and the ethertype.
  • IPv4 packets—Uses IP address information from an IP header, or for tunneled packets, the custom algorithm always uses the inner header of an IP-in-IP or GRE tunnel packet. The configuration options are:
    • The source and destination IPv4 addresses and Layer 4 port numbers (default)
    • The source IP address only,
    • The destination IP address only
    • The source and destination IP addresses
  • IPv6 packets—Uses the source and destination IPv6 addresses and Layer 4 port numbers.
  • MPLS packets—Uses the top, second, and reserved labels and the source and destination IP addresses.
Note

Note

In a switch having at least one LAG group with custom algorithm, the egress port for unknown unicast packets across all LAG groups in switch will be decided based on Layer 3 source and destination IP address.

The following command allows you to enable load sharing and select either a standard algorithm or specify that you want to use a custom algorithm:

enable sharing port grouping port_list {algorithm [address-based {L2 | L3 | L3_L4 | custom} | port-based }]} {lacp | health-check}

If you choose the custom option when you enable load sharing, you can use the following command to select a custom load sharing algorithm:

configure sharing address-based custom [ipv4 [source-only | destination-only | source-and-destination] | hash-algorithm [xor | crc-16 | crc-32 [lower | upper]]]

The hash-algorithm option controls how the source information (such as an IP address) is used to select the egress port. The xor hash algorithm guarantees that the same egress port is selected for traffic distribution based on a pair of IP addresses, Layer 4 ports, or both, regardless of which is the source and which is the destination.

Hash polarization can be prevented by choosing different load sharing algorithms on neighboring switches in different layers. This approach may not be viable in some situations. For example, the network may require the capabilities of the “custom” algorithm for all LAGs in the network. Another approach to varying the load sharing algorithm among neighboring switches would be to use different hashing algorithms of the “custom” algorithm on different switches. For example, some switches could be configured to use “crc-32 upper” algorithm and some configured to use the “crc-16” algorithm.

To change the algorithm for a previously created LAG, use the command:

configure sharing master_port algorithm [address-based [L2 | L3 | L3_L4 | custom] | port-based].

Note

Note

Use of the ACL redirect-port-no-sharing port action overrides any load-sharing algorithm hash that is generated based on the lookup results. For more information about this action, see LAG Port Selection.

Another strategy for preventing hash polarization is to configure different hash seed values that are used by the CRC versions of the custom algorithms on the LAG switches. With different hash seeds used on neighboring switches, hash polarization can be prevented while maintaining otherwise identical distribution algorithms.

To set a random hash seed value, use the command:

configure sharing address-based custom hash-seed [seed | switch-mac-address]

By using the switch-mac-address option for the hash seed value, identical load sharing algorithms may be used on all of the LAGs in the network while automatically preventing hash polarization.

Prior to supporting configuring the hash seed (ExtremeXOS 30.1), the default value of the hash seed was 0x7F2193EA. You can restore the legacy default behavior for the hash seed by explicitly configuring this legacy value.