Paolo Valerio <[email protected]> writes:

> On 08 Apr 2026 at 01:05:56 PM, Aaron Conole <[email protected]> wrote:
>
>> This series reworks the userspace connection tracker in Open vSwitch in
>> order to introduce an infrastructure that future offload providers could
>> use to offload connections, similar to facilities provided in the TC offload
>> path.  The goal is to enable userspace datapath offloads to provide
>> additional connection tracking offload support.
>>
>> The early patches do a slight rework of the existing connection tracker to
>> prepare for the offload to be added.  These are just split-outs and renames
>> to make things clearer.
>>
>> Patches 5-10 are the meat of the offload infrastructure.  They provide the
>> basic support - add/del/est/update primitives that give enough context into
>> the userspace connection tracking layers to actually inform the hardware and
>> keep the userspace updated.  Additionally, we automatically disable tcp
>> sequence number checking on connections that are 'offloaded'.
>>
>> Patch 11 shows a dummy offload implementation and some unit tests.
>>
>> Patch 12 is just documentation / NEWS.
>>
>> Submitted as RFC because I'm sure I've forgotten something.
>>
>
> Hi Aaron, thanks for the interesting series.
> To me it seems this goes in the right direction, but of course Gaetan
> and Eli can tell more whether this fills all the existing gaps.
>
> I have a question, though.
> Can't e.g. enabling hw-offload while having non-offloaded entries present
> send a conn_del to the provider?
>
> conn_clean()
>   conn_clean__()
>   ct_offload_enabled() -> true
>   ct_offload_conn_del()
>
> ct_offload_conn_del()
>   ovs_mutex_lock(&ct_offload_mutex)
>   ct_offload_conn_del_()
>
> ct_offload_conn_del_()
>   class->conn_del(ctx)
>
> The guard in conn_clean() checks only whether the offload subsystem is
> globally active without guarding against the offload state.
> This might not be a big deal as the registered provider will further
> check and possibly ignore the request, but can't this be avoided?

Good catch - we may actually need a check like:

if (ct_offload_conn_is_offloaded(conn)) {
  ...
}

instead.  I think there would also be a missing call in the other case
as well (ie: hwol is disabled and the sweep runs).  So I guess this is
probably the better check in that case.

WDYT?

>> Aaron Conole (12):
>>   conntrack: Add per-conn storage for conntrack modules.
>>   conntrack: Introduce an observer pattern infrastructure as a hook.
>>   conntrack: Split the FTP and TFTP handling into separate files.
>>   conntrack-tcp: Convert to using the per-conn storage area.
>>   ct-offload: Add a new interface as an offload provider.
>>   ct-offload: Add batching support.
>>   ct-offload: Add a mark for offloaded connections.
>>   conntrack: Add calls to ct-offload infrastructure.
>>   ct-offload: Add configuration infrastructure.
>>   conntrack: Propagate input netdev pointer to conntrack.
>>   ct-offload-dummy: Introduce dummy ct offload.
>>   Documentation: Announce and describe the conntrack offload feature.
>>
>>  Documentation/automake.mk                     |   1 +
>>  Documentation/topics/index.rst                |   1 +
>>  .../topics/userspace-conntrack-offloading.rst |  76 ++
>>  NEWS                                          |   1 +
>>  lib/automake.mk                               |   7 +
>>  lib/conntrack-ftp.c                           | 689 +++++++++++++
>>  lib/conntrack-private.h                       | 123 +++
>>  lib/conntrack-tcp.c                           |  72 +-
>>  lib/conntrack-tcp.h                           |  61 ++
>>  lib/conntrack-tftp.c                          |  47 +
>>  lib/conntrack.c                               | 904 ++++--------------
>>  lib/conntrack.h                               |  44 +-
>>  lib/ct-offload-dummy.c                        | 253 +++++
>>  lib/ct-offload-dummy.h                        |  64 ++
>>  lib/ct-offload.c                              | 603 ++++++++++++
>>  lib/ct-offload.h                              | 177 ++++
>>  lib/dpif-netdev.c                             |  14 +-
>>  lib/dpif-offload.c                            |  13 +
>>  lib/dpif-offload.h                            |   1 +
>>  tests/dpif-netdev.at                          |  72 ++
>>  tests/library.at                              |  54 ++
>>  tests/test-conntrack.c                        | 460 ++++++++-
>>  vswitchd/bridge.c                             |   4 +
>>  23 files changed, 2974 insertions(+), 767 deletions(-)
>>  create mode 100644 Documentation/topics/userspace-conntrack-offloading.rst
>>  create mode 100644 lib/conntrack-ftp.c
>>  create mode 100644 lib/conntrack-tcp.h
>>  create mode 100644 lib/conntrack-tftp.c
>>  create mode 100644 lib/ct-offload-dummy.c
>>  create mode 100644 lib/ct-offload-dummy.h
>>  create mode 100644 lib/ct-offload.c
>>  create mode 100644 lib/ct-offload.h
>>
>> -- 
>> 2.53.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to