From patchwork Thu Sep 24 08:57:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: yang_y_yi X-Patchwork-Id: 78658 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 68773A04B1; Thu, 24 Sep 2020 10:57:56 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1EE401DD94; Thu, 24 Sep 2020 10:57:50 +0200 (CEST) Received: from mail-m972.mail.163.com (mail-m972.mail.163.com [123.126.97.2]) by dpdk.org (Postfix) with ESMTP id 7046E1DD87 for ; Thu, 24 Sep 2020 10:57:46 +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=52L0O Z5PAdveFBWxSAym39wyR9VvDXHkd+GJrydSUvc=; b=VL02AqjFAJ0FXNveXzCZo L5DjBJZ7xs6OfKTQu/xs1O12M0GOYPc0EpP+s1gMqF7AzZPoi8NQ4W+JpZ5dnxlO ug2fLzOIwiueuH8dxmEHsCl5ztQA8L+MeSJnZnYWG11fa3x9DTvGrfm/ZxVE4og8 DHK/H1y3v4Ixicwb7kawR8= Received: from yangyi0100.home.langchao.com (unknown [111.207.123.58]) by smtp2 (Coremail) with SMTP id GtxpCgBHQROEX2xfc8QqQw--.19912S2; Thu, 24 Sep 2020 16:57:42 +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, 24 Sep 2020 16:57:37 +0800 Message-Id: <20200924085740.270192-1-yang_y_yi@163.com> X-Mailer: git-send-email 2.19.2.windows.1 MIME-Version: 1.0 X-CM-TRANSID: GtxpCgBHQROEX2xfc8QqQw--.19912S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxXry3ur48Xw4kCr4xZr1kZrb_yoW5Wr1fpa 93Kr4fJrZrJrn3X39xAw40qr95Kr1kJ3W7G347WryxJrs2vw40qrWrKFyfGry7Wr97Jr40 qw1Iq3W3CF1UCFUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zRhvttUUUUU= X-Originating-IP: [111.207.123.58] X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/xtbBEgepi16iZP9cXgAAsS Subject: [dpdk-dev] [PATCH v7 0/3] gro: add UDP/IPv4 GRO and VXLAN UDP/IPv4 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/IPv4 GRO and VXLAN UDP/IPv4 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 --------- v6 -> v7: correct max_nb_out to left_nb_out in some if statement add more comments for break branch in gro_*_tbl_timeout_flush remove whitespace line in struct vxlan_udp4_flow_key v5 -> v6: add doc update patch for prog_guide and rel_notes rename udp_check_vxlan_neighbor to udp4_check_vxlan_neighbor remove outer_ip_id and outer_is_atomic some other misc changes 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 (3): gro: add UDP/IPv4 GRO support gro: add VXLAN UDP/IPv4 GRO support doc: update prog_guide and rel_notes for GRO .../prog_guide/generic_receive_offload_lib.rst | 6 +- doc/guides/rel_notes/release_20_11.rst | 6 + lib/librte_gro/gro_udp4.c | 433 ++++++++++++++++ lib/librte_gro/gro_udp4.h | 282 +++++++++++ lib/librte_gro/gro_vxlan_udp4.c | 545 +++++++++++++++++++++ lib/librte_gro/gro_vxlan_udp4.h | 153 ++++++ lib/librte_gro/meson.build | 2 +- lib/librte_gro/rte_gro.c | 193 ++++++-- lib/librte_gro/rte_gro.h | 8 +- 9 files changed, 1590 insertions(+), 38 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