[ovs-dev] [RFC 00/14] ovn-controller incremental processing.

Han Zhou zhouhan at gmail.com
Wed Jul 25 00:59:26 UTC 2018


This patch series is the rebase of previous patch series [1] on top of master
where a series of changes that avoided passing ovsdb IDL (eaa4ead5) has been
merged. The major concern of the previous patches are the maintainability
of the dependencies. This patch series, thanks for the removal of passing
IDL directly, eliminates the access to any tables within any engine node
processing, and all dependencies are naturally exposed because otherwise
the code will either not pass compile or abort in the very first iteration,
except for one case - accessing data of other tables through references.

For exposing the dependencies introduced by reference access, it is a big
TODO item and it is the major reason this patch series is RFC only.

Other than this, there is another problem found while using ovsdb IDL index
to query chassis: current ovsdb IDL index is not updated for the changes made
in current transaction. It would be better if we fix the index implementation,
although this patch series worked around this problem by postpone some
processing to next iterations in such circumstances.

[1] https://mail.openvswitch.org/pipermail/ovs-dev/2018-June/347808.html

Han Zhou (14):
  ovsdb-idlc.in: Support more interfaces for passing pointers of
    individual tables.
  ovn-controller: Incremental processing engine
  ovn-controller: Track OVSDB changes
  ovn-controller: Initial use of incremental engine.
  ovn-controller: Incremental logical flow processing
  ovn-controller: runtime_data change handler for SB port-binding
  ovn-controller: port-binding incremental processing for physical flows
  ovn-controller: incremental processing for multicast group changes
  ovsdb-idl: Tracking - preserve data for deleted rows.
  ovn-controller: Split addr_sets from runtime_data.
  ovn-controller: Maintain resource references for logical flows.
  ovn-controller: Incremental processing for address-set changes.
  ovn-controller: Split port_groups from runtime_data.
  ovn-controller: Incremental processing for port-group changes.

 include/ovn/actions.h           |    3 +
 include/ovn/expr.h              |    5 +-
 lib/ovsdb-idl-provider.h        |    2 +
 lib/ovsdb-idl.c                 |   36 +-
 ovn/controller/bfd.c            |    4 +-
 ovn/controller/binding.c        |  108 ++-
 ovn/controller/binding.h        |    7 +
 ovn/controller/encaps.c         |   12 +-
 ovn/controller/lflow.c          |  428 +++++++++++-
 ovn/controller/lflow.h          |  100 ++-
 ovn/controller/ofctrl.c         |  262 +++++---
 ovn/controller/ofctrl.h         |   32 +-
 ovn/controller/ovn-controller.c | 1398 +++++++++++++++++++++++++++++++++------
 ovn/controller/physical.c       |  232 +++++--
 ovn/controller/physical.h       |   20 +-
 ovn/lib/actions.c               |    8 +-
 ovn/lib/automake.mk             |    4 +-
 ovn/lib/expr.c                  |   21 +-
 ovn/lib/extend-table.c          |   60 +-
 ovn/lib/extend-table.h          |   16 +-
 ovn/lib/inc-proc-eng.c          |  201 ++++++
 ovn/lib/inc-proc-eng.h          |  240 +++++++
 ovn/utilities/ovn-trace.c       |    2 +-
 ovsdb/ovsdb-idlc.in             |   25 +
 tests/ovn.at                    |   75 +++
 tests/test-ovn.c                |    7 +-
 26 files changed, 2877 insertions(+), 431 deletions(-)
 create mode 100644 ovn/lib/inc-proc-eng.c
 create mode 100644 ovn/lib/inc-proc-eng.h

-- 
2.1.0



More information about the dev mailing list