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

Daniele Di Proietto diproiettod at vmware.com
Wed Apr 27 06:36:10 UTC 2016


Hi Antonio,

great, thank you very much for performing this tests and share the results




On 25/04/2016 07:00, "Fischetti, Antonio" <antonio.fischetti at intel.com> wrote:

>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