[ovs-dev] [PATCH v2 00/15] Userspace (DPDK) connection tracker

Fischetti, Antonio antonio.fischetti at intel.com
Mon Apr 25 14:00:44 UTC 2016


Hi Daniele,
below are 
  - Regression Tests results
  - ALWAYS_INLINE check


Regression Tests on Performance
===============================

I did some regression tests on performance, it looks like there's
no performance drop.

I've sent mono-directional data with 64-Byte packets at line rate 
on one ixia port (Tx) and read the receiving rate on the other ixia 
port (Rx), regardless of packet loss.

Below the 2 tests I did and then a table with performance figures.

I’ve used OVS master @ Commit ID: d87091c2a1f9d3db1a2352eba1b609405122d15a
and compared results with and without the ConnTracker v2 patches.


Test #1: 'Phy-to-Phy'
---------------------

                       +-----+
-->[ Port 1 (dpdk) ]---|     |
                       | OVS |
<--[ Port 2 (dpdk) ]---|     |
                       +-----+

ovs-ofctl add-flow br0 in_port=1,action=output:2



Test #2: Phy-VM-Phy with vHost-User
-----------------------------------

                       +-----+                                +--------------+
-->[ Port 1 (dpdk) ]---|     |---[ Port 4 (dpdkvhostuser) ]---|              |
                       | OVS |                                | testpmd @ VM |  
<--[ Port 3 (dpdk) ]---|     |---[ Port 2 (dpdkvhostuser) ]---|              |
                       +-----+                                +--------------+

ovs-ofctl add-flow br0 idle_timeout=0,in_port=1,action=output:4
ovs-ofctl add-flow br0 idle_timeout=0,in_port=2,action=output:3



Performance figures
-------------------

                   +----------------+-------------------+
                   |   OVS master   | OVS master 2.5 +  |
                   |                | C.T. Patches v2   |
+------------------+----------------+-------------------+
| Phy-to-Phy       | 13.49 Mpps     | 13.46 Mpps        | 
+------------------+----------------+-------------------+
| PVP (vHost-User) |  5.6 Mpps      | 5.6 Mpps          |
+------------------+----------------+-------------------+



ALWAYS_INLINE
=============
I've also checked what we already discussed with the patch set v1.
I applied patches one by one and measured the performance, it seems
that ALWAYS_INLINE in parse_vlan() and parse_ethertype() has fixed
the performance regression issue.



Antonio


> -----Original Message-----
> From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Daniele Di
> Proietto
> Sent: Saturday, April 16, 2016 1:03 AM
> To: dev at openvswitch.org
> Subject: [ovs-dev] [PATCH v2 00/15] Userspace (DPDK) connection tracker
> 
> This series aims to implement the ct() action for the dpif-netdev datapath.
> The bulk of the code is in the new conntrack module: it contains some packet
> parsing code, some lookup tables and the logic to implements all the ct bits.
> 
> The conntrack module is helped by conntrack-tcp, for TCP window and flags
> tracking: the bulk of the code of this submodule is from the FreeBSD's pf
> subsystem, therefore is BSD licensed.
> 
> The rest of the series integrates the connection tracker with the rest of
> OVS: the ct() action is implemented in dpif-netdev, and the debugging
> interfaces required by dpctl/{dump,flush}-conntrack are implemented.
> 
> Besides adding some unit tests, this series ports the existing conntrack
> system test to the userspace datapath.  Some small modifications are
> required to pass the testsuite, and some tests still have to be skipped.
> 
> On newer kernels the userspace testsuite has some problems with offloads,
> so a workaround is included.
> 
> This can also be downloaded at:
> 
> https://github.com/ddiproietto/ovs/tree/userconntrack_20160415
> 
> Any feedback is appreciated, thanks.
> 
> v1 -> v2:
> * Fixed bug in tcp_get_wscale(), related to TCP options parsing.
> * Changed names of ICMP constants: now they're different from Linux and
>   FreeBSD.
> * Fixed bug in parse_ipv6_ext_hdrs().
> * Used ALWAYS_INLINE in parse_vlan and parse_ethertype, to avoid a
>   performance regression in miniflow_extract().
> * Updated copyright info in COPYING and debian/copyright.in.
> * Rebased.
> * Changed batching strategy in conntrack_execute() to allow a newly
>   created connection to be picked up by packets in the same batch.
> * Added an ovs-test module to throw pcap files at the connection tracker.
> * Added a workaround for the userspace testsuite on new kernels and a tcp
>   non-conntrack test.
> 
> Daniele Di Proietto (15):
>   packets: Define ICMP types.
>   flow: Export parse_ipv6_ext_hdrs().
>   flow: Introduce parse_dl_type().
>   conntrack: New userspace connection tracker.
>   tests: Add very simple conntrack benchmark.
>   tests: Add test-conntrack pcap test.
>   conntrack: Implement flush function.
>   conntrack: Implement dumping to ct_entry.
>   dpif-netdev: Execute conntrack action.
>   dpif-netdev: Implement conntrack dump functions.
>   dpif-netdev: Implement conntrack flush interface.
>   tests: Add conntrack ofproto-dpif tests.
>   system-tests: Disable offloads in userspace tests.
>   system-tests: Add tcp simple test.
>   system-tests: Run conntrack tests with userspace
> 
>  COPYING                          |   1 +
>  debian/copyright.in              |   4 +
>  lib/automake.mk                  |   5 +
>  lib/conntrack-other.c            |  91 ++++
>  lib/conntrack-private.h          |  80 ++++
>  lib/conntrack-tcp.c              | 510 ++++++++++++++++++++
>  lib/conntrack.c                  | 997
> +++++++++++++++++++++++++++++++++++++++
>  lib/conntrack.h                  | 162 +++++++
>  lib/dpif-netdev.c                | 138 +++++-
>  lib/flow.c                       | 154 +++---
>  lib/flow.h                       |   4 +
>  lib/packets.h                    |  14 +-
>  tests/automake.mk                |   1 +
>  tests/dpif-netdev.at             |  14 +-
>  tests/ofproto-dpif.at            | 698 ++++++++++++++++++++++++++-
>  tests/system-common-macros.at    |   1 +
>  tests/system-kmod-macros.at      |  35 ++
>  tests/system-traffic.at          |  69 ++-
>  tests/system-userspace-macros.at |  63 ++-
>  tests/test-conntrack.c           | 232 +++++++++
>  20 files changed, 3164 insertions(+), 109 deletions(-)
>  create mode 100644 lib/conntrack-other.c
>  create mode 100644 lib/conntrack-private.h
>  create mode 100644 lib/conntrack-tcp.c
>  create mode 100644 lib/conntrack.c
>  create mode 100644 lib/conntrack.h
>  create mode 100644 tests/test-conntrack.c
> 
> --
> 2.1.4
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev


More information about the dev mailing list