On Mon, Jul 11, 2016 at 03:59:29PM +0800, Zong Kai LI wrote:
> Currently, ovn-controller will install all lflows for a logical
> switch, when ovn-controller determines not to skip processing of
> that logical switch.
> 
> This will install too many OVS flows. We have 11 tables for logical
> switch ingress pipeline, 8 tables for logical switch egress pipeline
> now, and more in futrue.

I think that this is a necessary feature.  Thank you for working on it.
I have some comments on the implementation.

First, I don't think it's a good idea to implement a half-functional
parser for matches.  Doing it this way will have both false positives
and false negatives.  Instead, I recommend checking the OpenFlow matches
in the loop at the bottom of consider_logical_flow(), which should be
both easier and more precise.

Here's an example of a match that might lead to a flow not being dropped
when it should be (also it looks like there might be a wild or null
pointer dereference since nothing checks token types): inport == {"x"}

Here's an example of a match that might lead to a flow being dropped
when it should not: inport == "x" || inport == "y".

I believe that the current implementation also does not consider output
to multicast groups.

I don't think it's necessary to mention this optimization in the in the
ovn-northd manpage, certainly not at this level of verbosity.  If the
optimization is implemented correctly, it is not visible to the authors
of the logical flows.

Thanks,

Ben.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to