On Fri, Nov 7, 2014 at 8:13 PM, Jesse Gross <je...@nicira.com> wrote:
> On Fri, Nov 7, 2014 at 3:12 PM, Madhu Challa <cha...@noironetworks.com> wrote:
>> I was referring to the bit mask present in the spec:
>>
>> A.2.3.5 Flow Match Field Masking
>> When oxm_hasmask is 1, the OXM TLV contains a bitmask and its length
>> is effectively doubled, so
>> oxm_length is always even. The bitmask follows the field value and is
>> encoded in the same way. The masks
>> are defined such that a 0 in a given bit position indicates a “don’t
>> care” match for the same bit in the
>> corresponding field, whereas a 1 means match the bit exactly
>>
>> So if a mask is present with a Geneve option the max oxm_length could
>> be 256 bytes which will not fit a single oxm ?
>
> This may be a reason to find a different way to do the encoding of the
> Geneve type. The payload of a single option maxes out at 124 bytes so
> that will always fit in an OXM. However, eating away at that some for
> the experimenter ID and option header would push us over the edge so
> maybe that calls for the mapping table approach or some other way to
> avoid having the header there.

I agree with you Jesse. I have couple more thoughts one going back to
what Ben mentioned.

1. With the experimenter oxm approach Ben mentioned we have (255 -
1)/2 = 127 bytes for payload (worst case with mask). If we derive the
geneve option length using oxm_length and ignore the reserve fields we
are left with a max geneve option of 127 bytes that would fit the oxm.
We will support one option per oxm.

2. I do not know whats involved in using a new oxm_class, but if we
could map the geneve option class to an oxm_class we would save 2 more
bytes. The geneve type field is 8 bits whereas the oxm_field is only 7
bits, otherwise we could have easily mapped those.

I will think more on it.

Thanks.
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to