On Sat, Mar 29, 2014 at 04:01:35PM -0700, Simon Horman wrote:
> On Thu, Mar 20, 2014 at 09:37:14AM -0700, Ben Pfaff wrote:
> > On Thu, Mar 20, 2014 at 05:34:23PM +0900, Simon Horman wrote:
> > > When revalidating a flow convert xout.wc.masks, the mask calculated by
> > > translation, to a key that relates to the flow present in the datapath.  
> > > Only
> > > mask elements that relate to the flow will be included in the resulting 
> > > key.
> > > This has the effect of filtering the mask based on 'flow'.
> > > 
> > > In particular this filters out mpls_lse mask bits set on non-MPLS flows.
> > > 
> > > This avoids flows being premeturely evicted from the datapath
> > > because their calculated mask is too specific.
> > 
> > I agree that that is a good thing to do, which has been a real problem
> > in some cases, but I don't yet understand why there would be mpls_lse
> > mask bits set on non-MPLS flows.  Can you explain why (when?) that
> > happens?
> 
> Hi Ben,
> 
> I'm not sure if there are other cases but one that I have isolated
> is if a non-MPLS packet becomes an MPLS packet through a push MPLS action.
> 
> In this case the mpls_lse mask bits are all set to 1 in flow_push_mpls()
> during translation.  This is in contrast to a mask produced based on the
> original (non-MPLS flow) by odp_flow_key_to_mask(), where the mpls_lse bits
> are all 0.
> 
> And my analysis is that in the case of revalidate_ukey() the mask
> comparison fails because of this miss-match, causing unnecessary eviction
> of facets from the datapath.

Hi Ben,

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

Reply via email to