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."
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