On 04 May 2026 at 11:09:59 AM, Aaron Conole <[email protected]> wrote:
> 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? > agreed, makes sense to me. >>> 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
