On 19 February 2016 at 06:53, Russell Bryant <russ...@ovn.org> wrote:
> On 02/18/2016 07:37 PM, Joe Stringer wrote:
>> On 17 February 2016 at 18:12, Justin Pettit <jpet...@ovn.org> wrote:
>>>
>>>> On Feb 5, 2016, at 1:30 PM, Russell Bryant <russ...@ovn.org> wrote:
>>>>
>>>>
>>>> Thank you for the write-up!  This approach sounds great to me.  Some
>>>> small questions...
>>>>
>>>> 1) If we're only using 1 bit for now, is there any reason to use
>>>> ct_label over ct_mark?  The docs in ovs-ofctl(8) seem to suggest they're
>>>> identical other than being 32-bit vs 128-bit.  Would using the 32-bit
>>>> ct_mark be beneficial in any way instead?
>>>
>>> I think ct_label is intended more for this bit-level twiddling, whereas 
>>> ct_mark is usually treated as a single 32-bit number.  Clearly, this 
>>> doesn't really matter in practice, since OVS interfaces with them the same. 
>>>  Also, I figure that we're going to need to identify the ACL rule at some 
>>> point, and I've been thinking ct_mark is what we'd use for that.
>>>
>>>> 2) One thing not explicitly addressed in this write-up is traffic marked
>>>> as related.  I think the proposal means just adding a match on
>>>> ct_label=0x1 where we match ct_state=+rel today and we just rely on a
>>>> packet in the request direction of the main connection to set ct_label.
>>>> That seems fine, but I wanted to clarify that point.
>>>
>>> That's a good point.  Do you know if the existing OpenStack integration 
>>> handles related flows?
>>>
>>> Jarno or Joe, do you know how the connection tracker handles children of 
>>> deleted flows?  There's the following comment in nl_ct_flush() in 
>>> lib/netlink-conntrack.c:
>>>
>>>     /* Expectations are flushed automatically, because they do not
>>>      * have a master connection anymore */
>>>
>>> If we delete a specific entry, will its children get removed, too?  If 
>>> that's true, this problem shouldn't be that difficult--although it is a 
>>> little ugly.  I think we just need to have ovn-controller periodically 
>>> sweep through the connection tracking entries looking for that bit, and 
>>> blowing them away.
>>
>> No. The parent connection holds a list of expected connections, and
>> when it is cleaned up, those expectations are cleaned up as well.
>> However, once an expectation has been fulfilled by packets matching
>> the expectation, if you commit that connection then it has a life of
>> its own. I don't see any link from parent to child connections in the
>> conntrack structures, so it seems unlikely that this is possible with
>> current APIs.
>>
>> I think the way to do this currently is to uniquely identify
>> connection families with a ct_mark, and delete connections based on
>> this identifier.
>
> Right now, I don't think we ever do ct(commit) for a packet with the
> related state bit set.  In that case, if we set ct_mark/ct_label on the
> parent connection, will we see that value set when we see another
> related packet?  I think that will result in the behavior we're looking
> for ...

The mark is inherited from the initial connection down to the
related/child connection, but the label is not.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to