[ovs-git] [ovn-org/ovn] d6716c: I-P engine: Provide the option for an engine to cl...

numansiddique noreply at github.com
Fri Jun 19 12:57:43 UTC 2020


  Branch: refs/heads/master
  Home:   https://github.com/ovn-org/ovn
  Commit: d6716c753d2c0e4d892e2b89de74abd51d3a09e6
      https://github.com/ovn-org/ovn/commit/d6716c753d2c0e4d892e2b89de74abd51d3a09e6
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M lib/inc-proc-eng.c
    M lib/inc-proc-eng.h

  Log Message:
  -----------
  I-P engine: Provide the option for an engine to clear tracked engine data in every run.

A new function is added in the engine node called - clear_tracked_data() to
clear any engine data which was tracked during the engine run. This tracked data
has to be part of the engine 'data'. engine_init_run() calls clear_tracked_data()
and each engine node interested in tracking the data needs to implement the
en_<ENGINE_NODE_NAME>clear_tracked_data() function.

With this patch, an engine node can store any changes done to the engine data
separately in the engine change handlers. The parent of this engine node
can use this tracked data for incrementally processing the changes. Upcoming
patches in the series will make use of this.

Acked-by: Dumitru Ceara <dceara at redhat.com>
Acked-by: Han Zhou <hzhou at ovn.org>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: a3005f0dc777df03e3a386f181250ee6cf77987f
      https://github.com/ovn-org/ovn/commit/a3005f0dc777df03e3a386f181250ee6cf77987f
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M controller/binding.c
    M controller/binding.h
    M controller/ovn-controller.c
    M controller/physical.c
    M controller/physical.h

  Log Message:
  -----------
  ovn-controller: I-P for ct zone and OVS interface changes in flow output stage.

This patch handles ct zone changes and OVS interface changes incrementally
in the flow output stage.

Any changes to ct zone can be handled by running physical_run() instead of running
flow_output_run(). And any changes to OVS interfaces can be either handled
incrementally (for OVS interfaces representing VIFs) or just running
physical_run() (for tunnel and other types of interfaces).

To better handle this, a new engine node 'physical_flow_changes' is added which
handles changes to ct zone and OVS interfaces.

Acked-by: Han Zhou <hzhou at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: 6b0f01116babef0d80c109c7f48861b0d0303837
      https://github.com/ovn-org/ovn/commit/6b0f01116babef0d80c109c7f48861b0d0303837
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M controller/binding.c
    M controller/binding.h
    M controller/ovn-controller.c
    M tests/ovn-performance.at

  Log Message:
  -----------
  ovn-controller: Handle runtime data changes in flow output engine

