On Thu, Dec 13, 2012 at 2:08 AM, Jarno Rajahalme
<jarno.rajaha...@nsn.com> wrote:
> On Dec 12, 2012, at 18:23 , ext Jesse Gross wrote:
>> On Wed, Dec 12, 2012 at 6:34 AM, Jarno Rajahalme
>> <jarno.rajaha...@nsn.com> wrote:
>>> This version adds odp-level support for tunnel metadata.
>>>
>>> Currently it seems the datapath expects userspace to specify all the
>>> tunnel fields, or none of them.  IMO, it would be better to use of
>>> configured values as defaults, allowing flow entries to provide only
>>> some of the fields (e.g., tun_dst).
>>>
>>> This is obviously similar to how any other field changes are viewed
>>> at the OF level, but tunnel metadata is different since packets don't
>>> have the metadata when they arrive on a normal port, but the tunnel
>>> metadata is figured out only when the output port is determined
>>> (which may be taken from a register if I'm not mistaken).
>>>
>>> So, is the design intent that the userspace code digs the missing
>>> values from the tunnel configuration data?  Currently, it seems that
>>> data is readily available in the datapath when it is needed, but maybe
>>> doing it "once" on the userspace is better than figuring out which
>>> values to use on the datapath for each packet separately?
>>
>> The configuration information is no longer going to be available at
>> the kernel level soon.  This will allow userspace to be more flexible
>> about the policies that it implements.
>>
>> Please separate out the ODP changes from the OpenFlow changes.  I
>> can't apply the OpenFlow portions until all of the issues that I
>> mentioned before have been resolved but I could apply the ODP
>> component now.
>>
>
> OK.
>
>> Is the ODP code based on the patch that I linked to before?  If so, it
>> makes some changes that I don't understand, particularly things like
>> dropping comments and unit tests.
>>
>
> I hadn't seen your patch, sorry. I was just trying to fill the gaps between
> the datapath and the Openflow-level patches I sent earlier.
>
> You had used memcmp() on struct flow_tnl. Currently that would work fine,
> given that flow_tnl seems to have no need for compiler generated padding.
> It might be better still to compare the individual fields to be more explicit
> and future/comiler proof?

I don't think it's necessary because flows should be zeroed out during
initialization since they tend to get hashed and compared.

>> In any case, flags should be converted between userspace and kernel.
>> The same set of flags happen to be defined now with the same values
>> but it shouldn't be assumed that is the case.  In particular, if there
>> are different versions of userspace and kernel then new flags that the
>> other side doesn't know about shouldn't just get carried over.  This
>> can result in not being able to setup flows properly.
>
> This should probably be marked with BUILD_ASSERT_DECL(FLOW_WC_SEQ == 18)
> to remind about updating the flags mapping when they change?

The FLOW_WC_SEQ is primarily about things related to the classifier.
I'm not sure whether we'll want to directly allow people to match on
the flags so I don't know that we need to add that now.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to