[ovs-dev] [PATCH 3/3] datapath: Add basic MPLS support to kernel

Simon Horman horms at verge.net.au
Sat Mar 9 14:54:48 UTC 2013


On Thu, Mar 07, 2013 at 11:12:31AM -0800, Ben Pfaff wrote:
> On Thu, Mar 07, 2013 at 04:12:22AM +0100, Simon Horman wrote:
> > Perhaps Ben has some ideas, but it seems to me that the
> > way that execute_* and compose_* interact needs to be changed
> > around in order to preserve the order of actions.
> 
> This seems likely to be necessary.

Hi,

I have taken a look into changing things around to preserve the order
of actions, however, I think there is a problem.

My reading of compose_output_action__() is that if a flow outputs to more
than one port, is for an IP frame and get_priority() calls return different
values for different ports then set_ipv4 or set_ipv6 action may be added
between output actions.

The behaviour above seems problematic as the motivation for preserving the
order of actions was to avoid the case where an action that needs l3+ data
occurs after a push_mpls action. This would allow an skb's network header
to be used to track the top of the MPLS stack in the kernel datapath.

It is not obvious to me how the behaviour relating to get_priority() as
described above can sensibly be reconciled with a desire to preserve the
order of actions. Or even reconciled with a looser constraint that actions
that need l3+ data occur before push_mpls actions.



More information about the dev mailing list