On 4/18/25 2:42 PM, Rukomoinikova Aleksandra wrote:
>>> +        /* For cases when we have statefull ACLs but no load
>>> +           balancer configured on logical switch - we should
>>> +           completely bypass conntrack on egress, otherwise
>>> +           it is necessary to check the balanced traffic. */
>> So what's the point of stateless to-lport ACLs (egress) if you still
>> commit to conntrack in the egress pipeline whenever there's a load
>> balancer configured on the switch/
> I find this valid, if we want load balancers to work, then we realize
> that in egress traffic will get into the conntrack, but it will not be
> committed in it, because:
> table=6 (ls_out_acl_eval    ), priority= , match=((stateless acl
> match)), action=(reg8[16] = 1; next;)
> 
> conntrack lookup time is constant, it seems to me that such behavior is
> valid, what do you think? Only connections related to the work of lb
> will be committed
> I will correct 3 of your comments in version 4 if you generally support
> this idea.

Hi Alexandra,

Side note: I think there's something weird going on with your email
client - at least with the html version of this email - the reply above
has white font color which on my white background is "hidden" :)

To your comment:

Conntrack lookup is "constant" but quite costly.  It actually translates
to a recirculation in the datapath.  After conntrack state has been
populated the packet is reinjected in the OVS datapath with that
information attached.  That means packet headers need to be reparsed and
a new datapath flow lookup must happen.

Another thing that's important is that without conntrack commit those
packets are forwarded by a datapath flow that matches on ct_state=+inv
which is not offloadable on certain HW (e.g., as far as I know, NVidia
NICs).

> diff --git a/northd/ovn-northd.8.xml b/northd/ovn-northd.8.xml
> index 1a70ba579..600eea824 100644
> --- a/northd/ovn-northd.8.xml
> +++ b/northd/ovn-northd.8.xml
> @@ -507,7 +507,7 @@
>        <ref table="Logical_Switch_Port" db="OVN_Northbound"/>.  Multicast, 
> IPv6
>        Neighbor Discovery and MLD traffic also skips stateful ACLs. For
>        "allow-stateless" ACLs, a flow is added to bypass setting the hint for
> -      connection tracker processing when there are stateful ACLs or LB rules;
> +      connection tracker processing when there are stateful ACLs without LB;
>        <code>REGBIT_ACL_STATELESS</code> is set for traffic matching stateless
>        ACL flows.
>      </p>
> @@ -624,6 +624,14 @@
>           <code>ct_lb_mark;</code> action.
>        </li>
>  
> +      <li>
> +         A priority-115 flow sends all packet directed to VIP to connection
> +         tracker. Packets that match this rule would still be subject to
> +         connection tracking via lower-priority rules in the absence of
> +         stateless ACLs. However, with stateless ACLs in place, this rule
> +         enables load balancing when the client balances traffic to itself.
> +      </li>
> +

One more thing I still don't completely understand is the actual use
case: do we also want to cover general load balancing in the presence of
stateless ACLs?  The doc update above talks about "load balancing when
the client balances traffic to itself".  Isn't your patch enabling load
balancing in general even when stateless ACLs are used?

Thanks,
Dumitru

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to