This series adds shared MAC binding scopes for logical router ports that use the same physical L2 domain and gateway placement.
The motivation comes from OVN-Kubernetes deployments with many user-defined networks sharing a node's external bridge. Each network has its own gateway router, but those routers often resolve the same external neighbors. ARP replies cannot be demultiplexed using connection tracking, so delivering them to all gateway-router patch ports creates expensive fan-out. At scale, this has also exposed OVS recirculation limits. Independently, learning the same neighbors on each router duplicates Southbound MAC bindings and the corresponding controller flows. OVN-Kubernetes has been narrowing which neighbor-discovery traffic is forwarded to each gateway router. Shared MAC binding scopes provide the OVN support needed to avoid delivering every reply to every router merely to populate their individual neighbor tables. Logical router ports opt into a MAC_Binding_Scope. Bindings learned on any member are available to all members, with one Shared_MAC_Binding row per scope and IP address and a shared set of lookup flows on each relevant chassis. Private fallback bindings and per-port static overrides retain their precedence. Learning, aging, and GARP/RARP policy are configured on the scope. Northd validates that members share gateway placement and the physical L2 domain, and negotiates controller support before activating a scope. The CMS remains responsible for delivering ARP/NDP traffic to at least one member; this series does not change external-bridge forwarding itself. The three patches introduce the scoped logical actions, add the schema and northd support, and implement controller learning and lookup. The controller changes also cover buffered-packet release, conditional monitoring, timestamp refresh, and EVPN synchronization. This follows the earlier design discussion: https://mail.openvswitch.org/pipermail/ovs-discuss/2026-September/054021.html Testing includes the passing GitHub CI checks, focused shared-binding unit tests, and userspace EVPN system tests. The development PR and CI results are available here: https://github.com/trozet/ovn/pull/8 Feedback on the API, implementation, and series organization is welcome. Tim Rozet (3): actions: Add scoped MAC binding lookups. northd: Add shared MAC binding scopes. controller: Support shared MAC binding scopes. Documentation/ref/ovn-logical-flows.7.rst | 17 +- NEWS | 3 + controller/chassis.c | 7 + controller/evpn-mac-binding-sync.c | 147 +++++--- controller/evpn-mac-binding-sync.h | 16 +- controller/garp_rarp.c | 36 +- controller/garp_rarp.h | 1 + controller/lflow.c | 139 ++++++++ controller/lflow.h | 14 + controller/mac-cache.c | 417 +++++++++++++++++----- controller/mac-cache.h | 23 +- controller/neighbor-of.c | 98 ++++- controller/neighbor-of.h | 4 + controller/ovn-controller.8.xml | 18 + controller/ovn-controller.c | 327 ++++++++++++++++- controller/pinctrl.c | 81 ++++- controller/pinctrl.h | 3 + controller/statctrl.c | 18 + controller/statctrl.h | 1 + include/ovn/actions.h | 19 +- include/ovn/features.h | 1 + lib/actions.c | 107 +++++- lib/mac-binding-index.c | 67 ++++ lib/mac-binding-index.h | 13 + lib/ovn-util.c | 4 +- northd/aging.c | 61 ++++ northd/aging.h | 1 + northd/automake.mk | 2 + northd/en-global-config.c | 21 +- northd/en-global-config.h | 1 + northd/en-mac-binding-scope.c | 406 +++++++++++++++++++++ northd/en-mac-binding-scope.h | 26 ++ northd/inc-proc-northd.c | 32 +- northd/northd.c | 202 +++++++++-- northd/ovn-northd.c | 13 + ovn-nb.ovsschema | 26 +- ovn-nb.xml | 75 ++++ ovn-sb.ovsschema | 36 +- ovn-sb.xml | 162 ++++++++- tests/ovn-controller.at | 1 + tests/ovn-inc-proc-graph-dump.at | 27 +- tests/ovn-macros.at | 14 +- tests/ovn-northd.at | 195 +++++++++- tests/ovn.at | 334 ++++++++++++++++- tests/system-ovn.at | 43 +++ tests/test-ovn.c | 4 + utilities/ovn-trace.c | 90 ++++- 47 files changed, 3067 insertions(+), 286 deletions(-) create mode 100644 northd/en-mac-binding-scope.c create mode 100644 northd/en-mac-binding-scope.h base-commit: 38575ba43e9d0b501f49387f0da40cd3ad83ed94 -- 2.56.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
