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

Reply via email to