David, thank you so much for confirming it can't, I did read your cumulus 
document before, resilient hashing is ok for next hop remove, but it still has 
the same issue there if add new next hop. I know most of kernel code in Cumulus 
Linux has been in upstream kernel, I'm wondering why you didn't push resilient 
hashing to upstream kernel.

I think consistent hashing is must-have for a commercial load balancing 
solution, otherwise it is basically nonsense , do you Cumulus Linux have 
consistent hashing solution?

Is "- replacing nexthop entries as LB's come and go" ithe stuff 
https://docs.cumulusnetworks.com/cumulus-linux/Layer-3/Equal-Cost-Multipath-Load-Sharing-Hardware-ECMP/#resilient-hashing
 is showing? It can't ensure the flow is distributed to the right backend 
server if a new next hop is added.

-----邮件原件-----
发件人: David Ahern [mailto:dsah...@gmail.com] 
发送时间: 2020年6月12日 2:27
收件人: Yi Yang (杨燚)-云服务集团 <yangy...@inspur.com>; netdev@vger.kernel.org
抄送: niko...@cumulusnetworks.com
主题: Re: [PATCH] can current ECMP implementation support consistent hashing for 
next hop?

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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to