Maybe going back to the design where we have a separate function analyzing the current action in case of “deferred recirculation” (== unmatchable struct flow) would be the best compromise. I recall I did not like that earlier, but it might be best option if recirculation between MPLS_POP and non-table OUTPUT cannot be tolerated.
Jarno > On Feb 25, 2016, at 10:36 AM, Ben Pfaff <b...@ovn.org> wrote: > > On Thu, Feb 25, 2016 at 06:05:06PM +0100, Thomas Morin wrote: >> Hi Ben, >> >> 2016-02-25, Ben Pfaff: >>> On Thu, Feb 25, 2016 at 10:26:28AM +0100, thomas.mo...@orange.com wrote: >>>> Sorry to chime in a bit late, but this recirculation performance penalty >>>> for >>>> the basic/key use-case where OVS receives an IP-in-MPLS frame and forwards >>>> it to the destination (e.g. a local VM), does not look appealing at all. >>>> >>>> To allow having the best of both worlds (avoid perf penalty in all cases, >>>> but avoid complex code to automatically determine whether recirculation is >>>> needed or not), would it be possible to specify in a flow, after an mpls >>>> match, whether or not recirculation is wanted ? >>> >>> No. That would be a layering violation. >> >> I don't get what kind of layering violation you see. >> Can you explain? > > Whoever specifies the actions shouldn't have to know OVS implementation > details. Having to know whether recirculation is necessary means that > the user must know all about the implementation. > > Also, the "pop MPLS" action is specified by OpenFlow and doesn't include > this information. > >>> If you can find a better way to do it, that is maintainable, we'd be >>> open to that. >> >> What about: >> - adding a parameter to the pop_action (recirculate after pop, or don't >> recirculate after pop) > > The "pop MPLS" action is specified by OpenFlow and doesn't include this > information. > >> - or keep the current pop, and add a pop_and_do_not_recirculate > > Possibly, if you can specify pop_and_do_not_recirculate in a way that > refers only to stuff that makes sense at the OpenFlow level, so it makes > sense without having to refer to OVS implementation details. It's not a > perfect solution, but it might be acceptable if nothing better can be > found. > >> - or add an explicit recirculate action, and by default do not recirculate > > Layering violation. > _______________________________________________ > dev mailing list > dev@openvswitch.org <mailto:dev@openvswitch.org> > http://openvswitch.org/mailman/listinfo/dev > <http://openvswitch.org/mailman/listinfo/dev> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev