[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190615140751.17661-1-idosch@idosch.org>
Date: Sat, 15 Jun 2019 17:07:34 +0300
From: Ido Schimmel <idosch@...sch.org>
To: netdev@...r.kernel.org
Cc: davem@...emloft.net, dsahern@...il.com, jiri@...lanox.com,
alexpe@...lanox.com, mlxsw@...lanox.com,
Ido Schimmel <idosch@...lanox.com>
Subject: [PATCH net-next 00/17] 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.
Patch #8 teaches netdevsim to handle such notifications.
Patches #9-#15 do the same for mlxsw.
Patch #16 finally removes the limitations added in patches #4-#5 and
stops the kernel from sending a notification for each added / deleted
nexthop.
Patch #17 adds test cases.
Ido Schimmel (17):
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
netdevsim: Adjust accounting for IPv6 multipath notifications
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 | 210 ++++++++---
drivers/net/netdevsim/fib.c | 17 +-
include/net/ip6_fib.h | 7 +
include/net/netlink.h | 6 +-
net/ipv6/ip6_fib.c | 45 ++-
net/ipv6/route.c | 21 ++
.../drivers/net/mlxsw/fib_offload.sh | 349 ++++++++++++++++++
7 files changed, 582 insertions(+), 73 deletions(-)
create mode 100755 tools/testing/selftests/drivers/net/mlxsw/fib_offload.sh
--
2.20.1
Powered by blists - more mailing lists