[ovs-dev] [PATCH ovn v2 0/9] Incremental processing for flow installation.

Han Zhou hzhou at ovn.org
Mon Sep 7 06:45:33 UTC 2020

Incremental processing has been implementation in ovn-controller, but we were
still doing full comparison between desired flow table and installed flow table
every time to figure out the changes need to be pushed to OVS. This series is
mainly to utilize the incremental processing information to figure out flow
changes to OVS without full table scanning, to further reduce CPU of

In ovn-scale-test with 3000 HVs and 30k lports, the end-to-end latency between
the moment a lflow is updated in SB DB and the moment when all the 3K HVs
complete OVS flow updating has reduced around 60% (from 1s to 400ms). perf
report also shows ~40% of CPU reduced in ovn-controller.

Another important change of this series is the fix of the conjunction handling

v1 -> v2:

- Addressed Mark's comments for defining different data types for desired flows
  and installed flows, and related refactoring. (patch 6/9)
- Updated comments for the cross reference structures between desired flows and
  SB UUIDs with a diagram to help understanding. (patch 4/9)

Han Zhou (9):
  ofctrl: change ofctrl_dup_flow to module internal function
  ovn.at: Fix AT for conjunction case.
  lflow.c: No need to remove flows for adding new datapath.
  ovn-controller: Fix conjunction handling with incremental processing.
  ovn.at: Add test case for duplicated flow handling.
  ofctrl.c: Maintain references between installed flows and desired flows.
  ofctrl.c: Refactor - move openflow msg construction to functions.
  ofctrl: Incremental processing for flow installation by tracking.
  ofctrl.c: Merge opposite changes of tracked flows before installing.

 controller/lflow.c  |  106 ++++--
 controller/ofctrl.c | 1041 +++++++++++++++++++++++++++++++++++++++++----------
 controller/ofctrl.h |   39 +-
 tests/ovn.at        |  225 ++++++++++-
 4 files changed, 1164 insertions(+), 247 deletions(-)


More information about the dev mailing list