On Tue, Aug 19, 2025 at 5:15 PM Mark Michelson <mmich...@redhat.com> wrote:
>
> Hi Numan, I have not done an in-depth look through all the patches, but
> I did skim them, and I understand what's being done here. As the cover
> letter states, this provides a way to program OVS bridges using OVN
> logical flow language instead.
>
> It's clear looking at the code that ovn-bridge-controller is expected to
> be deployed on the same hypervisor where the OVS bridge is. When you
> picture this being deployed, do you see a single centralized ovn-br
> database that many ovn-br-controllers connect to, or are you picturing
> this more like each ovn-br-controller will have an independent instance
> of the ovn-br database that it interacts with? I think that an addition
> to the ovn-architecture document is useful with this series, since it
> will make it more clear how these pieces are meant to fit into the
> overall OVN picture.
>

Thanks Mark for taking a look at this and providing feedback.

I see the latter case, i.e ovn-br database running on each chassis and
ovn-br-controller connecting to it.
I'd expect a CMS agent running on each chassis and programming the
logical flows in the local ovn-br database.

Sounds good, I'll add a section in the ovn-architecture in the next version.


> Other than that, I like what I'm seeing. The code lives as a separate
> application from existing OVN applications, so there is very little risk
> adding this to the code base. It also duplicates code as little as
> possible (I think patches 6 and 9 are the biggest places where I see
> duplication of code already in ovn-controller). I think what you've
> presented here introduces the feature in a complete way and also leaves
> room for future optimizations/improvements.
>
> I'll give this a more in-depth review in the upcoming days and provide
> critiques on the individual patches.

Looking forward to it.

Numan

>
> On 8/11/25 6:09 AM, num...@ovn.org wrote:
> > From: Numan Siddique <num...@ovn.org>
> >
> > 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."
> >
> > 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.
> >    rhel: Add ovn-br-controller sub package.
> >
> >   Makefile.am                                   |    5 +-
> >   automake.mk                                   |   36 +
> >   br-controller/automake.mk                     |   18 +
> >   br-controller/br-flow-mgr.c                   | 1302 +++++++++++++++++
> >   br-controller/br-flow-mgr.h                   |   65 +
> >   br-controller/br-ofctrl.c                     |  731 +++++++++
> >   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                      |   25 +
> >   br-controller/en-pflow.c                      |  192 +++
> >   br-controller/en-pflow.h                      |   16 +
> >   br-controller/ovn-br-controller.8.xml         |    5 +
> >   br-controller/ovn-br-controller.c             |  560 +++++++
> >   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                                |   13 +
> >   lib/ovn-util.h                                |    1 +
> >   {controller => lib}/test-lflow-conj-ids.c     |    0
> >   {controller => lib}/test-ofctrl-seqno.c       |    0
> >   ovn-br.ovsschema                              |   94 ++
> >   ovn-br.xml                                    |  452 ++++++
> >   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                    |  355 +++++
> >   tests/testsuite.at                            |    1 +
> >   tutorial/ovn-sandbox                          |   24 +-
> >   utilities/automake.mk                         |    8 +
> >   utilities/ovn-brctl.c                         |  585 ++++++++
> >   utilities/ovn-ctl                             |  163 +++
> >   utilities/ovn-ctl.8.xml                       |   36 +
> >   44 files changed, 5465 insertions(+), 20 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
> >
>
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to