On 6/11/20 8:56 AM, Yi Yang (杨燚)-云服务集团 wrote: > Hi, folks > > We need to use Linux ECMP to do active-active load balancer, but consistent > hash is necessary because load balance node may be added or removed > dynamically, so number of hash bucket is changeable, but we have to > distribute flow to load balance node which is handling this flow and has > current session state, I’m not sure if current Linux has implemented the > algorithm in https://tools.ietf.org/html/rfc2992, anybody can confirm yes or > no? > > I checked source code in > https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/tree/net/ipv4/fib_semantics.c#n2176, > every next hop in fib has a upper_bound, fib_select_multipath just checks if > hash value is greater than upper_bound of next hop and decide if it is > selected next hop, so I don't think current linux has implemented consistent > hash, please correct me if I'm wrong. > > Thank you all so much in advance and sincerely appreciate your help. >
The kernel does not do resilient hashing, but I believe you can do it from userspace by updating route entries - replacing nexthop entries as LB's come and go. Cumulus docs have a good description: https://docs.cumulusnetworks.com/cumulus-linux/Layer-3/Equal-Cost-Multipath-Load-Sharing-Hardware-ECMP/#resilient-hashing