[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Wed, 12 Dec 2018 13:15:32 -0800
From: Peter Oskolkov <posk@...gle.com>
To: David Miller <davem@...emloft.net>, netdev@...r.kernel.org
Cc: Peter Oskolkov <posk.devel@...il.com>,
Eric Dumazet <edumazet@...gle.com>,
Peter Oskolkov <posk@...gle.com>
Subject: [PATCH net-next 0/5] net: prefer listeners bound to an address
A relatively common use case is to have several IPs configured
on a host, and have different listeners for each of them. We would
like to add a "catch all" listener on addr_any, to match incoming
connections not served by any of the listeners bound to a specific
address.
However, port-only lookups can match addr_any sockets when sockets
listening on specific addresses are present if so_reuseport flag
is set. This patchset eliminates lookups into port-only hashtable,
as lookups by (addr,port) tuple are easily available.
In a future patchset I plan to explore whether it is possible
to remove port-only hashtables completely: additional refactoring
will be required, as some non-lookup code uses the hashtables.
Peter Oskolkov (5):
net: udp: prefer listeners bound to an address
net: udp6: prefer listeners bound to an address
net: tcp: prefer listeners bound to an address
net: tcp6: prefer listeners bound to an address
selftests: net: test that listening sockets match on address properly
net/ipv4/inet_hashtables.c | 60 +---
net/ipv4/udp.c | 76 ++---
net/ipv6/inet6_hashtables.c | 54 +---
net/ipv6/udp.c | 79 ++----
tools/testing/selftests/net/.gitignore | 1 +
tools/testing/selftests/net/Makefile | 4 +-
.../selftests/net/reuseport_addr_any.c | 264 ++++++++++++++++++
.../selftests/net/reuseport_addr_any.sh | 4 +
8 files changed, 325 insertions(+), 217 deletions(-)
create mode 100644 tools/testing/selftests/net/reuseport_addr_any.c
create mode 100755 tools/testing/selftests/net/reuseport_addr_any.sh
--
2.20.0.rc2.403.gdbc3b29805-goog
Powered by blists - more mailing lists