On Mon, Apr 04, 2016 at 05:16:35PM +0900, Simon Horman wrote:
> Until 8bf009bf8ab4 ("xlate: Always recirculate after an MPLS POP to a
> non-MPLS ethertype.") the translation code took some care to only
> recirculate as a result of a pop_mpls action if necessary. This was
> implemented using per-action checks and resulted in some maintenance
> burden.
>
> Unfortunately recirculation is a relatively expensive operation and a
> performance degradation of up to 35% has been observed with the above
> mentioned patch applied for the arguably common case of:
>
> pop_mpls,set(l2 field),output
>
> This patch attempts to strike a balance between performance and
> maintainability by special casing set and output actions such
> that recirculation may be avoided.
>
> This partially reverts the above mentioned commit. In particular most
> of the C code changes outside of do_xlate_actions().
>
> Signed-off-by: Simon Horman <[email protected]>
> ---
> * Lightly tested using test-suite portion of this patch
I think that recirculation is necessary for output to patch ports.
I think that recirculation is necessary for output to a group that
chooses a bucket based on L3+ fields, even if the actions in the group
do not otherwise require recirculation.
Thanks,
Ben.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev