1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/include/net/netns
Paolo Abeni 6e617de84e net: avoid a full fib lookup when rp_filter is disabled.
Since commit 1dced6a854 ("ipv4: Restore accept_local behaviour
in fib_validate_source()") a full fib lookup is needed even if
the rp_filter is disabled, if accept_local is false - which is
the default.

What we really need in the above scenario is just checking
that the source IP address is not local, and in most case we
can do that is a cheaper way looking up the ifaddr hash table.

This commit adds a helper for such lookup, and uses it to
validate the src address when rp_filter is disabled and no
'local' routes are created by the user space in the relevant
namespace.

A new ipv4 netns flag is added to account for such routes.
We need that to preserve the same behavior we had before this
patch.

It also drops the checks to bail early from __fib_validate_source,
added by the commit 1dced6a854 ("ipv4: Restore accept_local
behaviour in fib_validate_source()") they do not give any
measurable performance improvement: if we do the lookup with are
on a slower path.

This improves UDP performances for unconnected sockets
when rp_filter is disabled by 5% and also gives small but
measurable performance improvement for TCP flood scenarios.

v1 -> v2:
 - use the ifaddr lookup helper in __ip_dev_find(), as suggested
   by Eric
 - fall-back to full lookup if custom local routes are present

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-09-21 15:15:22 -07:00
..
can.h can: network namespace support for CAN gateway 2017-04-25 09:04:30 +02:00
conntrack.h netfilter: merge udp and udplite conntrack helpers 2017-01-03 14:33:25 +01:00
core.h percpu: add __percpu sparse annotations to net 2010-02-16 23:05:38 -08:00
dccp.h [NETNS][DCCPV6]: Move the dccp_v6_ctl_sk on the struct net. 2008-04-13 22:32:25 -07:00
generic.h netns: fix net_generic() "id - 1" bloat 2016-12-03 15:59:58 -05:00
hash.h netns: constify net_hash_mix() and various callers 2015-03-18 22:00:34 -04:00
ieee802154_6lowpan.h ieee802154: 6lowpan: ensure MTU of 1280 for 6lowpan 2014-08-19 19:17:42 +02:00
ipv4.h net: avoid a full fib lookup when rp_filter is disabled. 2017-09-21 15:15:22 -07:00
ipv6.h ipv6: addrlabel: per netns list 2017-09-19 16:32:23 -07:00
mib.h net: use IS_ENABLED(CONFIG_IPV6) 2011-12-11 18:25:16 -05:00
mpls.h mpls: allow TTL propagation from IP packets to be configured 2017-03-13 15:29:22 -07:00
netfilter.h netfilter: convert hook list to an array 2017-08-28 17:44:00 +02:00
nftables.h netfilter: nf_tables: add netdev table to filter from ingress 2015-05-26 18:41:23 +02:00
packet.h packet: fix broken build. 2012-08-23 09:29:45 -07:00
sctp.h sctp: add reconf_enable in asoc ep and netns 2017-01-18 14:55:10 -05:00
unix.h [NETNS]: struct net content re-work (v3) 2008-01-28 14:57:14 -08:00
x_tables.h netfilter: don't pull include/linux/netfilter.h from netns headers 2015-06-18 21:14:31 +02:00
xfrm.h xfrm: remove flow cache 2017-07-18 11:13:41 -07:00