From patchwork Fri Sep 30 05:49:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ke Xu X-Patchwork-Id: 117173 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E3FDAA034C; Fri, 30 Sep 2022 07:50:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DF526427FF; Fri, 30 Sep 2022 07:50:30 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id C14CE40E5A for ; Fri, 30 Sep 2022 07:50:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664517027; x=1696053027; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Khp9XjjaSZZTpBRFqT92wK5HjkZQdfjesYBlThpF/Og=; b=Cpq+2iORnQrFus3Z2/6NX+mefHEgPm7ewjBYK5H+7nNRs8Oo2PHo8SgI KLehdFQQf+ZkoDbpRxtglSVopq/dxfnWT74mZH+m56UWorB2th3oAZtQQ A/xaq7Qymdj7KkEaEOPpxcAI3dWSdtqdXOabBYLuxjx4QtNCH+BpvaNGP 4uE5S1lA3qOBeDqEUrvzNjdp6ekwR9sY6JRSSrlWCr3SWgteQL0tJGUfA 2ajwgD6VdIIcqZWCRwPKgWH8KjUqPlM2pGvHHho9alH1ZedM8lfKY2c8G a62ZLvQatJ2cVTNejHybF9aThRjZUfu7gDUyZr3oP1JgCMMwpYw63TVME Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10485"; a="363953965" X-IronPort-AV: E=Sophos;i="5.93,357,1654585200"; d="scan'208";a="363953965" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2022 22:50:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10485"; a="685157255" X-IronPort-AV: E=Sophos;i="5.93,357,1654585200"; d="scan'208";a="685157255" Received: from bmca4bf0170a856.sh.intel.com (HELO DPDK-XUKE-LAB.sh.intel.com) ([10.67.115.115]) by fmsmga008.fm.intel.com with ESMTP; 29 Sep 2022 22:50:20 -0700 From: Ke Xu To: dts@dpdk.org Cc: qi.fu@intel.com, lijuan.tu@intel.com, Ke Xu Subject: [DTS][PATCH V1 1/2] test_plans/vf_offload: add test cases for tunneling packets Date: Fri, 30 Sep 2022 05:49:29 +0000 Message-Id: <20220930054930.546563-2-ke1.xu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220930054930.546563-1-ke1.xu@intel.com> References: <20220930054930.546563-1-ke1.xu@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org DPDK will support outer checksum offload and tunneling TSO in release 22.11, this commit is intended to cover the new scenario of test these features. Signed-off-by: Ke Xu --- test_plans/vf_offload_test_plan.rst | 226 ++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) diff --git a/test_plans/vf_offload_test_plan.rst b/test_plans/vf_offload_test_plan.rst index ba490e06..c0a7f850 100644 --- a/test_plans/vf_offload_test_plan.rst +++ b/test_plans/vf_offload_test_plan.rst @@ -97,6 +97,96 @@ be validated as pass by the tester. The IPv4 source address will not be changed by testpmd. +Test Case: HW tunneling checksum offload check +============================================== +Start testpmd and enable checksum offload on rx port. + +Setup the ``csum`` forwarding mode:: + + testpmd> set fwd csum + Set csum packet forwarding mode + +Enable the IPv4/UDP/TCP/SCTP HW checksum offload on port 0:: + + testpmd> port stop all + testpmd> csum set ip hw 0 + testpmd> csum set tcp hw 0 + testpmd> csum set udp hw 0 + testpmd> csum set sctp hw 0 + testpmd> csum set outer-ip hw 0 + testpmd> csum set outer-udp hw 0 + testpmd> csum parse-tunnel on 0 + testpmd> port start all + testpmd> set promisc 0 on + testpmd> start + csum packet forwarding - CRC stripping disabled - packets/burst=32 + nb forwarding cores=1 - nb forwarding ports=10 + RX queues=1 - RX desc=128 - RX free threshold=64 + RX threshold registers: pthresh=8 hthresh=8 wthresh=4 + TX queues=1 - TX desc=512 - TX free threshold=0 + TX threshold registers: pthresh=32 hthresh=8 wthresh=8 + +Configure the traffic generator to send the multiple packets for the following +combination with inner package of: + + +----------------+----------------------------------------+ + | packet type | packet organization | + +================+========================================+ + | | IPv4 / UDP / payload | + | +----------------------------------------+ + | | IPv4 / TCP / payload | + | +----------------------------------------+ + | inner packets | IPv4 / SCTP / payload | + | for checksum +----------------------------------------+ + | offload test | IPv6 / UDP / payload | + | +----------------------------------------+ + | | IPv6 / TCP / payload | + | +----------------------------------------+ + | | IPv6 / SCTP / payload | + +----------------+----------------------------------------+ + +And outer or tunneling package of : + + +----------------+----------------------------------------+ + | packet type | packet organization | + +================+========================================+ + | | Ether / IPv4 / UDP / VXLAN / Ether | + | +----------------------------------------+ + | | Ether / IPv6 / UDP / VXLAN / Ether | + | +----------------------------------------+ + | | Ether / IPv4 / GRE | + | outer and +----------------------------------------+ + | tunneling | Ether / IPv4 / GRE / Ether | + | packets +----------------------------------------+ + | for checksum | Ether / IPv6 / GRE | + | offload test +----------------------------------------+ + | | Ether / IPv6 / GRE / Ether | + | +----------------------------------------+ + | | Ether / IPv4 / NVGRE | + | +----------------------------------------+ + | | Ether / IPv4 / NVGRE / Ether | + | +----------------------------------------+ + | | Ether / IPv6 / NVGRE | + | +----------------------------------------+ + | | Ether / IPv6 / NVGRE / Ether | + | +----------------------------------------+ + | | Ether / IPv4 / UDP / GTPU | + | +----------------------------------------+ + | | Ether / IPv6 / UDP / GTPU | + +----------------+----------------------------------------+ + +Notice that VxLAN needs DCF to configure, so testing of VxLAN may need to perform +on DCF. + +Send packets with incorrect checksum on outer IPv4, outer UDP (if exists), inner +IP, inner L4, verify dpdk can rx it and report the checksum error, +verify that the same number of packet are correctly received on the traffic +generator side. And IPv4 checksum, TCP checksum, UDP checksum, SCTP checksum need +be validated as pass by the tester. + +The IPv4 source address will not be changed by testpmd. + + Test Case: SW checksum offload check ==================================== @@ -167,6 +257,91 @@ and checksum on rx port. The test commands is below:: # Enable TSO on tx port testpmd> tso set 800 1 +For tunneling cases, add tunneling support on csum and enable tunnel tso as +below:: + + # Enable hw checksum for tunneling on rx port + testpmd> port stop all + testpmd> csum set outer-ip hw 0 + testpmd> csum set outer-udp hw 0 + testpmd> csum parse-tunnel on 0 + testpmd> port start all + testpmd> tunnel_tso set 800 1 + +Configure the traffic generator to send the multiple packets for the following +combination: + + +----------------+----------------------------------------+ + | packet type | packet organization | + +================+========================================+ + | | Ether / IPv4 / TCP / payload len 128 | + | +----------------------------------------+ + | | Ether / IPv4 / TCP / payload len 800 | + | +----------------------------------------+ + | | Ether / IPv4 / TCP / payload len 801 | + | +----------------------------------------+ + | | Ether / IPv4 / TCP / payload len 1700 | + | non-tunneling +----------------------------------------+ + | packets for | Ether / IPv4 / TCP / payload len 2500 | + | TSO test +----------------------------------------+ + | | Ether / IPv6 / TCP / payload len 128 | + | +----------------------------------------+ + | | Ether / IPv6 / TCP / payload len 800 | + | +----------------------------------------+ + | | Ether / IPv6 / TCP / payload len 801 | + | +----------------------------------------+ + | | Ether / IPv6 / TCP / payload len 1700 | + | +----------------------------------------+ + | | Ether / IPv6 / TCP / payload len 2500 | + +----------------+----------------------------------------+ + | | Ether / IPv4 / UDP / VXLAN / Ether | + | +----------------------------------------+ + | | Ether / IPv6 / UDP / VXLAN / Ether | + | +----------------------------------------+ + | | Ether / IPv4 / GRE | + | outer and +----------------------------------------+ + | tunneling | Ether / IPv4 / GRE / Ether | + | packets +----------------------------------------+ + | for tso test | Ether / IPv6 / GRE | + | +----------------------------------------+ + | | Ether / IPv6 / GRE / Ether | + | +----------------------------------------+ + | | Ether / IPv4 / NVGRE | + | +----------------------------------------+ + | | Ether / IPv4 / NVGRE / Ether | + | +----------------------------------------+ + | | Ether / IPv6 / NVGRE | + | +----------------------------------------+ + | | Ether / IPv6 / NVGRE / Ether | + | +----------------------------------------+ + | | Ether / IPv4 / UDP / GTPU | + | +----------------------------------------+ + | | Ether / IPv6 / UDP / GTPU | + +----------------+----------------------------------------+ + | | IPv4 / TCP / payload len 128 | + | +----------------------------------------+ + | | IPv4 / TCP / payload len 800 | + | +----------------------------------------+ + | | IPv4 / TCP / payload len 801 | + | +----------------------------------------+ + | | IPv4 / TCP / payload len 1700 | + | +----------------------------------------+ + | inner packets | IPv4 / TCP / payload len 2500 | + | for TSO test +----------------------------------------+ + | | IPv6 / TCP / payload len 128 | + | +----------------------------------------+ + | | IPv6 / TCP / payload len 800 | + | +----------------------------------------+ + | | IPv6 / TCP / payload len 801 | + | +----------------------------------------+ + | | IPv6 / TCP / payload len 1700 | + | +----------------------------------------+ + | | IPv6 / TCP / payload len 2500 | + +----------------+----------------------------------------+ + +Notice that VxLAN needs DCF to configure, so testing of VxLAN may need to perform +on DCF. + Test case: csum fwd engine, use TSO =================================== @@ -210,3 +385,54 @@ Test IPv4() in scapy:: Test IPv6() in scapy:: sendp([Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="FE80:0:0:0:200:1FF:FE00:200", dst="3555:5555:6666:6666:7777:7777:8888:8888")/UDP(sport=1021,dport=1021)/Raw(load="\x50"*%s)], iface="%s") + + +Test case: csum fwd engine, use tunnel TSO +========================================== + +.. ............................................................................. +This test uses ``Scapy`` to send out one large tunneled TCP package. The dut +forwards package with tunnel TSO enable on tx port while rx port turns checksum +on. After package send out by TSO on tx port, the tester receives multiple small +TCP package. + +Turn off tx port by ethtool on tester:: + + ethtool -K rx off tx off tso off gso off gro off lro off + ip l set up + +Capture package rx port on tester:: + + tcpdump -n -e -i -s 0 -w /tmp/cap + +Launch the userland ``testpmd`` application on DUT as follows:: + + testpmd> set verbose 1 + # Enable hw checksum on rx port + testpmd> port stop all + testpmd> csum set ip hw 0 + testpmd> csum set tcp hw 0 + testpmd> csum set udp hw 0 + testpmd> csum set sctp hw 0 + testpmd> csum set outer-ip hw 0 + testpmd> csum set outer-udp hw 0 + testpmd> csum parse-tunnel on 0 + testpmd> set promisc 0 on + testpmd> port start all + + # Enable TSO on tx port + testpmd> tunnel_tso set 800 1 + # Set fwd engine and start + + testpmd> set fwd csum + testpmd> start + +Test IPv4() in scapy:: + + for one_outer_packet in outer_packet_list: + sendp([Ether(dst="%s", src="52:00:00:00:00:00")/one_outer_packet/IP(src="192.168.1.1",dst="192.168.1.2")/UDP(sport=1021,dport=1021)/Raw(load="\x50"*%s)], iface="%s") + +Test IPv6() in scapy:: + + for one_outer_packet in outer_packet_list: + sendp([Ether(dst="%s", src="52:00:00:00:00:00")/one_outer_packet/IPv6(src="FE80:0:0:0:200:1FF:FE00:200", dst="3555:5555:6666:6666:7777:7777:8888:8888")/UDP(sport=1021,dport=1021)/Raw(load="\x50"*%s)], iface="%s") From patchwork Fri Sep 30 05:49:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ke Xu X-Patchwork-Id: 117172 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C429DA034C; Fri, 30 Sep 2022 07:50:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BFA06410FA; Fri, 30 Sep 2022 07:50:28 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 2780540E5A for ; Fri, 30 Sep 2022 07:50:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664517027; x=1696053027; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kW3RoBdoG3MUNq0KjP0H1z1K+8kuYAJ6STyVAEctG9g=; b=Ui9YkXUtFNCmrDrpGgNx6r3R8k8vqIWzjTjKmhiJ4mORmgh8BHrAwHRb yQWztryL8fFs0F2Qg3Oz0T4brR4LduiNHnTR3XBZn/y9EJAWTUp0brat9 18f+b+OtbYMY9aIRVvdcBrQOEWB/xtkKr1y4jJKFPdw9K9bVwDCpM8SIp 9YtHGmwk44oOXKJJaxhSmltLgQnhWQJuUyx/elPRKv7B9fpoRDE7T8yD4 B6rIl48vYhrIFtgVZt14uzEzQNdD5tFDKP/AurALWaf9LzaIfqBlKkoK5 AvrkYVsn/tn3WSQSlVJrvsE/SK1XV/qyzn4tqH0UL4zu1ckFtQ1QNceZm Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10485"; a="363953969" X-IronPort-AV: E=Sophos;i="5.93,357,1654585200"; d="scan'208";a="363953969" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2022 22:50:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10485"; a="685157277" X-IronPort-AV: E=Sophos;i="5.93,357,1654585200"; d="scan'208";a="685157277" Received: from bmca4bf0170a856.sh.intel.com (HELO DPDK-XUKE-LAB.sh.intel.com) ([10.67.115.115]) by fmsmga008.fm.intel.com with ESMTP; 29 Sep 2022 22:50:23 -0700 From: Ke Xu To: dts@dpdk.org Cc: qi.fu@intel.com, lijuan.tu@intel.com, Ke Xu Subject: [DTS][PATCH V1 2/2] test_plans/vf_offload: format packet organization of previous cases into a table Date: Fri, 30 Sep 2022 05:49:30 +0000 Message-Id: <20220930054930.546563-3-ke1.xu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220930054930.546563-1-ke1.xu@intel.com> References: <20220930054930.546563-1-ke1.xu@intel.com> MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Format the packet organization into a table to make it better organized to read. Signed-off-by: Ke Xu --- test_plans/vf_offload_test_plan.rst | 30 +++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/test_plans/vf_offload_test_plan.rst b/test_plans/vf_offload_test_plan.rst index c0a7f850..cd40bf3d 100644 --- a/test_plans/vf_offload_test_plan.rst +++ b/test_plans/vf_offload_test_plan.rst @@ -86,7 +86,21 @@ Enable the IPv4/UDP/TCP/SCTP HW checksum offload on port 0:: TX threshold registers: pthresh=32 hthresh=8 wthresh=8 Configure the traffic generator to send the multiple packets for the following -combination: IPv4/UDP, IPv4/TCP, IPv4/SCTP, IPv6/UDP, IPv6/TCP. +combination: + + +----------------+----------------------------------------+ + | packet type | packet organization | + +================+========================================+ + | | Ether / IPv4 / UDP / payload | + | +----------------------------------------+ + | | Ether / IPv4 / TCP / payload | + | +----------------------------------------+ + | packets | Ether / IPv4 / SCTP / payload | + | for checksum +----------------------------------------+ + | offload test | Ether / IPv6 / UDP / payload | + | +----------------------------------------+ + | | Ether / IPv6 / TCP / payload | + +----------------+----------------------------------------+ Send packets with incorrect checksum, verify dpdk can rx it and report the checksum error, @@ -216,7 +230,19 @@ Enable the IPv4/UDP/TCP/SCTP SW checksum offload on port 0:: TX threshold registers: pthresh=32 hthresh=8 wthresh=8 Configure the traffic generator to send the multiple packets for the following -combination: IPv4/UDP, IPv4/TCP, IPv6/UDP, IPv6/TCP. +combination: + + +----------------+----------------------------------------+ + | packet type | packet organization | + +================+========================================+ + | | Ether / IPv4 / UDP / payload | + | +----------------------------------------+ + | packets | Ether / IPv4 / TCP / payload | + | for checksum +----------------------------------------+ + | offload test | Ether / IPv6 / UDP / payload | + | +----------------------------------------+ + | | Ether / IPv6 / TCP / payload | + +----------------+----------------------------------------+ Send packets with incorrect checksum, verify dpdk can rx it and report the checksum error,