Currently, each FDB entry resolves to a single VTEP destination.
When the kernel advertises FDB entries with a nexthop group ID
(NDA_NH_ID) instead of a direct destination, OVN ignores them.
This series teaches the controller to parse, track, and program
multi-path FDB entries using OpenFlow select groups, enabling
traffic distribution across multiple paths with kernel-provided
weights.

The first patch fixes a netlink notifier flush issue that is
a prerequisite for reliable nexthop tracking. Patches 2-4 add
the plumbing: NDA_NH_ID parsing, a nexthop exchange engine node,
and ECMP FDB validation. Patch 5 moves the group table out of
the engine so physical output can share the ID space with load
balancer groups. Patch 6 fixes EVPN datapath data being cleared
between engine runs. Finally, patch 7 generates OpenFlow select
groups with per-path buckets and nexthop weights.

Ales Musil (7):
  controller: Flush the netlink notifier message when we disable it.
  controller: Support FDB entries with nexthop ID defined.
  controller: Add nexthop exchange node.
  controller: Accept ECMP FDB entries.
  controller: Move the group_table out of the engine.
  controller: Make sure that EVPN datapaths are kept across runs.
  controller: Generate OpenFlow select groups for ECMP FDB entries.

 NEWS                                   |   3 +
 controller/evpn-binding.c              |   4 +-
 controller/evpn-binding.h              |   1 -
 controller/evpn-fdb.c                  | 161 +++++++++++++++++++++++--
 controller/evpn-fdb.h                  |  25 +++-
 controller/neighbor-exchange-netlink.c |  21 +++-
 controller/neighbor-exchange-netlink.h |   1 +
 controller/neighbor-exchange.c         |  31 ++---
 controller/neighbor-exchange.h         |   5 +-
 controller/nexthop-exchange-stub.c     |  20 +++
 controller/nexthop-exchange.c          |  82 ++++++++++---
 controller/nexthop-exchange.h          |   5 +
 controller/ovn-controller.c            | 124 +++++++++++++++++--
 controller/ovn-netlink-notifier.c      |   3 +-
 controller/physical.c                  |  80 ++++++++++--
 controller/physical.h                  |   3 +
 tests/ovn-inc-proc-graph-dump.at       |   3 +
 tests/ovn-macros.at                    |  19 ++-
 tests/system-ovn-netlink.at            | 121 +++++++++++++++----
 tests/system-ovn.at                    | 144 +++++++++++++++++++---
 tests/test-ovn-netlink.c               |  10 +-
 21 files changed, 743 insertions(+), 123 deletions(-)

-- 
2.53.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to