On 22/02/2019 11:20, we...@ucloud.cn wrote: > From: wenxu <we...@ucloud.cn> > > Current fib_multipath_hash_policy can make hash based on the L3 or > L4. But it only work on the outer IP. So a specific tunnel always > has the same hash value. But a specific tunnel may contain so many > inner connections. However there is no good way for tunnel packet. > A specific tunnel route based on the percpu dst_cache. It will not > lookup route table for each packet. > > This patch provide a based cpu id hash policy. The different > connection run on different cpu and there will be different hash > value for percpu dst_cache. > > Signed-off-by: wenxu <we...@ucloud.cn> > --- > net/ipv4/route.c | 6 ++++++ > net/ipv4/sysctl_net_ipv4.c | 2 +- > 2 files changed, 7 insertions(+), 1 deletion(-) > Hi, When we had the same issue in the bonding, we added a new mode which used the flow dissector to get the inner headers and hash on them. I believe that is even easier nowadays, but I think people wanted to use different hash algorithms as well and last we discussed this we were talking about yet another bpf use to generate the hash. Now we got bpf_set_hash() which can be used to achieve this from various places, if you use that with hash_policy=1 (L4) then skb->hash will be used and you can achieve any hashing that you desire.
Cheers, Nik