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. This was originally submitted as RFC, and changes since then: 1. Addressed various freebsd / compiler incompatibilities 2. Addressed an issue of calling offload conn_del in the conn_clean case gated on the wrong thing (configuration vs. offload status) [Paolo V.] 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
