From: Jiayu Hu <jiayu.hu@intel.com>
To: "Tan, Jianfeng" <jianfeng.tan@intel.com>, tiwei.bie@intel.com
Cc: dev@dpdk.org, konstantin.ananyev@intel.com, yliu@fridaylinux.org,
keith.wiles@intel.com, lei.a.yao@intel.com
Subject: Re: [dpdk-dev] [PATCH v5 0/3] Support TCP/IPv4 GRO in DPDK
Date: Mon, 19 Jun 2017 13:12:44 +0800 [thread overview]
Message-ID: <20170619051244.GA40885@localhost.localdomain> (raw)
In-Reply-To: <20170619030734.GA39716@localhost.localdomain>
Hi Jianfeng,
Sorry for some typo errors. I have correct them below.
On Mon, Jun 19, 2017 at 11:07:34AM +0800, Jiayu Hu wrote:
> On Mon, Jun 19, 2017 at 09:39:11AM +0800, Tan, Jianfeng wrote:
> > Hi Jiayu,
> >
> > You need to update the document:
> > - Release note file: release_17_08.rst.
> > - A howto doc is welcomed.
>
> Thanks. I will update them in next patch.
>
> >
> >
> > On 6/18/2017 3:21 PM, Jiayu Hu wrote:
> > > Generic Receive Offload (GRO) is a widely used SW-based offloading
> > > technique to reduce per-packet processing overhead. It gains performance
> > > by reassembling small packets into large ones. Therefore, we propose to
> > > support GRO in DPDK.
> > >
> > > To enable more flexibility to applications, DPDK GRO is implemented as
> > > a user library. Applications explicitly use the GRO library to merge
> > > small packets into large ones. DPDK GRO provides two reassembly modes.
> > > One is called lightweigth mode, the other is called heavyweight mode.
> > > If applications want merge packets in a simple way, they can use
> > > lightweigth mode. If applications need more fine-grained controls,
> > > they can choose heavyweigth mode.
> >
> > So what's the real difference between the two modes? Might be an example is
> > good way to clarify.
>
> The heavyweight mode merges packets in a burst-mode. Applications just need
Sorry for typo error. It should be 'lightweight mode'.
> to give N packets to the heavyweight mode API, rte_gro_reassemble_burst.
Sorry for typo error. It should be 'lightweight mode'.
> After rte_gro_reassemble_burst returns, packets are merged together. For
> applications, to use the heavyweight mode is very simple and they don't
Sorry for typo error. It should be 'lightweight mode'.
> need to allocate any GRO tables before. The lightweight mode enables more
Sorry for typo error. It should be 'heavyweight mode'.
> flexibility to applications. Applications need to create a GRO table before
> invoking the lightweight mode API, rte_gro_reassemble, to merge packets.
Sorry for typo error. It should be 'heavyweight mode'.
> Besides, rte_gro_reassemble just processes one packet at a time. No matter
> if the packet is merged successfully or not, it's stored in the GRO table.
> When applications want these processed packets, they need to manually flush
> them from the GRO table. You can see more detaileds in the next patch
> 'add Generic Receive Offload API framework'.
>
> >
> > >
> > > This patchset is to support TCP/IPv4 GRO in DPDK. The first patch is to
> > > provide a GRO API framework. The second patch is to support TCP/IPv4 GRO.
> > > The last patch demonstrates how to use GRO library in app/testpmd.
> >
> > In which mode?
>
> Testpmd just demonstrate the usage of the lightweight mode.
>
> >
> > >
> > > We perform two iperf tests (with DPDK GRO and without DPDK GRO) to see
> > > the performance gains from DPDK GRO. Specifically, the experiment
> > > environment is:
> > > a. Two 10Gbps physical ports (p0 and p1) on one host are linked together;
> > > b. p0 is in networking namespace ns1, whose IP is 1.1.2.3. Iperf client
> > > runs on p0, which sends TCP/IPv4 packets. The OS in VM is ubuntu 14.04;
> > > c. testpmd runs on p1. Besides, testpmd has a vdev which connects to a
> > > VM via vhost-user and virtio-net. The VM runs iperf server, whose IP
> > > is 1.1.2.4;
> > > d. p0 turns on TSO; VM turns off kernel GRO; testpmd runs in iofwd mode.
> > > iperf client and server use the following commands:
> > > - client: ip netns exec ns1 iperf -c 1.1.2.4 -i2 -t 60 -f g -m
> > > - server: iperf -s -f g
> > > Two test cases are:
> > > a. w/o DPDK GRO: run testpmd without GRO
> > > b. w DPDK GRO: testpmd enables GRO for p1
> > > Result:
> > > With GRO, the throughput improvement is around 40%.
> >
> > Do you try running several pairs of iperf-s and iperf-c tests (on 40Gb
> > NICs)? It can not only prove the performance, but also the functionality
> > correctness.
>
> Besides the one pair scenario, I just tried two pairs of iperf-s and iperf-c.
> Thanks for your advices, amd I will do more testes in next patch.
>
>
> Thanks,
> Jiayu
>
> >
> > Thanks,
> > Jianfeng
> >
> > >
> > > Change log
> > > ==========
> > > v5:
> > > - fix some bugs
> > > - fix coding style issues
> > > v4:
> > > - implement DPDK GRO as an application-used library
> > > - introduce lightweight and heavyweight working modes to enable
> > > fine-grained controls to applications
> > > - replace cuckoo hash tables with simpler table structure
> > > v3:
> > > - fix compilation issues.
> > > v2:
> > > - provide generic reassembly function;
> > > - implement GRO as a device ability:
> > > add APIs for devices to support GRO;
> > > add APIs for applications to enable/disable GRO;
> > > - update testpmd example.
> > >
> > > Jiayu Hu (3):
> > > lib: add Generic Receive Offload API framework
> > > lib/gro: add TCP/IPv4 GRO support
> > > app/testpmd: enable TCP/IPv4 GRO
> > >
> > > app/test-pmd/cmdline.c | 45 ++++
> > > app/test-pmd/config.c | 29 +++
> > > app/test-pmd/iofwd.c | 6 +
> > > app/test-pmd/testpmd.c | 3 +
> > > app/test-pmd/testpmd.h | 11 +
> > > config/common_base | 5 +
> > > lib/Makefile | 1 +
> > > lib/librte_gro/Makefile | 51 +++++
> > > lib/librte_gro/rte_gro.c | 248 ++++++++++++++++++++
> > > lib/librte_gro/rte_gro.h | 217 ++++++++++++++++++
> > > lib/librte_gro/rte_gro_tcp.c | 527 +++++++++++++++++++++++++++++++++++++++++++
> > > lib/librte_gro/rte_gro_tcp.h | 210 +++++++++++++++++
> > > mk/rte.app.mk | 1 +
> > > 13 files changed, 1354 insertions(+)
> > > create mode 100644 lib/librte_gro/Makefile
> > > create mode 100644 lib/librte_gro/rte_gro.c
> > > create mode 100644 lib/librte_gro/rte_gro.h
> > > create mode 100644 lib/librte_gro/rte_gro_tcp.c
> > > create mode 100644 lib/librte_gro/rte_gro_tcp.h
> > >
next prev parent reply other threads:[~2017-06-19 5:11 UTC|newest]
Thread overview: 141+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-22 9:32 [dpdk-dev] [PATCH 0/2] lib: add TCP IPv4 GRO support Jiayu Hu
2017-03-22 9:32 ` [dpdk-dev] [PATCH 1/2] lib: add Generic Receive Offload support for TCP IPv4 packets Jiayu Hu
2017-03-22 9:32 ` [dpdk-dev] [PATCH 2/2] app/testpmd: provide TCP IPv4 GRO function in iofwd mode Jiayu Hu
[not found] ` <1B893F1B-4DA8-4F88-9583-8C0BAA570832@intel.com>
[not found] ` <20170323021502.GA114662@localhost.localdomain>
[not found] ` <C830A6FC-F440-4E68-AB4E-2FD502722E3F@intel.com>
[not found] ` <20170323062433.GA120139@localhost.localdomain>
[not found] ` <59AF69C657FD0841A61C55336867B5B066729E3F@IRSMSX103.ger.corp.intel.com>
[not found] ` <20170323102135.GA124301@localhost.localdomain>
[not found] ` <2601191342CEEE43887BDE71AB9772583FAD410A@IRSMSX109.ger.corp.intel.com>
2017-03-24 2:23 ` [dpdk-dev] [PATCH 0/2] lib: add TCP IPv4 GRO support Jiayu Hu
2017-03-24 6:18 ` Wiles, Keith
2017-03-24 7:22 ` Yuanhan Liu
2017-03-24 8:06 ` Jiayu Hu
2017-03-24 11:43 ` Ananyev, Konstantin
2017-03-24 14:37 ` Wiles, Keith
2017-03-24 14:59 ` Olivier Matz
2017-03-24 15:07 ` Wiles, Keith
2017-03-28 13:40 ` Wiles, Keith
2017-03-28 13:57 ` Hu, Jiayu
2017-03-28 16:06 ` Wiles, Keith
2017-03-29 10:47 ` Morten Brørup
2017-03-29 12:12 ` Wiles, Keith
2017-04-04 12:31 ` [dpdk-dev] [PATCH v2 0/3] support GRO in DPDK Jiayu Hu
2017-04-04 12:31 ` [dpdk-dev] [PATCH v2 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-04-04 12:31 ` [dpdk-dev] [PATCH v2 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-04-04 12:31 ` [dpdk-dev] [PATCH v2 3/3] app/testpmd: enable GRO feature Jiayu Hu
2017-04-24 8:09 ` [dpdk-dev] [PATCH v3 0/3] support GRO in DPDK Jiayu Hu
2017-04-24 8:09 ` [dpdk-dev] [PATCH v3 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-05-22 9:19 ` Ananyev, Konstantin
2017-05-23 10:31 ` Jiayu Hu
2017-05-24 12:38 ` Ananyev, Konstantin
2017-05-26 7:26 ` Jiayu Hu
2017-05-26 23:10 ` Ananyev, Konstantin
2017-05-27 3:41 ` Jiayu Hu
2017-05-27 11:12 ` Ananyev, Konstantin
2017-05-27 14:09 ` Jiayu Hu
2017-05-27 16:51 ` Ananyev, Konstantin
2017-05-29 10:22 ` Hu, Jiayu
2017-05-29 12:18 ` Bruce Richardson
2017-05-30 14:10 ` Hu, Jiayu
2017-05-29 12:51 ` Ananyev, Konstantin
2017-05-30 5:29 ` Hu, Jiayu
2017-05-30 11:56 ` Ananyev, Konstantin
2017-04-24 8:09 ` [dpdk-dev] [PATCH v3 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-04-24 8:09 ` [dpdk-dev] [PATCH v3 3/3] app/testpmd: enable GRO feature Jiayu Hu
2017-06-07 9:24 ` Wu, Jingjing
2017-06-07 11:08 ` [dpdk-dev] [PATCH v4 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-06-07 11:08 ` [dpdk-dev] [PATCH v4 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-06-07 11:08 ` [dpdk-dev] [PATCH v4 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-06-07 11:08 ` [dpdk-dev] [PATCH v4 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-06-18 7:21 ` [dpdk-dev] [PATCH v5 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-06-18 7:21 ` [dpdk-dev] [PATCH v5 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-06-19 4:03 ` Tiwei Bie
2017-06-19 5:16 ` Jiayu Hu
2017-06-19 15:43 ` Tan, Jianfeng
2017-06-19 15:55 ` Stephen Hemminger
2017-06-20 1:48 ` Jiayu Hu
2017-06-18 7:21 ` [dpdk-dev] [PATCH v5 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-06-19 15:43 ` Tan, Jianfeng
2017-06-20 3:22 ` Jiayu Hu
2017-06-20 15:15 ` Ananyev, Konstantin
2017-06-20 16:16 ` Jiayu Hu
2017-06-20 15:21 ` Ananyev, Konstantin
2017-06-20 23:30 ` Tan, Jianfeng
2017-06-20 23:55 ` Stephen Hemminger
2017-06-22 7:39 ` Jiayu Hu
2017-06-22 8:18 ` Jiayu Hu
2017-06-22 9:35 ` Tan, Jianfeng
2017-06-22 13:55 ` Jiayu Hu
2017-06-18 7:21 ` [dpdk-dev] [PATCH v5 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-06-19 1:24 ` Yao, Lei A
2017-06-19 2:27 ` Wu, Jingjing
2017-06-19 3:22 ` Jiayu Hu
2017-06-19 1:39 ` [dpdk-dev] [PATCH v5 0/3] Support TCP/IPv4 GRO in DPDK Tan, Jianfeng
2017-06-19 3:07 ` Jiayu Hu
2017-06-19 5:12 ` Jiayu Hu [this message]
2017-06-23 14:43 ` [dpdk-dev] [PATCH v6 " Jiayu Hu
2017-06-23 14:43 ` [dpdk-dev] [PATCH v6 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-06-25 16:53 ` Tan, Jianfeng
2017-06-23 14:43 ` [dpdk-dev] [PATCH v6 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-06-25 16:53 ` Tan, Jianfeng
2017-06-26 1:58 ` Jiayu Hu
2017-06-23 14:43 ` [dpdk-dev] [PATCH v6 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-06-24 8:01 ` Yao, Lei A
2017-06-25 16:03 ` [dpdk-dev] [PATCH v6 0/3] Support TCP/IPv4 GRO in DPDK Tan, Jianfeng
2017-06-26 1:35 ` Jiayu Hu
2017-06-26 6:43 ` [dpdk-dev] [PATCH v7 " Jiayu Hu
2017-06-26 6:43 ` [dpdk-dev] [PATCH v7 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-06-27 23:42 ` Ananyev, Konstantin
2017-06-28 2:17 ` Jiayu Hu
2017-06-28 17:41 ` Ananyev, Konstantin
2017-06-29 1:19 ` Jiayu Hu
2017-06-26 6:43 ` [dpdk-dev] [PATCH v7 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-06-28 23:56 ` Ananyev, Konstantin
2017-06-29 2:26 ` Jiayu Hu
2017-06-30 12:07 ` Ananyev, Konstantin
2017-06-30 15:40 ` Hu, Jiayu
2017-06-26 6:43 ` [dpdk-dev] [PATCH v7 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-06-29 10:58 ` [dpdk-dev] [PATCH v8 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-06-29 10:58 ` [dpdk-dev] [PATCH v8 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-06-29 10:58 ` [dpdk-dev] [PATCH v8 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-06-29 17:51 ` Stephen Hemminger
2017-06-30 2:07 ` Jiayu Hu
2017-06-29 10:59 ` [dpdk-dev] [PATCH v8 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-06-30 2:26 ` Wu, Jingjing
2017-06-30 6:53 ` [dpdk-dev] [PATCH v9 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-06-30 6:53 ` [dpdk-dev] [PATCH v9 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-06-30 6:53 ` [dpdk-dev] [PATCH v9 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-06-30 6:53 ` [dpdk-dev] [PATCH v9 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-07-01 11:08 ` [dpdk-dev] [PATCH v10 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-07-01 11:08 ` [dpdk-dev] [PATCH v10 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-07-02 10:19 ` Tan, Jianfeng
2017-07-03 5:56 ` Hu, Jiayu
2017-07-04 8:11 ` Yuanhan Liu
2017-07-04 8:37 ` Yuanhan Liu
2017-07-04 16:01 ` Hu, Jiayu
2017-07-01 11:08 ` [dpdk-dev] [PATCH v10 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-07-02 10:19 ` Tan, Jianfeng
2017-07-03 5:13 ` Hu, Jiayu
2017-07-04 9:03 ` Yuanhan Liu
2017-07-04 16:03 ` Hu, Jiayu
2017-07-01 11:08 ` [dpdk-dev] [PATCH v10 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-07-05 4:08 ` [dpdk-dev] [PATCH v11 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-07-05 4:08 ` [dpdk-dev] [PATCH v11 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-07-07 6:55 ` Tan, Jianfeng
2017-07-07 9:19 ` Tan, Jianfeng
2017-07-05 4:08 ` [dpdk-dev] [PATCH v11 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-07-07 6:55 ` Tan, Jianfeng
2017-07-05 4:08 ` [dpdk-dev] [PATCH v11 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-07-07 10:39 ` [dpdk-dev] [PATCH v12 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-07-07 10:39 ` [dpdk-dev] [PATCH v12 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-07-08 16:37 ` Tan, Jianfeng
2017-07-07 10:39 ` [dpdk-dev] [PATCH v12 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-07-08 16:37 ` Tan, Jianfeng
2017-07-07 10:39 ` [dpdk-dev] [PATCH v12 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-07-09 1:13 ` [dpdk-dev] [PATCH v13 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-07-09 1:13 ` [dpdk-dev] [PATCH v13 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-07-09 1:13 ` [dpdk-dev] [PATCH v13 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-07-09 1:13 ` [dpdk-dev] [PATCH v13 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-07-09 5:46 ` [dpdk-dev] [PATCH v14 0/3] Support TCP/IPv4 GRO in DPDK Jiayu Hu
2017-07-09 5:46 ` [dpdk-dev] [PATCH v14 1/3] lib: add Generic Receive Offload API framework Jiayu Hu
2017-07-09 5:46 ` [dpdk-dev] [PATCH v14 2/3] lib/gro: add TCP/IPv4 GRO support Jiayu Hu
2017-07-09 5:46 ` [dpdk-dev] [PATCH v14 3/3] app/testpmd: enable TCP/IPv4 GRO Jiayu Hu
2017-07-09 7:59 ` Yao, Lei A
2017-07-09 16:14 ` [dpdk-dev] [PATCH v14 0/3] Support TCP/IPv4 GRO in DPDK Thomas Monjalon
2017-07-10 2:21 ` Hu, Jiayu
2017-07-10 7:03 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170619051244.GA40885@localhost.localdomain \
--to=jiayu.hu@intel.com \
--cc=dev@dpdk.org \
--cc=jianfeng.tan@intel.com \
--cc=keith.wiles@intel.com \
--cc=konstantin.ananyev@intel.com \
--cc=lei.a.yao@intel.com \
--cc=tiwei.bie@intel.com \
--cc=yliu@fridaylinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).