On Fri, May 16, 2014 at 11:30:23AM +0900, Simon Horman wrote:
> In some cases an pop MPLS action changes a packet to be a non-mpls packet.
> In this case subsequent any L3+ actions require access to portions
> of the packet which were not decoded as they were opaque when the
> packet was MPLS. Allow such actions to be translated by
> first recirculating the packet.
> 
> Signed-off-by: Simon Horman <ho...@verge.net.au>

The first three patches look fine to me.

compose_recirculate_action() in this one makes me worry a bit about a
corner case.  If there is no rule, then compose_recirculate_action()
allocates one.  I think that in the common case, there is a rule.  But a
"packet_out" message does translate actions without a rule.  I think
that means that each "packet_out" from a controller can create
unnecessarily create a recirculation id and corresponding rule that will
take a long time to expire and never get reused.

If I'm right about that, then one solution would be to do recirculation
in userspace in the case where we have a packet and no rule.  That's a
pretty nasty corner case, though (do we ever want to do that in other
circumstances?) and so for now I'd be happy with a comment in the
ofproto_dpif_alloc_recirc_id() case in compose_recirculate_action()
explaining what's going on.

I think that, for now, recirculation will lose metadata fields like
registers.  That's not a new problem, and I believe that Andy Zhou (or
maybe Justin Pettit?) is working on a general solution, so I'm not
asking you to fix it, but I think that it also bears mention in a
comment.

I don't understand may_xlate_l3_actions.  It seems to cover a lot more
than L3, e.g. VLANs and Goto-Table.

Thanks,

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

Reply via email to