On Mon, Apr 19, 2021 at 12:27 AM Dumitru Ceara <[email protected]> wrote:
>
> On 4/16/21 7:16 PM, Mark Michelson wrote:
> > Thanks for the explanation Dumitru. It made good sense out of what had
> > to be a difficult thing to debug. I'm assuming you went with
> > unconditional monitoring since this will work with any change to a DP
> > group, and not just the addition new datapaths to the group.
>
> There's also a case I didn't mention in the commit log (but I can add it
> if you think it's worth adding):
>
> If a logical flow LF1 is not shared between datapaths, so it's only
> applied to DP1, when DP2 is added that needs an identical flow,
> ovn-northd might generate a fresh new DPG = {.datapaths=[DP1, DP2]}, and
> create a new LF1' applied on datapath_group=DPG.
>
> Without unconditional monitoring for datapath groups there's no easy way
> to get the notification about DPG and LF1' being added in the same
> jsonrpc update from SB with the delete for LF.
>
> Given that the number of datapath groups is expected to be relatively
> low compared to the total number of logical flows, unconditional
> monitoring seems like the best solution.
>
> >
> > Acked-by: Mark Michelson <[email protected]>
>
> Thanks!
>

+1 (although late)

I am catching up the DPG implementation, and here are some thoughts on the
use cases. For my understanding, except for the DPG that contains all DPs,
most DPGs are mapping to port-groups, which usually map to
tenants/namespaces. The conditional monitoring feature (when
ovn-monitor-all is disabled) is useful mainly when there are a large number
of small tenants and they don't need to talk to each other, so their
workloads may reside on different HVs and DPs, so conditional monitoring
can result in a smaller number of lflows on each HV in this scenario.
However, when DPG related flows are unconditionally monitored, it makes
conditional monitoring not as useful as it should be when there are a lot
of ACLs, because ACLs are the major user of the port-group based DPGs,
which may contribute to a significant portion of lflows. In such scenarios
(when there are many small tenants), maybe it is better to disable DPG (and
disable ovn-monitor-all) to benefit more from the conditional monitoring
feature. In the contrary use cases when there are few but large tenants,
each of them maps to a large port-group, crossing a large amount of
datapaths, then enabling DPG may be a better choice, and at the same time
enabling ovn-monitor-all may be recommended.

Is the above understanding correct?
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to