[ovs-dev] [PATCH monitor_cond V8 00/11] Conditional monitoring Implementation

Liran Schour lirans at il.ibm.com
Mon Jun 27 13:32:53 UTC 2016


This patch series implements conditional monitoring by introducing an OVSDB
RFC extension with 2 new JSON-RPC methods: "monitor_cond" and
"monitor_cond_change". Specification of this extension is defined in the
ovsdb-server (1) man page.
Monitor2 is now merged into monitor_cond. A monitor_cond session with an empty 
condition, will behave exactly like monitor2 and will get update2 notifications
on all rows.

This patch series is also available on: https://github.com/liranschour/ovs.git
branch monitor_cond_ovn.

OVN:
Last patch in this series is a RFC for OVN usage of conditional monitoring.

Performance evaluation:
OVN is the main candidate for conditional monitoring usage. It is clear that
conditional monitoring reduces computation on the ovn-controller (client) side
due to the reduced size of flow tables and update messages. However,
performance evaluation shows also a reduction in computation on the SB
ovsdb-server side proportional to the degree that each logical network is
spread over physical hosts in the DC.

Evaluation on simulated environment of 50 hosts and 1000 logical ports shows
the following results (cycles #):

LN spread over # hosts|    master    | patch        | change
-------------------------------------------------------------
            1         | 58855158082  | 38175941755  | 35.1%
            3         | 54816462604  | 40255584120  | 26.5%
            6         | 52972265506  | 39481653891  | 25.4%
           12         | 57036827284  | 42008285519  | 26.3%
           18         | 61900476558  | 45903107035  | 25.8%
           24         | 64281399690  | 55617752599  | 13.4%
           30         | 66905128558  | 61835913623  |  7.5%
           42         | 76763742331  | 70522724721  |  8.1%
           50         | 85372146321  | 80130285454  |  6.1%

Changes:
--------
 V7-->V8:
---------
* Bug fix: on ovsdb-idl.c, call to poll_immediate_wake() on add_clause().
* Add datapath column to MAC_Binding table.
* OVN: re-write usage of conditional monitoring. Remove unused lport clauses.
* Minor fixes.
 
 V6 --> V7:
-----------
* Change ovsdb-idl API to include only add and remove clause from condition.
* IDL maintain and track conditions. Send monitor_cond_change on condition
  change.
* Due to IDL API change, OVN does not maintain and track condition.
* Report column duplication on ovsdv_monitor_add_column().
* Split added documentation according to patches.
* Add to testing for monitor_cond_change method in ovsdb-client via unixctl
  command.
* An update, if any, as a result of a condition change, will be sent to the
  client before the reply to the "monitor_cond_update" request.
* Minor fixes due to review.

Liran Schour (11):
  ovsdb: create column index mapping between ovsdb row to monitor row
  ovsdb: add conditions utilities to support monitor_cond
  ovsdb: allow unmonitored columns in condition evaluation
  ovsdb: generate update notifications for monitor_cond session
  ovsdb: enable jsonrpc-server to service "monitor_cond_change" request
  ovsdb-client: support monitor-cond method
  lib: add to ovsdb-idl monitor_id
  python: move Python idl to work with monitor_cond
  lib: add monitor_cond_change API to C IDL lib
  ovn: Add datapath column to the MAC_Binding table
  RFC OVN: Implementation of conditional monitoring usage

 NEWS                            |   3 +-
 lib/automake.mk                 |   2 +
 lib/ovsdb-condition.c           |  47 ++++
 lib/ovsdb-condition.h           |  45 +++
 lib/ovsdb-idl-provider.h        |   2 +
 lib/ovsdb-idl.c                 | 250 +++++++++++++++--
 lib/ovsdb-idl.h                 |  30 ++
 ovn/controller/automake.mk      |   4 +-
 ovn/controller/binding.c        |  27 +-
 ovn/controller/binding.h        |   2 +
 ovn/controller/filter.c         | 165 +++++++++++
 ovn/controller/filter.h         |  30 ++
 ovn/controller/ovn-controller.c |  23 +-
 ovn/controller/ovn-controller.h |   1 +
 ovn/controller/patch.c          |   7 +-
 ovn/controller/pinctrl.c        |   1 +
 ovn/ovn-sb.ovsschema            |   6 +-
 ovn/ovn-sb.xml                  |   3 +
 ovsdb/condition.c               | 186 ++++++++++++-
 ovsdb/condition.h               |  55 ++--
 ovsdb/jsonrpc-server.c          | 233 +++++++++++++---
 ovsdb/jsonrpc-server.h          |   2 +-
 ovsdb/monitor.c                 | 592 ++++++++++++++++++++++++++++++++++------
 ovsdb/monitor.h                 |  46 +++-
 ovsdb/ovsdb-client.1.in         |  37 ++-
 ovsdb/ovsdb-client.c            |  98 +++++--
 ovsdb/ovsdb-idlc.in             | 364 +++++++++++++++++++++++-
 ovsdb/ovsdb-server.1.in         | 221 +++++++++++++--
 ovsdb/ovsdb-server.c            |  20 +-
 ovsdb/query.c                   |   6 +-
 python/ovs/db/data.py           |  16 +-
 python/ovs/db/idl.py            | 190 +++++++++++--
 tests/ovn-controller.at         |   3 +
 tests/ovs-vswitchd.at           |   8 +-
 tests/ovsdb-condition.at        |  41 +++
 tests/ovsdb-idl.at              | 243 ++++++++++++++++-
 tests/ovsdb-monitor.at          | 251 +++++++++++++++++
 tests/test-ovsdb.c              | 292 +++++++++++++++++++-
 tests/test-ovsdb.py             |  34 +++
 39 files changed, 3275 insertions(+), 311 deletions(-)
 create mode 100644 lib/ovsdb-condition.c
 create mode 100644 lib/ovsdb-condition.h
 create mode 100644 ovn/controller/filter.c
 create mode 100644 ovn/controller/filter.h

-- 
2.1.4




More information about the dev mailing list