mbox series

[ovs-dev,v8,0/4] northd: I-P for load balancer and lb groups

Message ID 20230912174633.258616-1-numans@ovn.org
Headers show
Series northd: I-P for load balancer and lb groups | expand

Message

Numan Siddique Sept. 12, 2023, 5:46 p.m. UTC
From: Numan Siddique <numans@ovn.org>

This patch series adds the support to handle load balancer and
load balancer group changes incrementally in the "northd" engine
node. Changes to logical switches and router's load
balancer and load balancer group columns are also handled incrementally
provided other columns do not change.

v6 of the series also included lflow I-P handling.  But v7 drops these
patches as there are some concerns with the obj dep mgr usage. lflow I-P
handling patches will be submitted separately.

Below are the scale testing results done with these patches applied
using ovn-heater.  The test ran the scenario  -
ocp-500-density-heavy.yml [1].

With these patches applied (with load balancer I-P handling only in
northd engine node) the resuts are:

-------------------------------------------------------------------------------------------------------------------------------------------------------
                        Min (s)         Median (s)      90%ile (s)      99%ile (s)      Max (s)         Mean (s)        Total (s)       Count   Failed
-------------------------------------------------------------------------------------------------------------------------------------------------------
Iteration Total         0.131363        1.189994        3.213526        4.308134        4.394562        1.385713        173.214153      125     0
Namespace.add_ports     0.005176        0.005611        0.006476        0.019867        0.024206        0.006058        0.757188        125     0
WorkerNode.bind_port    0.033776        0.046343        0.054414        0.061719        0.063613        0.046815        11.703773       250     0
WorkerNode.ping_port    0.005156        0.006959        2.044939        3.655328        4.241496        0.627103        156.775832      250     0
-------------------------------------------------------------------------------------------------------------------------------------------------------


The results with the present main (Result 3) are:


-------------------------------------------------------------------------------------------------------------------------------------------------------
                        Min (s)         Median (s)      90%ile (s)      99%ile (s)      Max (s)         Mean (s)        Total (s)       Count   Failed
-------------------------------------------------------------------------------------------------------------------------------------------------------
Iteration Total         3.233795        4.364926        5.400982        6.412803        7.409757        4.792270        599.033790      125     0
Namespace.add_ports     0.005230        0.006564        0.007379        0.019060        0.037490        0.007223        0.902930        125     0
WorkerNode.bind_port    0.033864        0.044052        0.049608        0.054849        0.056196        0.044005        11.001231       250     0
WorkerNode.ping_port    0.005334        2.060477        5.222422        6.267332        7.284001        2.323020        580.754964      250     0
-------------------------------------------------------------------------------------------------------------------------------------------------------

v7 -> v8
-------
  * Addressed review comments

v6 -> v7
-------
  * First 4 patches of v6 are merged in main and branch-23.09 and
    patches 9 to 16 are dropped.
  * v7 only has 4 patches now.
  * Addressed review comments.  There is only one handler for lb_data
    engine input in northd engine node - northd_handle_lb_data_changes().
    In v6 and earlier there were 2
    handle functions - northd_handle_lb_data_changes_pre_od() and
    northd_handle_lb_data_changes_post_od().

v5 -> v6
-------
  * Rebased.  Added 2 more patches (p15 and p16) for LR NAT I-P handling.

v4 -> v5
-------
  * 6 new patches are added to the series which handles the LB changes
    in the lflow engine node.
v3 -> v4
-------
  * Covered more test scearios.
  * Found few issues and fixed them.  v3 was not handling the scenario of
    a vip getting added or removed from a load balancer.

v2 -> v3
--------
  * v2 was very inefficient in handling the load balancer group changes
    and in associating the load balancers of the lb group to the
    datapaths. This was the main reason for the regression in the full
    recompute time taken.
    v3 addressed these by more efficiently handling the lb group changes
    incrementally.


Numan Siddique (4):
  northd: Handle load balancer changes for a logical switch.
  northd: Handle load balancer group changes for a logical switch.
  northd: Sync SB Port bindings NAT column in a separate engine node.
  northd: Handle load balancer/group changes for a logical router.

 lib/lb.c                 |  51 ++-
 lib/lb.h                 |   9 +
 northd/en-lb-data.c      | 432 ++++++++++++++++++++++++-
 northd/en-lb-data.h      |  49 +++
 northd/en-lflow.c        |   6 +
 northd/en-northd.c       |  26 +-
 northd/en-northd.h       |   1 +
 northd/en-sync-from-sb.c |  10 +-
 northd/en-sync-sb.c      |  70 +++-
 northd/en-sync-sb.h      |   5 +
 northd/inc-proc-northd.c |  15 +-
 northd/northd.c          | 667 ++++++++++++++++++++++++++++++---------
 northd/northd.h          |   9 +-
 tests/ovn-northd.at      | 145 +++++----
 14 files changed, 1263 insertions(+), 232 deletions(-)

Comments

Han Zhou Sept. 13, 2023, 10:22 p.m. UTC | #1
On Tue, Sep 12, 2023 at 10:46 AM <numans@ovn.org> wrote:
>
> From: Numan Siddique <numans@ovn.org>
>
> This patch series adds the support to handle load balancer and
> load balancer group changes incrementally in the "northd" engine
> node. Changes to logical switches and router's load
> balancer and load balancer group columns are also handled incrementally
> provided other columns do not change.
>
> v6 of the series also included lflow I-P handling.  But v7 drops these
> patches as there are some concerns with the obj dep mgr usage. lflow I-P
> handling patches will be submitted separately.
>
> Below are the scale testing results done with these patches applied
> using ovn-heater.  The test ran the scenario  -
> ocp-500-density-heavy.yml [1].
>
> With these patches applied (with load balancer I-P handling only in
> northd engine node) the resuts are:
>
>
-------------------------------------------------------------------------------------------------------------------------------------------------------
>                         Min (s)         Median (s)      90%ile (s)
 99%ile (s)      Max (s)         Mean (s)        Total (s)       Count
Failed
>
-------------------------------------------------------------------------------------------------------------------------------------------------------
> Iteration Total         0.131363        1.189994        3.213526
 4.308134        4.394562        1.385713        173.214153      125     0
> Namespace.add_ports     0.005176        0.005611        0.006476
 0.019867        0.024206        0.006058        0.757188        125     0
> WorkerNode.bind_port    0.033776        0.046343        0.054414
 0.061719        0.063613        0.046815        11.703773       250     0
> WorkerNode.ping_port    0.005156        0.006959        2.044939
 3.655328        4.241496        0.627103        156.775832      250     0
>
-------------------------------------------------------------------------------------------------------------------------------------------------------
>
>
> The results with the present main (Result 3) are:
>
>
>
-------------------------------------------------------------------------------------------------------------------------------------------------------
>                         Min (s)         Median (s)      90%ile (s)
 99%ile (s)      Max (s)         Mean (s)        Total (s)       Count
Failed
>
-------------------------------------------------------------------------------------------------------------------------------------------------------
> Iteration Total         3.233795        4.364926        5.400982
 6.412803        7.409757        4.792270        599.033790      125     0
> Namespace.add_ports     0.005230        0.006564        0.007379
 0.019060        0.037490        0.007223        0.902930        125     0
> WorkerNode.bind_port    0.033864        0.044052        0.049608
 0.054849        0.056196        0.044005        11.001231       250     0
> WorkerNode.ping_port    0.005334        2.060477        5.222422
 6.267332        7.284001        2.323020        580.754964      250     0
>
-------------------------------------------------------------------------------------------------------------------------------------------------------
>
> v7 -> v8
> -------
>   * Addressed review comments
>
> v6 -> v7
> -------
>   * First 4 patches of v6 are merged in main and branch-23.09 and
>     patches 9 to 16 are dropped.
>   * v7 only has 4 patches now.
>   * Addressed review comments.  There is only one handler for lb_data
>     engine input in northd engine node - northd_handle_lb_data_changes().
>     In v6 and earlier there were 2
>     handle functions - northd_handle_lb_data_changes_pre_od() and
>     northd_handle_lb_data_changes_post_od().
>
> v5 -> v6
> -------
>   * Rebased.  Added 2 more patches (p15 and p16) for LR NAT I-P handling.
>
> v4 -> v5
> -------
>   * 6 new patches are added to the series which handles the LB changes
>     in the lflow engine node.
> v3 -> v4
> -------
>   * Covered more test scearios.
>   * Found few issues and fixed them.  v3 was not handling the scenario of
>     a vip getting added or removed from a load balancer.
>
> v2 -> v3
> --------
>   * v2 was very inefficient in handling the load balancer group changes
>     and in associating the load balancers of the lb group to the
>     datapaths. This was the main reason for the regression in the full
>     recompute time taken.
>     v3 addressed these by more efficiently handling the lb group changes
>     incrementally.
>
>
> Numan Siddique (4):
>   northd: Handle load balancer changes for a logical switch.
>   northd: Handle load balancer group changes for a logical switch.
>   northd: Sync SB Port bindings NAT column in a separate engine node.
>   northd: Handle load balancer/group changes for a logical router.
>
>  lib/lb.c                 |  51 ++-
>  lib/lb.h                 |   9 +
>  northd/en-lb-data.c      | 432 ++++++++++++++++++++++++-
>  northd/en-lb-data.h      |  49 +++
>  northd/en-lflow.c        |   6 +
>  northd/en-northd.c       |  26 +-
>  northd/en-northd.h       |   1 +
>  northd/en-sync-from-sb.c |  10 +-
>  northd/en-sync-sb.c      |  70 +++-
>  northd/en-sync-sb.h      |   5 +
>  northd/inc-proc-northd.c |  15 +-
>  northd/northd.c          | 667 ++++++++++++++++++++++++++++++---------
>  northd/northd.h          |   9 +-
>  tests/ovn-northd.at      | 145 +++++----
>  14 files changed, 1263 insertions(+), 232 deletions(-)
>
> --
> 2.41.0
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Thanks Numan for the great improvement! For the series:

Acked-by: Han Zhou <hzhou@ovn.org>