All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 00/17] mlxsw: Improve IPv6 route insertion rate
@ 2019-06-15 14:07 Ido Schimmel
  2019-06-15 14:07 ` [PATCH net-next 01/17] netlink: Document all fields of 'struct nl_info' Ido Schimmel
                   ` (17 more replies)
  0 siblings, 18 replies; 29+ messages in thread
From: Ido Schimmel @ 2019-06-15 14:07 UTC (permalink / raw)
  To: netdev; +Cc: davem, dsahern, jiri, alexpe, mlxsw, Ido Schimmel

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.

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


^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2019-06-17 13:06 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-15 14:07 [PATCH net-next 00/17] mlxsw: Improve IPv6 route insertion rate Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 01/17] netlink: Document all fields of 'struct nl_info' Ido Schimmel
2019-06-17  1:16   ` David Ahern
2019-06-15 14:07 ` [PATCH net-next 02/17] netlink: Add field to skip in-kernel notifications Ido Schimmel
2019-06-17  1:17   ` David Ahern
2019-06-17  6:37     ` Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 03/17] ipv6: Extend notifier info for multipath routes Ido Schimmel
2019-06-17  1:22   ` David Ahern
2019-06-17  6:46     ` Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 04/17] mlxsw: spectrum_router: Ignore IPv6 multipath notifications Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 05/17] netdevsim: " Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 06/17] ipv6: Add IPv6 multipath notifications for add / replace Ido Schimmel
2019-06-17 13:01   ` David Ahern
2019-06-15 14:07 ` [PATCH net-next 07/17] ipv6: Add IPv6 multipath notification for route delete Ido Schimmel
2019-06-17 13:03   ` David Ahern
2019-06-15 14:07 ` [PATCH net-next 08/17] netdevsim: Adjust accounting for IPv6 multipath notifications Ido Schimmel
2019-06-17  1:27   ` David Ahern
2019-06-17  6:49     ` Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 09/17] mlxsw: spectrum_router: Remove processing of IPv6 append notifications Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 10/17] mlxsw: spectrum_router: Prepare function to return errors Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 11/17] mlxsw: spectrum_router: Pass multiple routes to work item Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 12/17] mlxsw: spectrum_router: Adjust IPv6 replace logic to new notifications Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 13/17] mlxsw: spectrum_router: Pass array of routes to route handling functions Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 14/17] mlxsw: spectrum_router: Add / delete multiple IPv6 nexthops Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 15/17] mlxsw: spectrum_router: Create IPv6 multipath routes in one go Ido Schimmel
2019-06-15 14:07 ` [PATCH net-next 16/17] ipv6: Stop sending in-kernel notifications for each nexthop Ido Schimmel
2019-06-17 13:06   ` David Ahern
2019-06-15 14:07 ` [PATCH net-next 17/17] selftests: mlxsw: Add a test for FIB offload indication Ido Schimmel
2019-06-16 21:04 ` [PATCH net-next 00/17] mlxsw: Improve IPv6 route insertion rate David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.