On 6/10/22 16:37, Ilya Maximets wrote:
> On 6/3/22 10:54, Eelco Chaudron wrote:
>> This series adds support for the datapath action check_pkt_len for TC 
>> offload.
>> It also includes some offload self-tests.
> 
> Thanks for working on this, Eelco.
> It is a nice feature and patches generally look good to me.
> 
> There is one problem I noticed though with the act_police:
> When mtu check is used with act_police , GSO is fully broken
> in software TC datapath.  Meaning that only packets that
> are actually smaller than MTU can pass through the interface.
> For TCP it means a huge performance degradation.  In my testing,
> iperf between 2 namespaces via veth pair normally gives
> around 10 Gbps, while if the act_police with mtu 1514 is
> configured on a veth pair, I can only get 15 Mbps.
> 
> The issue was fixed in the most recent kernel with commit:
> 
> commit 4ddc844eb81da59bfb816d8d52089aba4e59e269
> Author: Davide Caratti <dcara...@redhat.com>
> Date:   Thu Feb 10 18:56:08 2022 +0100
> 
>     net/sched: act_police: more accurate MTU policing
> 
>     in current Linux, MTU policing does not take into account that packets at
>     the TC ingress have the L2 header pulled. Thus, the same TC police action
>     (with the same value of tcfp_mtu) behaves differently for ingress/egress.
>     In addition, the full GSO size is compared to tcfp_mtu: as a consequence,
>     the policer drops GSO packets even when individual segments have the L2 +
>     L3 + L4 + payload length below the configured valued of tcfp_mtu.
> 
>     Improve the accuracy of MTU policing as follows:
>      - account for mac_len for non-GSO packets at TC ingress.
>      - compare MTU threshold with the segmented size for GSO packets.
>     Also, add a kselftest that verifies the correct behavior.
> 
>     Signed-off-by: Davide Caratti <dcara...@redhat.com>
>     Reviewed-by: Marcelo Ricardo Leitner <marcelo.leit...@gmail.com>
>     Signed-off-by: David S. Miller <da...@davemloft.net>
> 
> 
> However, that commit was not backported to stable kernels
> and not available in major distributions as a result.
> 
> That makes me uncomfortable with adding use of this action
> to OVS for a few reasons:
> 
> - If the flow will not be fully offloaded to the hardware,
>   the TCP performance will suffer and will be dramatically
>   lower than just using OVS kernel datapath.
> 
> - It's not possible to detect the fix in the kernel, so
>   there is no way to selectively disable only this one
>   feature.  Users will have to choose between poor
>   performance in certain cases and disabling the HW offload
>   entirely.
> 
> I guess, we could create a user-configurable option to enable
> or disable offloading of this one action, but that doesn't
> sound like a great solution and really not user-friendly.
> 
> @Davide, do you think we can have your fix backported to
> stable kernels?   That would be much easier to work with.
> 
> Any other thoughts on how to deal with the situation here
> are welcome.

So, the kernel fix got backported to stable kernels in upstream.
And it seems to be slowly getting into distributions.  So, I guess,
it should be OK to accept the change now.

Eelco, could you, please, rebase this patch set on top of the
current master branch?

Thanks.

> 
> Best regards, Ilya Maximets.
> 
>>
>> v2:
>>   - Add ACKs
>>   - Unified all the OVS_TRAFFIC_VSWITCHD_START macro's
>>   - Added section in the NEWS document
>> v3:
>>   - Add ACKs
>>   - Was using TCA_CSUM_PARMS instead of TCA_POLICE_TBF
>> v4:
>>   - Add ACKs
>>   - Use the existing dbinit-aux-args argument, rather than
>>     creating a new pre-vswitchd command option.
>>   - Removed ACKs for patch 4/5
>>
>> Eelco Chaudron (5):
>>       netdev-offload-tc: Move flow_put action handling to isolated function.
>>       netdev-offload-tc: Move flower_to_match action handling to isolated 
>> function.
>>       netdev-offload-tc: Handle check_pkt_len datapath action.
>>       system-offloads-traffic: Properly initialize offload before testing.
>>       tests: Add check_pkt_len action test to system-offload-traffic.
>>
>>
>>  NEWS                             |   2 +
>>  lib/netdev-offload-tc.c          | 844 +++++++++++++++++++------------
>>  lib/tc.c                         | 455 +++++++++++++++--
>>  lib/tc.h                         |  12 +-
>>  tests/ofproto-macros.at          |   3 +-
>>  tests/system-kmod-macros.at      |   4 +-
>>  tests/system-offloads-traffic.at | 422 +++++++++++++++-
>>  tests/system-tso-macros.at       |   4 +-
>>  tests/system-userspace-macros.at |   4 +-
>>  9 files changed, 1376 insertions(+), 374 deletions(-)
>>
> 

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

Reply via email to