On Wed, Aug 17, 2011 at 3:04 PM, Neil McKee <neil.mc...@inmon.com> wrote:
>
> On Aug 17, 2011, at 2:30 PM, Ben Pfaff wrote:
>
>> On Wed, Aug 17, 2011 at 02:18:52PM -0700, Neil McKee wrote:
>>>
>>> On Aug 17, 2011, at 12:25 PM, Ben Pfaff wrote:
>>>
>>>> On Wed, Aug 17, 2011 at 11:51:05AM -0700, Pravin Shelar wrote:
>>>>> On Tue, Aug 16, 2011 at 11:17 PM, Jesse Gross <je...@nicira.com> wrote:
>>>>>> The use of the checksum for actions surprised me a little bit, as it
>>>>>> is semantically equivalent to what we have today but perhaps not as
>>>>>> accurate. ?Ben made a couple of good suggestions in the previous
>>>>>> thread about how to do this cleanly and generically. ?Did you run into
>>>>>> problems with those?
>>>>>
>>>>> AFAIU, Ben was suggesting to have cookie set from userspace. that
>>>>> cookie can be returned on upcall. so that userspace can validate flow
>>>>> used in kernel datapath. Other part was about keeping flows which are
>>>>> deleted and updated. so that sflow can lookup those flows if required.
>>>>> I thought cookie can be generated in kernel using checksum and return
>>>>> it to userspace. In this way we do not need to change user-kernel
>>>>> interface when sflow need extra information as it has exact flow that
>>>>> kernel used.
>>>>> Actually it is mentioned in previous mail thread.
>>>>
>>>> I was proposing two steps.  In the first step, userspace would set a
>>>> cookie that directly encodes information needed for sflow output.
>>>
>>> And you have to do that every time, regardless of whether any
>>> packets from that flow end up being sampled?
>>
>> It's very cheap, so that's hardly worth worrying about.
>>
>>>> In
>>>> the second step, userspace would set a cookie that uniquely identifies
>>>> a version of a flow.  The second step is harder because userspace has
>>>> to keep around old versions of a flow for a while (the hardest part is
>>>> figuring out when they can be discarded, I think).
>>>>
>>>> A checksum ties the set of actions to a flow.  That's all we need for
>>>> sflow, although it means that we either need to keep around old
>>>> versions of a flow, as in the second step above, or just discard
>>>> sampled packets for old versions (I think that your patch does the
>>>> latter).
>>>
>>> Better to send the sample out with "unknown" egress port/vlan than
>>> to just drop it.  Otherwise you are likely to systematically drop
>>> samples from flows that are short-lived, and the results will be
>>> biased.  (You do still know the ingress-port, right?)
>>
>> Thanks for the advice.  I had not realized that sending a sample with
>> unknown egress data was an option.  Yes, we still know the ingress
>> port.
>>
>> Our flows only expire through timeout (after about 5 seconds of
>> inactivity), so I don't think that this would systematically bias
>> against such flows.
>>
>>>> It is not as general a solution as a unique identifier,
>>>> because when a flow's actions change from A to B and then back to A
>>>> there is no way to distinguish whether a sampled packet corresponds to
>>>> the first or second time that A was set.  (That doesn't matter for
>>>> sflow.)  That's a corner case; I don't know if it's important.  And,
>>>> of course, the IP checksum only probabilistically tells us whether
>>>> there was a change.
>>>
>>> This may be stating the obvious, but it's important that you never
>>> send out a sample with the *wrong* egress port/vlan.  That could
>>> break all kinds of things (topology discovery, end-host location,
>>> policy violations etc.)
>>
>> Yes, I understand.
>>
>>> Perhaps we could know more about what you are trying to achieve by
>>> changing this?  Every suggestion seems to involve more complexity,
>>> more overhead or less accuracy.  What's the upside?
>>
>> We're trying to minimize the amount of code and complexity in the
>> kernel.
>
> In the datapath directory I can see a total of about 30 lines of code that is 
> related to sampling.   The code to include the actions in the upcall seems to 
> be just this:
>
>        upcall.actions = acts->actions;
>        upcall.actions_len = acts->actions_len;
>
> how many lines of user-space code are you willing to write to reduce this?  I 
> must be missing something.   What am I missing?

Final goal is  generalizing sampling action. so that we can assign
probability to any action.
so sampling would be userspace action with a probability. thats why we
need to decided generic interface.

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

Reply via email to