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

Reply via email to