On 25.11.20 16:14, Dumitru Ceara wrote:
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


I believe that this approach is way to go, at least nothing comes to my mind
that could go wrong here. We will try to make a patch for that. However, if
someone is familiar with the code and knows how to do it fast, it would also
be very nice.

Thanks!
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to