In order to handle runtime data changes incrementally, the flow outut
runtime data handle should know the changed runtime data.
Runtime data now tracks the changed data for any OVS interface
and SB port binding changes. The tracked data contains a hmap
of tracked datapaths (which changed during runtime data processing.

The flow outout runtime_data handler in this patch doesn't do much
with the tracked data. It returns false if there is tracked data available
so that flow_output run is called. If no tracked data is available
then there is no need for flow computation and the handler returns true.

Next patch in the series processes the tracked data incrementally.

Acked-by: Han Zhou <hzhou at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Co-Authored-by: Venkata Anil <anilvenkata at redhat.com>
Signed-off-by: Venkata Anil <anilvenkata at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: ade4e779d3fb5cfe601a0da2bf73a0ed90696c38
      https://github.com/ovn-org/ovn/commit/ade4e779d3fb5cfe601a0da2bf73a0ed90696c38
  Author: Venkata Anil <anilvenkata at redhat.com>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M controller/lflow.c
    M controller/lflow.h
    M controller/ovn-controller.c
    M tests/ovn-performance.at

  Log Message:
  -----------
  ovn-controller: Use the tracked runtime data changes for flow calculation.

This patch processes the logical flows of tracked datapaths
and tracked logical ports. To handle the tracked logical port
changes, reference of logical flows to port bindings is maintained.

Below are the results of some testing done with ovn-fake-multinode setup
comparing these incremental processing improvement patches and the
master.

Test setup
------
 1. ovn-central fake node running OVN dbs and 2 compute nodes running
    ovn-controller.

 2. Before running the tests, used an existing OVN db with the below
resources
   No of logical switches     - 53
   No of logical ports        - 1256
   No of logical routers      - 9
   No of logical router ports - 56
   No of port groups          - 152
   No of logical flows        - 45447

   Port bindings on compute-1 -  19
   Port bindings on compute-2 -  18
   No of OF flows on compute-1 - 84996
   No of OF flows on compute-2 - 84901

 3. The test does the following
    - Creates 2 logical switches (one for each compute node) and connect to a
      logical router for each compute node.
    - 100 logical ports are created (50 per lswitch), a simple ACL is added and the address
      set is created for each port.
    - Each port is bound on the respective compute node and the test
      pings the IP of the port (from another port belonging to the same
      lswitch created earlier).

Below are the results with OVN master

+--------------------------------------------------------------------------------------------------------------------------+
|                                                   Response Times (sec)                                                   |
+--------------------------------------------------+--------+--------+--------+--------+--------+--------+---------+-------+
| action                                           | min    | median | 90%ile | 95%ile | max    | avg    | success | count |
+--------------------------------------------------+--------+--------+--------+--------+--------+--------+---------+-------+
| ovn.create_or_update_network_policy              | 1.02   | 1.266  | 1.522  | 1.552  | 2.053  | 1.284  | 100.0%  | 100   |
| ovn.create_or_update_network_policy_address_sets | 0.222  | 0.276  | 0.289  | 0.294  | 0.318  | 0.272  | 100.0%  | 100   |
| ovn.create_port_group_acls                       | 0.462  | 0.54   | 0.57   | 0.576  | 0.588  | 0.531  | 50.0%   | 100   |
| ovn.create_or_update_name_space                  | 0.346  | 0.476  | 0.554  | 0.569  | 0.595  | 0.47   | 100.0%  | 100   |
| ovn_network.bind_port                            | 1.235  | 1.349  | 1.404  | 1.425  | 1.45   | 1.351  | 100.0%  | 100   |
| ovn.bind_ovs_vm                                  | 0.394  | 0.458  | 0.494  | 0.501  | 0.536  | 0.458  | 100.0%  | 100   |
| ovn.bind_internal_vm                             | 0.795  | 0.894  | 0.938  | 0.95   | 0.978  | 0.893  | 100.0%  | 100   |
| ovn_network.wait_port_ping                       | 7.388  | 7.669  | 7.774  | 7.83   | 8.6    | 7.682  | 100.0%  | 100   |
| total                                            | 10.546 | 11.007 | 11.401 | 11.526 | 12.222 | 11.044 | 100.0%  | 100   |
+--------------------------------------------------+--------+--------+--------+--------+--------+--------+---------+-------+
Load duration: 1106.4100859165192
Full duration: 1108.1457152366638

Below are the results with these I-P improvement patches

+-----------------------------------------------------------------------------------------------------------------------+
|                                                 Response Times (sec)                                                  |
+--------------------------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+
| action                                           | min   | median | 90%ile | 95%ile | max   | avg   | success | count |
+--------------------------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+
| ovn.create_or_update_network_policy              | 0.97  | 1.229  | 1.451  | 1.46   | 1.944 | 1.24  | 100.0%  | 100   |
| ovn.create_or_update_network_policy_address_sets | 0.224 | 0.267  | 0.28   | 0.282  | 0.291 | 0.266 | 100.0%  | 100   |
| ovn.create_port_group_acls                       | 0.462 | 0.526  | 0.539  | 0.544  | 0.564 | 0.52  | 50.0%   | 100   |
| ovn.create_or_update_name_space                  | 0.33  | 0.467  | 0.549  | 0.556  | 0.562 | 0.463 | 100.0%  | 100   |
| ovn_network.bind_port                            | 1.231 | 1.313  | 1.386  | 1.4    | 1.446 | 1.317 | 100.0%  | 100   |
| ovn.bind_ovs_vm                                  | 0.392 | 0.436  | 0.464  | 0.475  | 0.502 | 0.438 | 100.0%  | 100   |
| ovn.bind_internal_vm                             | 0.816 | 0.876  | 0.936  | 0.967  | 0.997 | 0.879 | 100.0%  | 100   |
| ovn_network.wait_port_ping                       | 0.097 | 0.141  | 0.177  | 0.18   | 0.203 | 0.136 | 100.0%  | 100   |
| total                                            | 2.977 | 3.406  | 3.709  | 3.748  | 4.181 | 3.411 | 100.0%  | 100   |
+--------------------------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+
Load duration: 343.18983340263367
Full duration: 344.80813431739807

Acked-by: Han Zhou <hzhou at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Co-Authored-by: Numan Siddique <numans at ovn.org>
Signed-off-by: Venkata Anil <anilvenkata at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: fb0f2efadebcfe2ee0f5f9f6960ddaf5d06de0c7
      https://github.com/ovn-org/ovn/commit/fb0f2efadebcfe2ee0f5f9f6960ddaf5d06de0c7
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M tests/ovn-performance.at

  Log Message:
  -----------
  tests: Enhance ovn-performance testing by adding gw router port.

This covers the scenario of setting up/deleting of BFD tunnels
for HA.

Acked-by: Han Zhou <hzhou at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: 8396290ef748181531ab77f5c6475bcdb515fad1
      https://github.com/ovn-org/ovn/commit/8396290ef748181531ab77f5c6475bcdb515fad1
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M controller/binding.c
    M controller/lflow.c
    M lib/ovn-util.h

  Log Message:
  -----------
  Add an util function get_unique_lport_key() for generating unique lport key.

Suggested-by: Dumitru Ceara <dceara at redhat.com>
Acked-by: Han Zhou <hzhou at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


  Commit: f1446577d6b4cdee4733b701c2b58b29575fe3c1
      https://github.com/ovn-org/ovn/commit/f1446577d6b4cdee4733b701c2b58b29575fe3c1
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-19 (Fri, 19 Jun 2020)

  Changed paths:
    M controller/binding.c

  Log Message:
  -----------
  binding.c: Reorder out params of some of the static functions.

Acked-by: Han Zhou <hzhou at ovn.org>
Acked-by: Dumitru Ceara <dceara at redhat.com>
Signed-off-by: Numan Siddique <numans at ovn.org>


Compare: https://github.com/ovn-org/ovn/compare/ae5e2798c04e...f1446577d6b4


More information about the git mailing list