Message ID | 1549511725-76119-1-git-send-email-dlu998@gmail.com |
---|---|
Headers | show |
Series | Userspace datapath: Add fragmentation support. | expand |
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@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 > >