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