> > >> >> So with the LB series, I need to store the value of ct_label and ct_mark >> in a register and then load it from there when I finally do ct_commit. >> ct_label is 32 bits or one register and ct_mark is 128 bits or 4 registers >> for a total of 5 registers. We do not have that many registers at all. With >> this patch, one can set ct_mark or ct_label to any value in logical flows >> which means that I am forced to use 5 registers. What I am saying is that >> if we get rid of ct_mark from this patch and make ct_label to only be set >> to one value, I can confidently use a single register for all of this. >> >> I guess what you are saying is that even though this patch is general >> purpose, we only use one bit of ct_label for ACL. But in the code of >> ovn-controller, it no longer will be general purpose and I will only have >> to read one bit from the set logical flow for ct_label and ignore ct_mark. >> That would look odd, no? >> > > 1) General capabilities of the logical flow syntax. That's what this > patch adds. It doesn't really say anything about how it's used. I *think* > you're saying it looks like this could be used in a way that would be > painful for implementing multiple stateful services. It's great to > consider the needs of ovn-northd today, but the syntax is a more general > capability. >
Correct. > Someone could throw ovn-northd away and write their own logical flows, > perhaps. > Right. Or 2 weeks from now, some other developer can implement a feature that sets a logical flow as ct_commit (ct_label = 0x3002, ct_mark = 0x3333) in ovn-northd. So my suggestion was don't make it general purpose, but only limit setting ct_label to one specific value as that is all is what is needed right now. > 2) How we structure our logical flows in ovn-northd. I think that's what > you're most concerned with. > > Right now the next patch in this series makes use of this logical flow > capability to do: > > ct_commit(ct_label=1) > ... or ... > ct_commit(ct_label=0) > > I believe you were splitting stateful services up to share a ct_commit in > a later table, so we could change that to something like: > > reg0[0] = 1; > > and in the next table: > > ct_commit(ct_label=reg0[0]) > Correct. > > We could even give "reg0[0]" a nicer name by adding a new symbol like > "ct_drop_connection". > Yes. > > This is all in logical flows, not code in ovn-controller. I think this > current patch is all that's needed for ovn-controller, so it knows how to > handle this action in logical flows. > If we go by symbols, then ovn-controller will read the symbol, check whether it is a valid symbol and then convert it to a integer and then do openflow action. > > If I'm still missing something, maybe we can hop on the phone or something > tomorrow and recap the conversation on the mailing list? > I think we are close to be on the same page. But, if my answers in this mail confused this more, or if you think of a better idea or a different perspective, I am happy to jump on a call. > > -- > Russell Bryant > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev