Hello!

On 22.02.2019 6:52, 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.

   Connections? Way?

A specific tunnel route based on the percpu dst_cache, It will not
lookup route table each packet.

   For each packet?

This patch provide a based cpu id hash policy. The different
connection run on differnt cpu and There will differnet hash

   Different. Will be?

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(-)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index ecc12a7..6cf2fd4 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
[...]
@@ -1834,6 +1835,8 @@ int fib_multipath_hash(const struct net *net, const 
struct flowi4 *fl4,
                        hash_keys.addrs.v4addrs.dst = fl4->daddr;
                }
                break;
+       case 2:
+               cpu = smp_processor_id() + 1;

   Should be a comment /* fall through */ if this fall thru isn't in error.

        case 1:
                /* skb is currently provided only when forwarding */
                if (skb) {
[...]

MBR, Sergei

Reply via email to