Series |
mlxsw: Improve IPv6 route insertion rate
|
expand
-
[net-next,v2,00/16] mlxsw: Improve IPv6 route insertion rate
-
[net-next,v2,01/16] netlink: Document all fields of 'struct nl_info'
-
[net-next,v2,02/16] netlink: Add field to skip in-kernel notifications
-
[net-next,v2,03/16] ipv6: Extend notifier info for multipath routes
-
[net-next,v2,04/16] mlxsw: spectrum_router: Ignore IPv6 multipath notifications
-
[net-next,v2,05/16] netdevsim: Ignore IPv6 multipath notifications
-
[net-next,v2,06/16] ipv6: Add IPv6 multipath notifications for add / replace
-
[net-next,v2,07/16] ipv6: Add IPv6 multipath notification for route delete
-
[net-next,v2,08/16] mlxsw: spectrum_router: Remove processing of IPv6 append notifications
-
[net-next,v2,09/16] mlxsw: spectrum_router: Prepare function to return errors
-
[net-next,v2,10/16] mlxsw: spectrum_router: Pass multiple routes to work item
-
[net-next,v2,11/16] mlxsw: spectrum_router: Adjust IPv6 replace logic to new notifications
-
[net-next,v2,12/16] mlxsw: spectrum_router: Pass array of routes to route handling functions
-
[net-next,v2,13/16] mlxsw: spectrum_router: Add / delete multiple IPv6 nexthops
-
[net-next,v2,14/16] mlxsw: spectrum_router: Create IPv6 multipath routes in one go
-
[net-next,v2,15/16] ipv6: Stop sending in-kernel notifications for each nexthop
-
[net-next,v2,16/16] selftests: mlxsw: Add a test for FIB offload indication
|
From: Ido Schimmel <idosch@mellanox.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