From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9356BA04B5; Thu, 10 Sep 2020 11:29:27 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 247911C0CE; Thu, 10 Sep 2020 11:29:27 +0200 (CEST) Received: from mail-m973.mail.163.com (mail-m973.mail.163.com [123.126.97.3]) by dpdk.org (Postfix) with ESMTP id 17AFC1C0CA for ; Thu, 10 Sep 2020 11:29:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=0bIF4 29Uk8OMonz1eEaimPhQ8kRhA8cUATlpdDvbwWg=; b=p4j0O0cf+77CD6IoJrLIA Wbk+hWPWdkWMnrxzhCaxRDJI5FNSKqd0ouNylqmd5KJPUfpUsPuivYwl6mPs5IY5 20BSFCLCfiZ3Memu3eTvll7FIJRxaBDFjS4CDtYq6LtVPEF77RzNDfS+eoy0zMfp pR3wWQdA6CEjKs9F9HwMKg= Received: from yangyi0100.home.langchao.com (unknown [111.207.123.58]) by smtp3 (Coremail) with SMTP id G9xpCgDXVp_q8Vlf_hzFBg--.134S2; Thu, 10 Sep 2020 17:29:20 +0800 (CST) From: yang_y_yi@163.com To: dev@dpdk.org Cc: jiayu.hu@intel.com, thomas@monjalon.net, yangyi01@inspur.com, yang_y_yi@163.com Date: Thu, 10 Sep 2020 17:29:12 +0800 Message-Id: <20200910092914.120452-1-yang_y_yi@163.com> X-Mailer: git-send-email 2.19.2.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: G9xpCgDXVp_q8Vlf_hzFBg--.134S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7Ww47uw13AFykJFWDJryDtrb_yoW8tw4fpF Z3Gr4fJr9rJryxXrsxJw40qrn5Jr18Jw17Ga42gry8Jr40yw4jqr1UKFyrGry7Wr97Xr4I qw12qF15Cw1UGrUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zRUl19UUUUU= X-Originating-IP: [111.207.123.58] X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiqBKbi1c7Rvk8OQAAs8 Subject: [dpdk-dev] [PATCH v5 0/2] gro: add UDP GRO and VXLAN UDP GRO support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Yi Yang In case that UFO or GSO is enabled, GRO is very necessary, especially for UDP, it is more so. Many NICs can't support VXLAN UDP UFO/USO and VLAN UFO/USO, so UDP performance improvement depends on GSO and GRO to a great extent. This patch series added VLAN UDP GRO and VXLAN UDP GRO support. I have tested it in OVS DPDK, test scenario is as below: +-------------------------+ +--------------------------+ |VM1 --- OVS DPDK --- NIC1|---| NIC2 --- OVS-DPDK --- VM2| +-------------------------+ +--------------------------+ SERVER1 SERVER2 If no GSO and GRO, 8k UDP packet can't work in case of UFO or in case that underlay MTU is 1500, so UDP size must meet MTU limitation, my VM MTU is 1450 (consider vxlan header), UDP performance is about 3Gbps, with GSO and GRO enabled, I can send 8K UDP packet, UDP performance is about 6Gbps (Note: with small UDP packet loss rate). FYI: OVS DPDK patch series https://patchwork.ozlabs.org/project/openvswitch/list/?series=194621 Changelog --------- v4 -> v5: remove duplicate line fix header length check issue add unlikely for some low probability condition branch rename udp_check_neighbor to udp4_check_neighbor remove brace for single line else statement remove outer_l2_len and pkt->outer_l3_len because they are nonsense for non-VXLAN UDP packet v3 -> v4: split two patches in cleaner way remove ip_id which is unnecessary for UDP GRO correct hdr_len calculation v2 -> v3: remove UDP header length check v1 -> v2: split into two patches Yi Yang (2): gro: add UDP GRO support gro: add VXLAN UDP GRO support lib/librte_gro/gro_udp4.c | 430 +++++++++++++++++++++++++++++++ lib/librte_gro/gro_udp4.h | 282 +++++++++++++++++++++ lib/librte_gro/gro_vxlan_udp4.c | 548 ++++++++++++++++++++++++++++++++++++++++ lib/librte_gro/gro_vxlan_udp4.h | 152 +++++++++++ lib/librte_gro/meson.build | 2 +- lib/librte_gro/rte_gro.c | 192 +++++++++++--- lib/librte_gro/rte_gro.h | 8 +- 7 files changed, 1580 insertions(+), 34 deletions(-) create mode 100644 lib/librte_gro/gro_udp4.c create mode 100644 lib/librte_gro/gro_udp4.h create mode 100644 lib/librte_gro/gro_vxlan_udp4.c create mode 100644 lib/librte_gro/gro_vxlan_udp4.h -- 1.8.3.1