[ovs-dev] [patch v10 0/6] Userspace datapath: Add fragmentation support.

Darrell Ball dlu998 at gmail.com
Mon Feb 11 01:54:21 UTC 2019


I fixed a bug in V10 and sent V11.
i.e. V10 is superceded

Darrell

On Wed, Feb 6, 2019 at 7:55 PM Darrell Ball <dlu998 at gmail.com> wrote:

> Fragmentation support for userspace datapath conntrack is added; both
> v4 and v6 are supported. See the patches for additional details.
>
> Fragmentation tests for the userspace datapath are enabled
> by the patches and other test enhancements are added.
>
> v10: Addressed Ben's review comments.
>      Merged patches 6 and onwards per request.
>      Note 4 tests are flagged by address santizer, but are an artifact
>      of the packet-out test methodology.
>
> v9: Exported ipf status type to dpif-provider.h for code maintenance
>         reasons vs datatype info. hiding (code review suggestion;
>         Thanks Justin).
>
>         Changed counters to 64 bit, per intention (oops) and added a patch
>         to support 64 bit atomics (code review; good catch Justin).
>
>         Merged code for cleanup thread into patches.
>
>         Cleanup dpctl_ct_ipf_get_status() usage; 'verbose' usage vs '-m'.
>
>         Added a patch to cleanup opt_dpif_open() and callers.
>
>         Enhanced comment for 'ipf-set-min-frag'
>
>         Minor cleanups.
>
>         Rebase.
>
> v8: Fix argument index (-1 vs -2) for recently added function
>         ipf_set_enabled__().
>
>         Eliminate spaces around '|' for 'v4 | v6'.
>
>         Reduce performance impact for non-fragments to approx zero.
>
> v7: Address review comments (Thanks Justin).
>         Rebase.
>         Fix a couple bugs.
>         Some enhancements.
>
> v6: Rebase
>         Folded patch 4 and some test enablement into patch 3 and brought
>             an earlier patch forward in sequence
>         Enable fragmentation by default
>         Cleaup
>
> v5: Added a sub-feature to optionally dump fragmentation lists.
>         This is useful for DOS forensics and debugging.
>
>         The testing coverage was also extended including checking
>         more counters and frag list occupancies.
>
>         Fixed a few bugs:
>         1/ Handle dpdk mempool source restrictions for a batch of
>            packets from multiple sources; this also brings in a purge
>            frag list function to handle pathological cases of stuck frags.
>         2/ ipf_destroy was missing packet frees for frag lists.
>         3/ A setting of CS_INVALID was missing for expired packets -
>            I mentioned this earlier for version 4.
>
>         Some enhancements and coding standards changes for Patch 3.
>
> v4: Add V6 support to the patches.
>         Fix possible race cleanup bug when the user disables
>            fragmentation and there are list occupancies, not cleaned up
>            yet.
>         Add missed orig tuple fields for copy from reassembled packet
>             to fragments.
>         Fix an fragment list increment check - shoiuld have been "> 0"
>             rather then "!= 0".
>         Fix max frags calculation in case of theoretical corner case.
>         Add proper lock annotations.
>         Made some other improvements while adding V6 support.
>
> v3: Patch 2 was updated:
>         Remove "XXX" todo items by implementing the ones needed,
>         including realloc frag_list contexts to save memory.
>         Fix related bug with max_frag_list_size when min_frag_size is
>         reconfigured.
>
>         Tighten ip_tot_len sanity check for reassembled packets which
>         was more loose than intended.
>
>         Add another sanity check for fragment ip_tot_len; even though
>         it be redundant, add for completeness.
>
> v2: Few fixes, improvements and cleanups.
>
> Darrell Ball (6):
>   dp-packet: Add const qualifiers for checksum apis.
>   flow: Enhance parse_ipv6_ext_hdrs.
>   tests: Add missed local stack checks.
>   conntrack: Reword conntrack_execute() description.
>   ovs-atomic: Add 64 bit apis.
>   Userspace datapath: Add fragmentation handling.
>
>  Documentation/faq/releases.rst   |   49 +-
>  NEWS                             |   10 +
>  include/sparse/netinet/ip6.h     |    1 +
>  lib/automake.mk                  |    4 +-
>  lib/conntrack.c                  |   24 +-
>  lib/conntrack.h                  |    4 +
>  lib/ct-dpif.c                    |   58 +-
>  lib/ct-dpif.h                    |   12 +-
>  lib/dp-packet.h                  |   22 +-
>  lib/dpctl.c                      |  215 +++++-
>  lib/dpctl.man                    |   36 +
>  lib/dpif-netdev.c                |   65 +-
>  lib/dpif-netlink.c               |    9 +-
>  lib/dpif-provider.h              |   53 +-
>  lib/flow.c                       |   44 +-
>  lib/flow.h                       |    3 +-
>  lib/ipf.c                        | 1571
> ++++++++++++++++++++++++++++++++++++++
>  lib/ipf.h                        |   60 ++
>  lib/ovs-atomic.h                 |   36 +
>  tests/system-kmod-macros.at      |   46 +-
>  tests/system-traffic.at          |   53 +-
>  tests/system-userspace-macros.at |  186 ++++-
>  22 files changed, 2460 insertions(+), 101 deletions(-)
>  create mode 100644 lib/ipf.c
>  create mode 100644 lib/ipf.h
>
> --
> 1.9.1
>
>


More information about the dev mailing list