On 2/21/19 10:52 PM, 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 connection. However there is no good ways for tunnel packet. > A specific tunnel route based on the percpu dst_cache, It will not > lookup route table each packet. > > This patch provide a based cpu id hash policy. The different > connection run on differnt cpu and There will differnet 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(-) >
This multipath hash policy is global - for all fib lookups, not just tunnels. The suggestion by Nik is worth exploring - an option to add the mark to the hash (e.g., L3 header + mark) which makes this more generic. If the policy options are changed, the call to call_netevent_notifiers needs to be updated to handle a failure. For example, the mlxsw handler needs to be able to veto an option it does not support.