提交 9920e48b 编写于 作者: P Paolo Abeni 提交者: David S. Miller

ipv4: use l4 hash for locally generated multipath flows

This patch changes how the multipath hash is computed for locally
generated flows: now the hash comprises l4 information.

This allows better utilization of the available paths when the existing
flows have the same source IP and the same destination IP: with l3 hash,
even when multiple connections are in place simultaneously, a single path
will be used, while with l4 hash we can use all the available paths.

v2 changes:
- use get_hash_from_flowi4() instead of implementing just another l4 hash
  function
Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 1032a668
...@@ -1564,7 +1564,8 @@ void fib_select_path(struct net *net, struct fib_result *res, ...@@ -1564,7 +1564,8 @@ void fib_select_path(struct net *net, struct fib_result *res,
#ifdef CONFIG_IP_ROUTE_MULTIPATH #ifdef CONFIG_IP_ROUTE_MULTIPATH
if (res->fi->fib_nhs > 1 && fl4->flowi4_oif == 0) { if (res->fi->fib_nhs > 1 && fl4->flowi4_oif == 0) {
if (mp_hash < 0) if (mp_hash < 0)
mp_hash = fib_multipath_hash(fl4->saddr, fl4->daddr); mp_hash = get_hash_from_flowi4(fl4) >> 1;
fib_select_multipath(res, mp_hash); fib_select_multipath(res, mp_hash);
} }
else else
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册