On Mon, Nov 3, 2025 at 6:17 PM <[email protected]> wrote:
>
> From: Numan Siddique <[email protected]>
>
> This patch series adds a new service OVN Bridge Controller
> (ovn-br-controller) which can be used to program OpenFlow rules to
> OVS bridges using OVN logical flows.
>
> The syntax and symantics of the logical flows is similar to the logical
> flows generated by ovn-northd.
>
> Rational for adding this service:
> There's a need to configure the provider bridges with specific
OpenFlow
> rules after packets leave the OVN pipeline and enters these provider
> bridges via the patch ports. Since OVN has a very good abstraction
> of the OpenFlow rules using OVN logical flows, we can leverage the
same
> here so that CMS doesn't have to deal with the specifics of OpenFlow
> protocol. Also if the CMS is written in golang or other languages,
> CMS has to mostly rely on ovs-vsctl/ovs-ofctl to program the flows.
> Adding this support in OVN avoids the CMS to exec these utils to
> add/delete and dump the existing OpenFlow rules.
>
> A user can also use this new service to program and manage any OVS
> bridge without using OVN and hence this service is named as
> "ovn-br-controller."
>
Thanks Numan for this nice feature! I think it is very well structured, and
mostly looks good to me. I have sent my feedback and comments for some of
the patches. Feel free to add my Ack for the series when those are
addressed.
Best regards,
Han
>
> v2 -> v3
> -------
> * Added a new patch - p12 which
> - adds a NEWS entry for this new service - ovn-br-controller
> - Marks ovn-br-controller as an experimental service.
> - Documents the limitations of using OVN logical flow actions
> in the Bridge logical flows.
>
> v1 -> v2
> -------
> * Dropped P12 of v1 and merged it with P1 of v2 to address the CI
> failures.
> * Addressed review comments from Mark and added his Acked-by tag
> for the patches acked in v1.
>
>
> Numan Siddique (12):
> Add initial schema and skeleton for OVN bridge controller.
> ovn-br-controller: Connect to OVS database and define engine nodes.
> ovn-br-controller: Build en_bridge_data engine node.
> ovn-br-controller: Add bridge flow table manager.
> Move lflow-conj-ids module to lib.
> ovn-br-controller: Process logical flows.
> ovn-br-controller: Add en_pflow_output engine.
> Move ofctrl-seqno module to lib.
> ovn-br-controller: Program the openflows to the bridges.
> ovn-br-controller: Extend the symbol table to add new fields.
> ovn-ctl: Add commands to start OVN bridge controller services.
> ovn-br-controller: Add NEWS entry.
>
> Makefile.am | 5 +-
> NEWS | 3 +
> automake.mk | 36 +
> br-controller/automake.mk | 18 +
> br-controller/br-flow-mgr.c | 1263 +++++++++++++++++
> br-controller/br-flow-mgr.h | 65 +
> br-controller/br-ofctrl.c | 730 ++++++++++
> br-controller/br-ofctrl.h | 33 +
> br-controller/en-bridge-data.c | 199 +++
> br-controller/en-bridge-data.h | 43 +
> br-controller/en-lflow.c | 364 +++++
> br-controller/en-lflow.h | 22 +
> br-controller/en-pflow.c | 192 +++
> br-controller/en-pflow.h | 16 +
> br-controller/ovn-br-controller.8.xml | 79 ++
> br-controller/ovn-br-controller.c | 561 ++++++++
> controller/automake.mk | 4 -
> controller/if-status.c | 2 +-
> controller/lflow.h | 2 +-
> controller/ovn-controller.c | 4 +-
> lib/automake.mk | 21 +-
> lib/inc-proc-eng.h | 11 +
> {controller => lib}/lflow-conj-ids.c | 0
> {controller => lib}/lflow-conj-ids.h | 2 +-
> {controller => lib}/ofctrl-seqno.c | 0
> {controller => lib}/ofctrl-seqno.h | 0
> lib/ovn-br-idl.ann | 9 +
> lib/ovn-util.c | 31 +
> lib/ovn-util.h | 16 +
> {controller => lib}/test-lflow-conj-ids.c | 0
> {controller => lib}/test-ofctrl-seqno.c | 0
> ovn-br.ovsschema | 94 ++
> ovn-br.xml | 470 ++++++
> rhel/automake.mk | 4 +-
> rhel/ovn-fedora.spec.in | 22 +-
> ...b_systemd_system_ovn-br-controller.service | 35 +
> rhel/usr_lib_systemd_system_ovn-br-db.service | 32 +
> tests/automake.mk | 11 +-
> tests/ovn-br-controller.at | 358 +++++
> tests/testsuite.at | 1 +
> tutorial/ovn-sandbox | 24 +-
> utilities/automake.mk | 8 +
> utilities/ovn-brctl.c | 524 +++++++
> utilities/ovn-ctl | 163 +++
> utilities/ovn-ctl.8.xml | 36 +
> utilities/ovn-sbctl.c | 30 -
> 46 files changed, 5493 insertions(+), 50 deletions(-)
> create mode 100644 br-controller/automake.mk
> create mode 100644 br-controller/br-flow-mgr.c
> create mode 100644 br-controller/br-flow-mgr.h
> create mode 100644 br-controller/br-ofctrl.c
> create mode 100644 br-controller/br-ofctrl.h
> create mode 100644 br-controller/en-bridge-data.c
> create mode 100644 br-controller/en-bridge-data.h
> create mode 100644 br-controller/en-lflow.c
> create mode 100644 br-controller/en-lflow.h
> create mode 100644 br-controller/en-pflow.c
> create mode 100644 br-controller/en-pflow.h
> create mode 100644 br-controller/ovn-br-controller.8.xml
> create mode 100644 br-controller/ovn-br-controller.c
> rename {controller => lib}/lflow-conj-ids.c (100%)
> rename {controller => lib}/lflow-conj-ids.h (98%)
> rename {controller => lib}/ofctrl-seqno.c (100%)
> rename {controller => lib}/ofctrl-seqno.h (100%)
> create mode 100644 lib/ovn-br-idl.ann
> rename {controller => lib}/test-lflow-conj-ids.c (100%)
> rename {controller => lib}/test-ofctrl-seqno.c (100%)
> create mode 100644 ovn-br.ovsschema
> create mode 100644 ovn-br.xml
> create mode 100644 rhel/usr_lib_systemd_system_ovn-br-controller.service
> create mode 100644 rhel/usr_lib_systemd_system_ovn-br-db.service
> create mode 100644 tests/ovn-br-controller.at
> create mode 100644 utilities/ovn-brctl.c
>
> --
> 2.51.0
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev