On Mon, Nov 27, 2023 at 9:34 PM <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_lflow_ip/v1
Correction - https://github.com/numansiddique/ovn/tree/northd_lbnatacl_lflow/v3 Thanks Numan > > 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 > ------------------------------------------------------------------------------------------------------------------------------------------------------- > > [1] - > https://github.com/ovn-org/ovn-heater/blob/main/test-scenarios/ocp-500-density-heavy.yml > > > Note: This cover letter will be enhanced with more details in v4. > > 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 I-P for NB_Global and SB_Global. > northd: Add a noop handler for northd SB mac binding. > northd: Add northd change handler for sync_to_sb_lb node. > > lib/lb.c | 96 - > lib/lb.h | 57 - > lib/ovn-util.c | 17 +- > lib/ovn-util.h | 2 +- > lib/stopwatch-names.h | 3 + > northd/aging.c | 21 +- > northd/automake.mk | 12 +- > northd/en-global-config.c | 588 ++++ > northd/en-global-config.h | 65 + > northd/en-lflow.c | 122 +- > northd/en-lflow.h | 8 + > northd/en-lr-nat.c | 423 +++ > northd/en-lr-nat.h | 130 + > northd/en-lr-stateful.c | 678 ++++ > northd/en-lr-stateful.h | 136 + > northd/en-ls-stateful.c | 448 +++ > 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 | 510 ++- > northd/inc-proc-northd.c | 71 +- > northd/lflow-mgr.c | 1078 ++++++ > northd/lflow-mgr.h | 192 ++ > northd/northd.c | 6510 ++++++++++++++++--------------------- > northd/northd.h | 593 +++- > northd/ovn-northd.c | 7 + > tests/ovn-macros.at | 44 + > tests/ovn-northd.at | 953 +++++- > 30 files changed, 8825 insertions(+), 4120 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/lflow-mgr.c > create mode 100644 northd/lflow-mgr.h > > -- > 2.41.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