On 30 August 2016 at 14:50, Ben Pfaff <b...@ovn.org> wrote: > On Tue, Aug 30, 2016 at 01:42:06PM -0700, Guru Shetty wrote: > > On 30 August 2016 at 13:03, Ben Pfaff <b...@ovn.org> wrote: > > > > > On Tue, Aug 23, 2016 at 02:46:17AM -0700, Gurucharan Shetty wrote: > > > > Currently ct_lb() logical action is only added for a logical switch > and > > > > we use the conntrack zone allocated for the logical port. A future > > > commit > > > > will use ct_lb() for a logical router too. In that case, use the > > > allocated > > > > DNAT zone. > > > > > > > > Signed-off-by: Gurucharan Shetty <g...@ovn.org> > > > > > > Can you help me to understand why the desired behavior is different in > > > each of these cases? > > > > > > > Currently we do the following conntrack zone allocations. > > 1. A conntrack zone for each logical port. This has to be unique only per > > hypervisor. We use this zone to do both firewall and east-west > > load-balancing. > > > > For firewall, we send the packet to conntrack to defragment it and track > it > > and figure out whether it is invalid, new, established etc. Invalid > packets > > are dropped. new connections are committed. > > > > For load-balancing, defragmented packets are DNATed into one of the > > possible endpoints. We do the load-balancing at the endpoint (instead of > > say in a router) because of the asymmetric nature of OVN router pipeline > > handling for east-west. > > So when we see ct_lb() action on a switch, we can just use the conntrack > > zone allocated for that logical port. > > > > > > 2. Two conntrack zones per gateway router. > > A gateway router only resides in a particular chassis. We have one > > conntrack zone for DNAT and another for SNAT. > > > > Now when I want to add ct_lb() action for the gateway router, I want to > use > > it as part of the gateway router pipeline. Since load-balancing is > nothing > > but a DNAT using one of the chosen endpoint, the conntrack zone has to > be a > > DNAT zone allocated to that gateway router. > > > > Did I give the answer to your question? Or was it something else that you > > were looking an explanation for? > > One underlying question I'm trying to understand is whether this > difference is something inherent in the definition of logical switches > and logical routers, and thus the approach taken here of automatically > choosing a strategy is appropriate, or whether this is just what we > happen to be doing now, in which case it might be better to make how to > select the zone a parameter to ct_lb. >
I see the question now. I don't have a good answer. One way to look at it would be that a "zone" is an internal implementation detail and should not be seen in a action of logical flow. But we can then say that we could rename "zone" as "datapath" in the logical action. But, then we would be limiting it to 2 anyway (datapath=lswitch or datapath=lrouter), because that is all that I can think about - in which case we are inferring it with the current patch anyway. I did start with passing this as an argument to ct_lb, but could not think about a good name. I then decided that for a stateful OVS action, you probably cannot make a very general purpose logical action. Do you have an opinion? I will go with that. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev