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

-- 
2.50.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to