From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 94DD97D0B for ; Thu, 24 Aug 2017 16:13:39 +0200 (CEST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Aug 2017 07:13:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,421,1498546800"; d="scan'208";a="141575635" Received: from dpdk15.sh.intel.com ([10.67.111.77]) by orsmga005.jf.intel.com with ESMTP; 24 Aug 2017 07:13:37 -0700 From: Jiayu Hu To: dev@dpdk.org Cc: mark.b.kavanagh@intel.com, konstantin.ananyev@intel.com, jianfeng.tan@intel.com, Jiayu Hu Date: Thu, 24 Aug 2017 22:15:39 +0800 Message-Id: <1503584144-63181-1-git-send-email-jiayu.hu@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK 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: , X-List-Received-Date: Thu, 24 Aug 2017 14:13:40 -0000 Generic Segmentation Offload (GSO) is a SW technique to split large packets into small ones. Akin to TSO, GSO enables applications to operate on large packets, thus reducing per-packet processing overhead. To enable more flexibility to applications, DPDK GSO is implemented as a standalone library. Applications explicitly use the GSO library to segment packets. This patch adds GSO support to DPDK for specific packet types: specifically, TCP/IPv4, VxLAN, and GRE. The first patch introduces the GSO API framework. The second patch adds GSO support for TCP/IPv4 packets (containing an optional VLAN tag). The third patch adds GSO support for VxLAN packets that contain outer IPv4, and inner TCP/IPv4 headers (plus optional inner and/or outer VLAN tags). The fourth patch adds GSO support for GRE packets that contain outer IPv4, and inner TCP/IPv4 headers (with optional outer VLAN tag). The last patch in the series enables TCP/IPv4, VxLAN, and GRE GSO in testpmd's checksum forwarding engine. The performance of TCP/IPv4 GSO on a 10Gbps link is demonstrated using iperf. Setup for the test is described as follows: a. Connect 2 x 10Gbps physical ports (P0, P1), together physically. b. Launch testpmd with P0 and a vhost-user port, and use csum forwarding engine. c. Select IP and TCP HW checksum calculation for P0; select TCP HW checksum calculation for vhost-user port. d. Launch a VM with csum and tso offloading enabled. e. Run iperf-client on virtio-net port in the VM to send TCP packets. With GSO enabled for P0 in testpmd, observed iperf throughput is ~9Gbps. The experimental data of VxLAN and GRE will be shown later. Jiayu Hu (3): lib: add Generic Segmentation Offload API framework gso/lib: add TCP/IPv4 GSO support app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO Mark Kavanagh (2): lib/gso: add VxLAN GSO support lib/gso: add GRE GSO support app/test-pmd/cmdline.c | 121 +++++++++ app/test-pmd/config.c | 25 ++ app/test-pmd/csumonly.c | 68 ++++- app/test-pmd/testpmd.c | 9 + app/test-pmd/testpmd.h | 10 + config/common_base | 5 + lib/Makefile | 2 + lib/librte_eal/common/include/rte_log.h | 1 + lib/librte_gso/Makefile | 52 ++++ lib/librte_gso/gso_common.c | 431 ++++++++++++++++++++++++++++++++ lib/librte_gso/gso_common.h | 180 +++++++++++++ lib/librte_gso/gso_tcp.c | 82 ++++++ lib/librte_gso/gso_tcp.h | 73 ++++++ lib/librte_gso/gso_tunnel.c | 62 +++++ lib/librte_gso/gso_tunnel.h | 46 ++++ lib/librte_gso/rte_gso.c | 100 ++++++++ lib/librte_gso/rte_gso.h | 122 +++++++++ lib/librte_gso/rte_gso_version.map | 7 + mk/rte.app.mk | 1 + 19 files changed, 1392 insertions(+), 5 deletions(-) create mode 100644 lib/librte_gso/Makefile create mode 100644 lib/librte_gso/gso_common.c create mode 100644 lib/librte_gso/gso_common.h create mode 100644 lib/librte_gso/gso_tcp.c create mode 100644 lib/librte_gso/gso_tcp.h create mode 100644 lib/librte_gso/gso_tunnel.c create mode 100644 lib/librte_gso/gso_tunnel.h create mode 100644 lib/librte_gso/rte_gso.c create mode 100644 lib/librte_gso/rte_gso.h create mode 100644 lib/librte_gso/rte_gso_version.map -- 2.7.4