Resilient hashing

Resilient hashing is a load balancing method to minimize the destination path remapping in case of LAG link failure. Resilient hashing works in conjunction with static hashing algorithm.

Static hashing is a conventional method of distributing the traffic within a LAG uniformly so that the volume of traffic sent to every physical link in a LAG is approximately the same. A LAG's member link is selected by calculating a hash-based on packet headers and a subsequent modulo operation based on the number of physical links in the trunk group. If one of the LAG member links fail, due to module number change, the static hashing algorithm might choose a new member link even for those flows which were not hashed to the failed link. The change in the mapping of the destination path may cause traffic disruption in terms of packet loss or packets wrongly delivered even for the flows that were not hashed to the failed link of the LAG.

Resilient hashing addresses the limitation of static hashing (where destination path remapping for traffic flows going out of non-affected member links of a LAG) by using a flow table for selecting an outgoing port of a LAG for a particular flow.

Note: Resilient hashing is supported on RUCKUS ICX 7650 device only.

Resilient hashing provides the following benefits:
  • When a member link of a LAG goes down, it does not affect the flows bound to the remaining working member links of the LAG.
  • When a new member link is added to a LAG, the destination path remapping is minimized by redistributing some of the existing flows to the new member link.
  • Resilient hashing can be used in data center deployments where it is critical for the network to deliver packets in order during LAG link failures.

The following table explains the destination path results for static and resilient hashing.

Table 1. Destination path outcome for static hashing and resilient hashing
Size of the trunk group Static hashing Resilient hashing Remarks
4

10 % 4 = 2

Flow is going out of the LAG member link at index 2.

Flow is assigned to a LAG member based on the flow set table (outgoing LAG member port at index 10 (10 & 127) is selected for this flow. The size of the original trunk group is 4.
3

10 % 3 = 1

The same flow will go out of LAG member link at index 1.

Flow is still assigned to the same member link of the LAG (assuming that the LAG member port that went down was not carrying this flow) One member is deleted.
5 10 % 5 = 0

The same flow will go out of LAG member at index 0.

There is a minimal distribution of flows from existing member LAG links to the newly added member link. One more member is added to the link. The trunk group size is 5 now.