[ovs-dev] [PATCH 3/3] xlate: Always recirculate after an MPLS POP to a non-MPLS ethertype.

Ben Pfaff blp at ovn.org
Thu Feb 25 22:13:35 UTC 2016


Thomas: can you provide an example of the actions for your use case?

On Thu, Feb 25, 2016 at 01:51:22PM -0800, Jarno Rajahalme wrote:
> 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 <blp at 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.morin at 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 at openvswitch.org <mailto:dev at openvswitch.org>
> > http://openvswitch.org/mailman/listinfo/dev <http://openvswitch.org/mailman/listinfo/dev>



More information about the dev mailing list