On Thu, Jan 11, 2024 at 7:28 AM <num...@ovn.org> wrote: > > From: Numan Siddique <num...@ovn.org> > > This patch series adds incremental processing in the lflow engine > node to handle changes to northd and other engine nodes. > Changed related to load balancers and NAT are mainly handled in > this patch series. > > This patch series can also be found here - https://github.com/numansiddique/ovn/tree/northd_lbnatacl_lflow/v5 > > Prior to this patch series, most of the changes to northd engine > resulted in full recomputation of logical flows. This series > aims to improve the performance of ovn-northd by adding the I-P > support. In order to add this support, some of the northd engine > node data (from struct ovn_datapath) is split and moved over to > new engine nodes - mainly related to load balancers, NAT and ACLs. > > 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 all the lflow I-P patches applied, the resuts are: > > ------------------------------------------------------------------------------------------------------------------------------------------------------- > Min (s) Median (s) 90%ile (s) 99%ile (s) Max (s) Mean (s) Total (s) Count Failed > ------------------------------------------------------------------------------------------------------------------------------------------------------- > Iteration Total 0.136883 1.129016 1.192001 1.204167 1.212728 0.665017 83.127099 125 0 > Namespace.add_ports 0.005216 0.005736 0.007034 0.015486 0.018978 0.006211 0.776373 125 0 > WorkerNode.bind_port 0.035030 0.046082 0.052469 0.058293 0.060311 0.045973 11.493259 250 0 > WorkerNode.ping_port 0.005057 0.006727 1.047692 1.069253 1.071336 0.266896 66.724094 250 0 > ------------------------------------------------------------------------------------------------------------------------------------------------------- > > The results with the present main are: > > ------------------------------------------------------------------------------------------------------------------------------------------------------- > Min (s) Median (s) 90%ile (s) 99%ile (s) Max (s) Mean (s) Total (s) Count Failed > ------------------------------------------------------------------------------------------------------------------------------------------------------- > Iteration Total 0.135491 2.223805 3.311270 3.339078 3.345346 1.729172 216.146495 125 0 > Namespace.add_ports 0.005380 0.005744 0.006819 0.018773 0.020800 0.006292 0.786532 125 0 > WorkerNode.bind_port 0.034179 0.046055 0.053488 0.058801 0.071043 0.046117 11.529311 250 0 > WorkerNode.ping_port 0.004956 0.006952 3.086952 3.191743 3.192807 0.791544 197.886026 250 0 > ------------------------------------------------------------------------------------------------------------------------------------------------------- > > Please see the link [2] which has a high level description of the > changes done in this patch series. > > > [1] - https://github.com/ovn-org/ovn-heater/blob/main/test-scenarios/ocp-500-density-heavy.yml > [2] - https://mail.openvswitch.org/pipermail/ovs-dev/2023-December/410053.html > > v4 -> v5 > ------- > * Rebased to latest main and resolved the conflicts. > > * Addressed the review comments from Han in patch 15 (and in p8). Removed the > assert if SB dp group is missing and handled it by returning false > so that lflow engine recomputes. Added test cases to cover this > scenario for both lflows (p8) and SB load balancers (p15) .
Thanks Numan. I went through this version of the series. I tried my best to review in details but I can't say I examined every lines of the changes. The major comments are about the implicit dependency related to p4, p5, p6, p7, and some pending discussions for p8 (for which I am also going to do more performance test). For the rest of patches, please consider them as: Acked-by: Han Zhou <hz...@ovn.org> Thanks, Han > > v3 -> v4 > ------- > * Addressed most of the review comments from Dumitru and Han. > > * Found a couple of bugs in v3 patch 9 - > "northd: Refactor lflow management into a separate module." > and addressed them in v4. > To brief the issue, if a logical flow L(M, A) is referenced > by 2 lflow_ref's which belong to the same datapath, then the lflow > was deleted even if one lflow_ref was cleared due to any changes. > It is addressed now by maintaining a reference count in the 'struct > ovn_lflow' for each datapath it is used by. > > * Moved the v3 patch 14 ("northd: Add I-P for NB_Global and SB_Global.") > to patch 16 in v4. There were comments in this patch to not add a > full I-P for NB_Global and SB_Global. Made this patch as the last > in the series so that we can discuss further and not block other patches > in case we want to drop this one. > > > v2 -> v3 > ------- > * Addressed some of the review comments from Han and Dumitru. There > are still a few pending review comments which needs to be addressed > or discussed. > > * Renamed the engine node from "lr_lbnat_data" to "lr_stateful" > (v3 patch 5). > > * Renamed the engine node from "ls_lbacls" to "ls_stateful" (v3 patch 8). > > * Removed v2 patch 2 from the series (northd: Track ovn_datapaths in > northd engine track data."). This patch is now part of v3 patch 7 > (northd: Add a new node 'ls_stateful'). > > * Squashed v2 patch 8 (northd: Don't commit dhcp response flows in > the conntrack.) into v3 patch 7 (northd: Add a new node > 'ls_stateful'.) > > > v1 -> v2 > -------- > * Now also maintaing array indexes for ls_lbacls, lr_nat and > lr_lb_nat_data tables (similar to ovn_datapaths->array) to > make the lookup effecient. The same ovn_datapath->index > is reused. > > * Made some signficant changes to 'struct lflow_ref' in lflow-mgr.c. > In v2 we don't use objdep_mgr to maintain the resource to lflow > references. Instead we maintain the 'struct lflow' pointer. > With this we don't need to maintain additional hmap of lflows. > > > Numan Siddique (16): > northd: Refactor the northd change tracking. > tests: Add a couple of tests in ovn-northd for I-P. > northd: Move router ports SB PB options sync to sync_to_sb_pb node. > northd: Add a new engine 'lr_nat' to manage lr NAT data. > northd: Add a new engine 'lr_stateful' to manage lr's stateful data. > northd: Generate router's stateful flows using lr_stateful data. > northd: Add a new node 'ls_stateful'. > northd: Refactor lflow management into a separate module. > northd: Use lflow_ref when adding all logical flows. > northd: Move ovn_lb_datapaths from lib to northd module. > northd: Handle lb changes in lflow engine. > northd: Add lr_stateful handler for lflow engine node. > northd: Add ls_stateful handler for lflow engine node. > northd: Add a noop handler for northd SB mac binding. > northd: Add northd change handler for sync_to_sb_lb node. > northd: Add I-P for NB_Global and SB_Global. > > lib/lb.c | 96 - > lib/lb.h | 57 - > lib/ovn-util.c | 24 +- > lib/ovn-util.h | 4 +- > lib/stopwatch-names.h | 3 + > northd/aging.c | 21 +- > northd/automake.mk | 14 +- > northd/en-global-config.c | 588 ++++ > northd/en-global-config.h | 65 + > northd/en-lflow.c | 115 +- > northd/en-lflow.h | 8 + > northd/en-lr-nat.c | 423 +++ > northd/en-lr-nat.h | 130 + > northd/en-lr-stateful.c | 669 ++++ > northd/en-lr-stateful.h | 137 + > northd/en-ls-stateful.c | 443 +++ > northd/en-ls-stateful.h | 104 + > northd/en-northd.c | 70 +- > northd/en-northd.h | 2 +- > northd/en-port-group.h | 3 + > northd/en-sync-from-sb.c | 2 +- > northd/en-sync-sb.c | 572 +++- > northd/inc-proc-northd.c | 74 +- > northd/lb.c | 124 + > northd/lb.h | 108 + > northd/lflow-mgr.c | 1230 +++++++ > northd/lflow-mgr.h | 189 ++ > northd/northd.c | 6343 ++++++++++++++++--------------------- > northd/northd.h | 540 +++- > northd/ovn-northd.c | 7 + > tests/ovn-macros.at | 44 + > tests/ovn-northd.at | 1235 +++++++- > 32 files changed, 9338 insertions(+), 4106 deletions(-) > create mode 100644 northd/en-global-config.c > create mode 100644 northd/en-global-config.h > create mode 100644 northd/en-lr-nat.c > create mode 100644 northd/en-lr-nat.h > create mode 100644 northd/en-lr-stateful.c > create mode 100644 northd/en-lr-stateful.h > create mode 100644 northd/en-ls-stateful.c > create mode 100644 northd/en-ls-stateful.h > create mode 100644 northd/lb.c > create mode 100644 northd/lb.h > create mode 100644 northd/lflow-mgr.c > create mode 100644 northd/lflow-mgr.h > > -- > 2.43.0 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev