mbox series

[net-next,00/11] mlxsw: Support for nexthop group statistics

Message ID cover.1709901020.git.petrm@nvidia.com (mailing list archive)
Headers show
Series mlxsw: Support for nexthop group statistics | expand

Message

Petr Machata March 8, 2024, 12:59 p.m. UTC
ECMP is a fundamental component in L3 designs. However, it's fragile. Many
factors influence whether an ECMP group will operate as intended: hash
policy (i.e. the set of fields that contribute to ECMP hash calculation),
neighbor validity, hash seed (which might lead to polarization) or the type
of ECMP group used (hash-threshold or resilient).

At the same time, collection of statistics that would help an operator
determine that the group performs as desired, is difficult.

Support for nexthop group statistics and their HW collection has been
introduced recently. In this patch set, add HW stats collection support
to mlxsw.

This patchset progresses as follows:

- Patches #1 and #2 add nexthop IDs to notifiers.
- Patches #3 and #4 are code-shaping.
- Patches #5, #6 and #7 adjust the flow counter code.
- Patches #8 and #9 add HW nexthop counters.
- Patch #10 adjusts the HW counter code to allow sharing the same counter
  for several resilient group buckets with the same NH ID.
- Patch #11 adds a selftest.

Petr Machata (11):
  net: nexthop: Initialize NH group ID in resilient NH group notifiers
  net: nexthop: Have all NH notifiers carry NH ID
  mlxsw: spectrum_router: Rename two functions
  mlxsw: spectrum_router: Have mlxsw_sp_nexthop_counter_enable() return
    int
  mlxsw: spectrum: Allow fetch-and-clear of flow counters
  mlxsw: spectrum_router: Avoid allocating NH counters twice
  mlxsw: spectrum_router: Add helpers for nexthop counters
  mlxsw: spectrum_router: Track NH ID's of group members
  mlxsw: spectrum_router: Support nexthop group hardware statistics
  mlxsw: spectrum_router: Share nexthop counters in resilient groups
  selftests: forwarding: Add a test for NH group stats

 .../net/ethernet/mellanox/mlxsw/spectrum.c    |   8 +-
 .../net/ethernet/mellanox/mlxsw/spectrum.h    |   4 +-
 .../ethernet/mellanox/mlxsw/spectrum_acl.c    |   2 +-
 .../ethernet/mellanox/mlxsw/spectrum_dpipe.c  |  22 +-
 .../mellanox/mlxsw/spectrum_mr_tcam.c         |   2 +-
 .../ethernet/mellanox/mlxsw/spectrum_router.c | 312 ++++++++++++++++--
 .../ethernet/mellanox/mlxsw/spectrum_router.h |   6 +-
 include/net/nexthop.h                         |   2 +-
 net/ipv4/nexthop.c                            |   3 +-
 .../testing/selftests/net/forwarding/Makefile |   1 +
 tools/testing/selftests/net/forwarding/lib.sh |  34 ++
 .../net/forwarding/router_mpath_nh.sh         |  13 +
 .../net/forwarding/router_mpath_nh_lib.sh     | 129 ++++++++
 .../net/forwarding/router_mpath_nh_res.sh     |  13 +
 14 files changed, 505 insertions(+), 46 deletions(-)
 create mode 100644 tools/testing/selftests/net/forwarding/router_mpath_nh_lib.sh

Comments

patchwork-bot+netdevbpf@kernel.org March 11, 2024, 10 p.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Fri, 8 Mar 2024 13:59:44 +0100 you wrote:
> ECMP is a fundamental component in L3 designs. However, it's fragile. Many
> factors influence whether an ECMP group will operate as intended: hash
> policy (i.e. the set of fields that contribute to ECMP hash calculation),
> neighbor validity, hash seed (which might lead to polarization) or the type
> of ECMP group used (hash-threshold or resilient).
> 
> At the same time, collection of statistics that would help an operator
> determine that the group performs as desired, is difficult.
> 
> [...]

Here is the summary with links:
  - [net-next,01/11] net: nexthop: Initialize NH group ID in resilient NH group notifiers
    https://git.kernel.org/netdev/net-next/c/2d32c49386cb
  - [net-next,02/11] net: nexthop: Have all NH notifiers carry NH ID
    https://git.kernel.org/netdev/net-next/c/e99eb57e9b14
  - [net-next,03/11] mlxsw: spectrum_router: Rename two functions
    https://git.kernel.org/netdev/net-next/c/64f962c65fe3
  - [net-next,04/11] mlxsw: spectrum_router: Have mlxsw_sp_nexthop_counter_enable() return int
    https://git.kernel.org/netdev/net-next/c/8acb480e43c8
  - [net-next,05/11] mlxsw: spectrum: Allow fetch-and-clear of flow counters
    https://git.kernel.org/netdev/net-next/c/6fb88aaf272a
  - [net-next,06/11] mlxsw: spectrum_router: Avoid allocating NH counters twice
    https://git.kernel.org/netdev/net-next/c/79fa52145e19
  - [net-next,07/11] mlxsw: spectrum_router: Add helpers for nexthop counters
    https://git.kernel.org/netdev/net-next/c/10bf92fd775e
  - [net-next,08/11] mlxsw: spectrum_router: Track NH ID's of group members
    https://git.kernel.org/netdev/net-next/c/41acb5549e60
  - [net-next,09/11] mlxsw: spectrum_router: Support nexthop group hardware statistics
    https://git.kernel.org/netdev/net-next/c/5a5a98e5176e
  - [net-next,10/11] mlxsw: spectrum_router: Share nexthop counters in resilient groups
    https://git.kernel.org/netdev/net-next/c/44c2fbebe18a
  - [net-next,11/11] selftests: forwarding: Add a test for NH group stats
    https://git.kernel.org/netdev/net-next/c/a22b042660ca

You are awesome, thank you!