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

numansiddique noreply at github.com
Thu Jun 25 08:56:23 UTC 2020


  Branch: refs/heads/branch-20.06
  Home:   https://github.com/ovn-org/ovn
  Commit: c7ed2c73e3c986edbc10d5659fef39ad82d68bb3
      https://github.com/ovn-org/ovn/commit/c7ed2c73e3c986edbc10d5659fef39ad82d68bb3
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-25 (Thu, 25 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: 8bc8fe85a5d51db21fa6aa183944c5a9d1189a12
      https://github.com/ovn-org/ovn/commit/8bc8fe85a5d51db21fa6aa183944c5a9d1189a12
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-25 (Thu, 25 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: 3d096f833c4a7d6f688a58c0d57629806936a926
      https://github.com/ovn-org/ovn/commit/3d096f833c4a7d6f688a58c0d57629806936a926
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-25 (Thu, 25 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: a7c9df3c478ef844bb711a936310809789aa0ddf
      https://github.com/ovn-org/ovn/commit/a7c9df3c478ef844bb711a936310809789aa0ddf
  Author: Venkata Anil <anilvenkata at redhat.com>
  Date:   2020-06-25 (Thu, 25 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: c573ae51062b9a73e847b71e9fac7acb0faafdb8
      https://github.com/ovn-org/ovn/commit/c573ae51062b9a73e847b71e9fac7acb0faafdb8
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-25 (Thu, 25 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: 4dcc306581b7a2e108cf78b7c62d60e857e75019
      https://github.com/ovn-org/ovn/commit/4dcc306581b7a2e108cf78b7c62d60e857e75019
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-25 (Thu, 25 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: 4982c7132c490f0cc65f147b72c85b1311948597
      https://github.com/ovn-org/ovn/commit/4982c7132c490f0cc65f147b72c85b1311948597
  Author: Numan Siddique <numans at ovn.org>
  Date:   2020-06-25 (Thu, 25 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/80f50554f98e...4982c7132c49


More information about the git mailing list