On 11/4/22 23:06, Dumitru Ceara wrote: > Sometimes network components are compute node-specific. Sometimes such > components are replicated, almost identically, for multiple nodes > in the cluster. > > One such example is the case of Kubernetes NodePort services which > translate (in the ovn-kubernetes case) to Load_Balancer > objects being applied to each and every node's logical gateway router. > These load balancers are almost identical, the main difference being > the fact that they use different VIPs (the node's IP). > > With the current OVN load balancer design, this becomes a problem at > scale because the number of load balancers that must be configured is > N x M (N nodes times M services). > > This series proposes a new concept in OVN: virtual network component > templates. The goal of the templates is to help reduce resource > consumption in the OVN central components in specific cases like the one > described above. > > To achieve that, the CMS will instead configure a "templated" load > balancer for every service and apply that single template record to > the cluster-wide load balancer group. This template is then > instantiated differently on different compute nodes. This translation > is controlled through per-chassis "template variables" configured by > the CMS in the new NB.Template_Var table. > > Patch 5/5 introduces a synthetic benchmark simulating what an OpenShift > router (using NodePort services) scale test would do. The benchmark > allows us to compare the "standard" (no-template) configuration > against the configuration that uses component templates: > > +----------+-------+-------------------+--------------------+----------+---------+-----------+---------------------------+ > | | | | NB | SB | > | northd | ovn-controller | > +----------+-------+-------------------+--------------------+----------+---------+-----------+---------------------------+ > | Template | Nodes | NodePort Services | Size(MB) | RSS(MB) | Size(MB) | > RSS(MB) | loop(sec) | RSS (MB) | recompute(sec) | > | | | (5 backends) | | | | > | | | | > +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------+ > | No | 60 | 1000 | 25 | 116 | 118 | > 589 | 2.70 | 463 | 0.20 | > | Yes | 60 | 1000 | 6 | 25 | 8 | > 46 | 0.07 | 44 | 0.20 | > +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------+ > | No | 120 | 2000 | 67 | 865 | 471 | > 9000 | 15.60 | 1016 | 0.40 | > | Yes | 120 | 2000 | 23 | 96 | 28 | > 225 | 0.22 | 83 | 0.40 | > +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------+ > | Yes | 120 | 10000 | 118 | 440 | 136 | > 668 | 0.72 | 311 | 1.77 | > +----------+-------+-------------------+----------+---------+----------+---------+-----------+----------+----------------- > | Yes | 250 | 10000 | 244 | 870 | 263 | > 1502 | 1.26 | 318 | 1.87 | > +------------------------------------------------------------------------------------------------------------------------- > > For the N=120 S=2000 case: > - NB size reduced by ~65% > - NB RSS reduced by ~90% > - SB size reduced by ~95% > - SB RSS reduced by ~98% > - ovn-northd loop time reduced by ~98% > - ovn-controller RSS reduced by ~92% > > Dumitru Ceara (5): > lflow: Factor out the lflow reference handling code into a new module. > Add NB and SB Template_Var tables. > controller: Add support for templated actions and matches. > lb: Support using templates. > tutorial: Add scripts to simulate node-port ovn-k8s services. >
Oops, sorry about the noise, this should've been a v2. I'll repost. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev