On Wed, Dec 14, 2016 at 06:41:46PM -0800, William Tu wrote:
> >> actions=
> >>   clone(truncate(100), push_vlan, resubmit, ...)
> >> where we don't need to worry about missing the truncate_unset() because
> >> truncated packet is not visible outside the clone().
> >
> > I see how "clone" helps with this conceptually, but I'm not sure why the
> > "sample" is necessary.  I think that the proposed value here is that
> > "sample" allows the truncate to be canceled if no output occurs after
> > "truncate" and before the end of the "sample" action.  But it's also
> > possible for the translation code to see whether there's an output
> > action within the clone and, if there is none, then to refrain from
> > emitting the datapath "truncate" action entirely.  That seems like a
> > more efficient way to implement it.  Will that work?
> 
> Yes that will work, but we have to add a new datapath clone action.
> The reason I use "sample" is try not to add another new datapath
> action to kernel.  Current "sample" action happens to provide a list
> of actions to execute, so I repurpose it to clone.

I still don't understand.

Here are some examples of translations from OpenFlow to datapath
actions, the way I would expect them to happen:

    OF: 1, clone(truncate(100), push_vlan, 2), 3
    dp: 1, truncate(100), push_vlan, 2, pop_vlan, 3

    OF: 1, clone(truncate(100), push_vlan), 2
    dp: 1, 2

Where does the sample action help?

Thanks,

Ben.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to