[ovs-dev] Scaling of Logical_Flows and MAC_Binding tables
Dumitru Ceara
dceara at redhat.com
Wed Nov 25 15:14:07 UTC 2020
On 11/25/20 3:30 PM, Renat Nurgaliyev wrote:
> Hello folks,
>
Hi Renat,
> we run a lab where we try to evaluate scalability potential of OVN with
> OpenStack as CMS.
> Current lab setup is following:
>
> 500 networks
> 500 routers
> 1500 VM ports (3 per network/router)
> 1500 Floating IPs (one per VM port)
>
> There is an external network, which is bridged to br-provider on gateway
> nodes. There are 2000 ports
> connected to this external network (1500 Floating IPs + 500 SNAT router
> ports). So the setup is not
> very big we'd say, but after applying this configuration via ML2/OVN
> plugin, northd kicks in and does
> its job, and after its done, Logical_Flow table gets 645877 entries,
> which is way too much. But ok,
> we move on and start one controller on the gateway chassis, and here
> things get really messy.
> MAC_Binding table grows from 0 to 999088 entries in one moment, and
> after its done, the size of SB
> biggest tables look like this:
>
> 999088 MAC_Binding
> 645877 Logical_Flow
> 4726 Port_Binding
> 1117 Multicast_Group
> 1068 Datapath_Binding
> 1046 Port_Group
> 551 IP_Multicast
> 519 DNS
> 517 HA_Chassis_Group
> 517 HA_Chassis
> ...
>
> MAC binding table gets huge, basically it now has an entry for every
> port that is connected to external
> network * number of datapaths, which roughly makes it one million
> entries. This table by itself increases
> the size of the SB by 200 megabytes. Logical_Flow table also gets very
> heavy, we have already played a bit
> with logical datapath patches that Ilya Maximets submitted, and it looks
> much better, but the size of
> the MAC_Binding table still feels inadequate.
>
> We would like to start to work at least on MAC_Binding table
> optimisation, but it is a bit difficult
> to start working from scratch. Can someone help us with ideas how this
> could be optimised?
>
> Maybe it would also make sense to group entries in MAC_Binding table in
> the same way like it is proposed
> for logical flows in Ilya's patch?
>
Maybe it would work but I'm not really sure how, right now. However,
what if we change the way MAC_Bindings are created?
Right now a MAC Binding is created for each logical router port but in
your case there are a lot of logical router ports connected to the
single provider logical switch and they all learn the same ARPs.
What if we instead store MAC_Bindings per logical switch? Basically
sharing all these MAC_Bindings between all router ports connected to the
same LS.
Do you see any problem with this approach?
Thanks,
Dumitru
More information about the dev
mailing list