On Tue, May 5, 2020 at 11:57 AM Han Zhou <hz...@ovn.org> wrote:
>
>
>
> On Fri, May 1, 2020 at 2:14 PM Dan Winship <danwins...@redhat.com> wrote:
> >
> > On 5/1/20 12:37 PM, Girish Moodalbail wrote:
> > > If we now look at table=12 (lr_in_arp_resolve) in the ingress pipeline
> > > of Gateway Router-1, then you will see that there will be 2000 logical
> > > flow entries...
> >
> > > In the topology above, the only intended path is North-South between
> > > each gateway router and the logical router. There is no east-west
> > > traffic between the gateway routers
> >
> > > Is there an another way to solve the above problem with just keeping
the
> > > single join logical switch?
> >
> > Two thoughts:
> >
> > 1. In openshift-sdn, the bridge doesn't try to handle ARP itself. It
> > just lets ARP requests pass through normally, and lets ARP replies pass
> > through normally as long as they are correct (ie, it doesn't let
> > spoofing through). This means fewer flows but more traffic. Maybe that's
> > the right tradeoff?
> >
> The 2M entries here is not for ARP responder, but more equivalent to the
neighbour table (or ARP cache), on each LR. The ARP responder resides in
the LS (join logical switch), which is O(n) instead of O(n^2), so it is not
a problem here.
>
> However, a similar idea may works here to avoid the O(n^2) scale issue.
For the neighbour table, actually OVN has two parts, one is statically
build, which is the 2M entires mentioned in this case, and the other is the
dynamic ARP resolve - the mac_binding table, which is dynamically populated
by handling ARP messages. To solve the problem here, it is possible to
change OVN to support configuring a LR to avoid static neighbour table, and
relies only on dynamic ARP resolving. In this case, all the gateway routers
can be configured as not using static ARP resolving, and eventually there
will be only 2 entries (one for IPv4 and one for IPv6) for each gateway
router in mac_binding table for the north-south traffic to the join router.
(of source there will be still same amount of mac_bindings in each router
for the external traffic on the other side of the gateway routers).
>
> This change seems straightforward, but I am not sure if there is any
corner cases.

Hi Girish,

I've sent a RFC patch here for the above proposal:
https://patchwork.ozlabs.org/project/openvswitch/patch/1589614395-99499-1-git-send-email-hz...@ovn.org/
For this use case, just set options:dynamic_neigh_routes=true for all the
Gateway Routers. Could you try it in your scale environment and see if it
solves the problem?

Thanks,
Han

>
> > 2. In most places in ovn-kubernetes, our MAC addresses are
> > programmatically related to the corresponding IP addresses, and in
> > places where that's not currently true, we could try to make it true,
> > and then perhaps the thousands of rules could just be replaced by a
> > single rule?
> >
> This may be a good idea, but I am not sure how to implement in OVN to
make it generic, since most OVN users can't make such assumption.
>
> On the other hand, why wouldn't splitting the join logical switch to 1000
LSes solve the problem? I understand that there will be 1000 more
datapaths, and 1000 more LRPs, but these are all O(n), which is much more
efficient than the O(n^2) exploding. What's the other scale issues created
by this?
>
> In addition, Girish, for the external LS, I am not sure why can't it be
shared, if all the nodes are connected to a single L2 network. (If they are
connected to separate L2 networks, different external LSes should be
created, at least according to current OVN model).
>
> Thanks,
> Han
_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to