[ovs-dev] [PATCH v9 ovn 0/5] introduce BFD support in ovn-controller

Lorenzo Bianconi lorenzo.bianconi at redhat.com
Fri Jan 8 16:36:19 UTC 2021


Introduce BFD protocol in ovn-controller according to RFC5880 [0]
We added BFD implementation in ovn since layered protocols usually request to
enable it on ovn entities (e.g. logical router ports) while ovs implementation
relies on physical entities (e.g. ovs interfaces).
Moreover we would establish a BFD session between a given ovn-port and
multiple peers (1:n relation). A typical use-case is reported in [1].
In the current implementation Asynchronous mode is fully supported, while Demand
mode is supported only on rx side.

[0] - https://tools.ietf.org/html/rfc5880
[1] - https://bugzilla.redhat.com/show_bug.cgi?id=1847570

Changes since v8:
- reset min_tx/min_rx/detect_multi to default values if nb db fields are cleared
  by the CMS

Changes since v7:
- fix bfd support for gw-router use-case
- fix uni-test failure
- fix documentation
- remove unnecessary memcpy for bfd_entry hashmap
- do not write min_tx/min_rx/detect_multi default values in nb db
- improve unit-test coverage
- rebase on top of ovn master branch

Changes since v6:
- fix a memory leak in build_bfd_table()
- check ovnsb_idl_txn pointer before writing in the sb db in bfd_monitor_run()
- use 1s as default value or min_rx if not provided by the CMS

Changes since v5:
- use bitmap for src port selection
- get rid of found in bfd_entry and simplify build_bfd_table() logic
- remove default value for BFD minrx (0 is an allowed value according to the
  RFC5880)

Changes since v4:
- fix open-bfdd restart issue
- do not send BFD packets in admin_down state
- fix BFD table sync in nb/sb db
- fix BFD and logical_router_static_route tables sync
- improve ovn-northd.at/system-ovn.at tests

Changes since v3:
- fix 100% cpu utilization if min_tx/min_rx are 0
- improve unit tests
- move system tests in patch 5
- set admin_down as default state if no static route is associated to
  the BFD session
- fix possible memory leak in bfd_monitor_destroy()

Changes since v2:
- introduce weak reference in Logical_Router_Static_Route table to
  the related BFD table
- remove idl_index for BFD table and perform lookup using local map
- remove unnecessary filed in bfd_entry struct
- add external_ids column in BFD nb/sb table
- make status info not mandatory configuring BFD table in nb db

Changes since v1:
- rebase ontop of ovn master
- rename handle_bfd_msg action in handle_bfd_msg()
- add ovn-northd unit-tests
- improve commit logs
- remove global BFD control check
- introduce BFD support for ovn static routes

Lorenzo Bianconi (5):
  controller: introduce BFD tx path in ovn-controller
  action: introduce handle_bfd_msg() action
  controller: bfd: introduce BFD state machine
  bfd: support demand mode on rx side
  ovn: integrate bfd for static routes

 NEWS                        |   3 +
 controller/ovn-controller.c |   1 +
 controller/pinctrl.c        | 660 +++++++++++++++++++++++++++++++++++-
 controller/pinctrl.h        |   2 +
 include/ovn/actions.h       |   7 +
 lib/actions.c               |  27 ++
 lib/ovn-l7.h                |  19 ++
 northd/ovn-northd.8.xml     |  21 ++
 northd/ovn-northd.c         | 328 +++++++++++++++++-
 ovn-nb.ovsschema            |  33 +-
 ovn-nb.xml                  |  74 ++++
 ovn-sb.ovsschema            |  27 +-
 ovn-sb.xml                  |  78 +++++
 tests/atlocal.in            |   3 +
 tests/ovn-nbctl.at          |   8 +-
 tests/ovn-northd.at         |  63 ++++
 tests/ovn.at                |   4 +
 tests/system-ovn.at         | 136 ++++++++
 utilities/ovn-trace.c       |   2 +
 19 files changed, 1474 insertions(+), 22 deletions(-)

-- 
2.29.2



More information about the dev mailing list