mbox series

[ovs-dev,RFC,v3,0/4] Introduce ECMP_nexthop monitor in ovn-controller

Message ID cover.1731342268.git.lorenzo.bianconi@redhat.com
Headers show
Series Introduce ECMP_nexthop monitor in ovn-controller | expand

Message

Lorenzo Bianconi Nov. 11, 2024, 4:30 p.m. UTC
With respect to the previous implementation, OVN is now tracking and
flushing ECMP next-hop ct entries with the next-hop mac address instead
of using an identification number committed by ovn-northd since the previous
approach had some limitations when the traffic is initialized from outside
the ovn cluster. This series is introducing a way to periodically resolve L2
address of the configured next-hops.
Please note IPv6 is not currently supported and it will be added before posting
a formal series. The goal of this series is just to collect feedbacks about the
proposed approach.

Changes in RFC v3:
- move ecmp-next-hop-monitor code in controller/ecmp-next-hop-monitor.{c,h}
- use a hamp for send_arp_nd_data since the same nexthop can be used by
  multiple ports/routes
- add new system-ovn test to check when a given next-hop is used by multiple
  ovn-routers/ecmp routes
- use a Port_Binding reference in ECMP_Nexthop
- use nexthop and port as ECMP_Nexthop table index
- move ECMP_Nexthop mac binding update in mac_binding_add_to_sb()
- cosmetics

Changes in RFC v2:
- add IPv6 support

Lorenzo Bianconi (4):
  northd: Introduce ECMP_Nexthop table in SB db.
  pinctrl: Send periodic arp/nd to ecmp next-hops.
  pinctrl: Update ecmp-nexthop mac resolving L2 address.
  ofctrl: Introduce ecmp_nexthop_monitor.

 NEWS                               |   7 +
 controller/automake.mk             |   4 +-
 controller/ecmp-next-hop-monitor.c | 102 ++++++
 controller/ecmp-next-hop-monitor.h |  24 ++
 controller/ofctrl.c                |   6 +
 controller/ofctrl.h                |   2 +
 controller/ovn-controller.8.xml    |  10 +
 controller/ovn-controller.c        |   8 +
 controller/pinctrl.c               | 365 ++++++++++++++++++-
 controller/pinctrl.h               |   3 +
 include/ovn/logical-fields.h       |   3 +
 northd/en-northd.c                 |  29 ++
 northd/en-northd.h                 |   4 +
 northd/inc-proc-northd.c           |   9 +-
 northd/northd.c                    |  58 ++-
 northd/northd.h                    |   6 +
 ovn-sb.ovsschema                   |  17 +-
 ovn-sb.xml                         |  31 ++
 tests/ovn-northd.at                |  33 +-
 tests/system-ovn.at                | 544 +++++++++++++++++++++++++++++
 20 files changed, 1237 insertions(+), 28 deletions(-)
 create mode 100644 controller/ecmp-next-hop-monitor.c
 create mode 100644 controller/ecmp-next-hop-monitor.h