[ovs-dev] [patch v3 0/4] conntrack: Optimize and refactor.

Darrell Ball dlu998 at gmail.com
Mon Dec 3 05:17:15 UTC 2018


Patch 1 is not an optimization per se, but aimed at eliminating
the exporting of internal conntrack infra.

Patch 2 Add RCU support.  This is mainly done for performance 
reasons, but also simplifies the code.

Patch 3 Moves the conntrack entry locking to the L4 protocol
specific layers.  This is done for performance reasons and some
memory savings.

Patch 4 is mainly for memory savings for the most common cases, but
also increases performance for large number of flows (> 100000).

Patch 5 is a performance optimization for recirculations.

This series starts at v1 although some parts were sent out earlier
as a single patch; that is because the earlier series stated that
the patch would later be split out and added to, hence that is an
implied RFC.  Also, this series brings in a couple new improvements
not in the original patch.

These patches presently include an updated version of the changes
for this series
https://patchwork.ozlabs.org/project/openvswitch/list/?series=78059
but those parts (approx 20 lines) will be later dropped from this
series and handled with the above mentioned series.

v3: Dropped Patch 3 from the series since it was broken/incomplete
    and not worth the fix, since there are some disadvantages in
    terms of maintainability, including treating UDP/ICMP different
    than TCP, while the performance benefit was borderline.

    Fixed bug in 'nat_res_exhaustion' exception code.

    Cleaned up a few APIs - 'conn_clean*'/'delete_conn*' and 
    removed an unneeded one, 'conn_available()'.  Added more
    comments.

    Removed non-essential 'nat' field from struct conn_lookup_ctx.

    Fixed some splicing issues b/w Patch 1 and Patch 2, where some
    aspects of Patch 2 were now moved to Patch 1.

v2: Put back somehow deleted '&' in Patch 1 in call to
    check_orig_tuple() for bucket parameter (which is
    removed in Patch 2).

Darrell Ball (4):
  conntrack: Stop exporting internal datastructures.
  conntrack: Add rcu support.
  conntrack: Memory savings.
  conntrack: Optimize recirculations.

 lib/conntrack-icmp.c    |   23 +-
 lib/conntrack-other.c   |   13 +-
 lib/conntrack-private.h |  112 ++--
 lib/conntrack-tcp.c     |   21 +-
 lib/conntrack.c         | 1338 +++++++++++++++++++++--------------------------
 lib/conntrack.h         |  212 +-------
 lib/dpif-netdev.c       |   51 +-
 lib/packets.h           |    4 +
 tests/test-conntrack.c  |   26 +-
 9 files changed, 752 insertions(+), 1048 deletions(-)

-- 
1.9.1



More information about the dev mailing list