[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190618151258.23023-1-idosch@idosch.org>
Date: Tue, 18 Jun 2019 18:12:42 +0300
From: Ido Schimmel <idosch@...sch.org>
To: netdev@...r.kernel.org
Cc: davem@...emloft.net, jiri@...lanox.com, dsahern@...il.com,
alexpe@...lanox.com, mlxsw@...lanox.com,
Ido Schimmel <idosch@...lanox.com>
Subject: [PATCH net-next v2 00/16] mlxsw: Improve IPv6 route insertion rate
From: Ido Schimmel <idosch@...lanox.com>
Unlike IPv4, an IPv6 multipath route in the kernel is composed from
multiple sibling routes, each representing a single nexthop.
Therefore, an addition of a multipath route with N nexthops translates
to N in-kernel notifications. This is inefficient for device drivers
that need to program the route to the underlying device. Each time a new
nexthop is appended, a new nexthop group needs to be constructed and the
old one deleted.
This patchset improves the situation by sending a single notification
for a multipath route addition / deletion instead of one per-nexthop.
When adding thousands of multipath routes with 16 nexthops, I measured
an improvement of about x10 in the insertion rate.
Patches #1-#3 add a flag that indicates that in-kernel notifications
need to be suppressed and extend the IPv6 FIB notification info with
information about the number of sibling routes that are being notified.
Patches #4-#5 adjust the two current listeners to these notifications to
ignore notifications about IPv6 multipath routes.
Patches #6-#7 adds add / delete notifications for IPv6 multipath routes.
Patches #8-#14 do the same for mlxsw.
Patch #15 finally removes the limitations added in patches #4-#5 and
stops the kernel from sending a notification for each added / deleted
nexthop.
Patch #16 adds test cases.
v2 (David Ahern):
* Remove patch adjusting netdevsim to consume resources for each
fib6_info. Instead, consume one resource for the entire multipath
route
* Remove 'multipath_rt' usage in patch #10
* Remove 'multipath_rt' from 'struct fib6_entry_notifier_info' in patch
#15. The member is only removed in this patch to prevent drivers from
processing multipath routes twice during the series
Ido Schimmel (16):
netlink: Document all fields of 'struct nl_info'
netlink: Add field to skip in-kernel notifications
ipv6: Extend notifier info for multipath routes
mlxsw: spectrum_router: Ignore IPv6 multipath notifications
netdevsim: Ignore IPv6 multipath notifications
ipv6: Add IPv6 multipath notifications for add / replace
ipv6: Add IPv6 multipath notification for route delete
mlxsw: spectrum_router: Remove processing of IPv6 append notifications
mlxsw: spectrum_router: Prepare function to return errors
mlxsw: spectrum_router: Pass multiple routes to work item
mlxsw: spectrum_router: Adjust IPv6 replace logic to new notifications
mlxsw: spectrum_router: Pass array of routes to route handling
functions
mlxsw: spectrum_router: Add / delete multiple IPv6 nexthops
mlxsw: spectrum_router: Create IPv6 multipath routes in one go
ipv6: Stop sending in-kernel notifications for each nexthop
selftests: mlxsw: Add a test for FIB offload indication
.../ethernet/mellanox/mlxsw/spectrum_router.c | 209 ++++++++---
include/net/ip6_fib.h | 6 +
include/net/netlink.h | 6 +-
net/ipv6/ip6_fib.c | 44 ++-
net/ipv6/route.c | 21 ++
.../drivers/net/mlxsw/fib_offload.sh | 349 ++++++++++++++++++
6 files changed, 567 insertions(+), 68 deletions(-)
create mode 100755 tools/testing/selftests/drivers/net/mlxsw/fib_offload.sh
--
2.20.1
Powered by blists - more mailing lists