From patchwork Fri Nov 25 09:12:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ke Xu X-Patchwork-Id: 120144 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 E28BBA0093; Fri, 25 Nov 2022 10:14:01 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DBD1A410EA; Fri, 25 Nov 2022 10:14:01 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 031DD40150 for ; Fri, 25 Nov 2022 10:13:59 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669367640; x=1700903640; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9Y/0fhpl5cR9yZTKwizS1VcudfenuYEFn0OFHNej9yo=; b=gyN2+HX//c2MR60BQODPqwfk59azMzX6r4xhWGpx9SJbQtmCbf/rvSBL UuxV0ygo0GEUYSCFXc6MVVRieL32GMWQpi0fa5+uZWfJaj3BuR57s7+f8 usa1nGhTKh4wIMYX7rT4J1zhymmY1tBqZsf7yc7tVxU5Sr4wHKJ+pfuf0 4HptACC37jjRz+SVTcV0AGIh7Ldgj5puBxqmdcArNapqPyX7vHgzNjPZ2 NANg0T16ouF0YqumAxoO1Addlk8pinFhNfsJ9UYzOCptGTJGPWltOXHJo ughwJT5y4oiATUZ/6y1qBQASkdO2I1g4SohgJLs/9GSRH9xpCnVUHcygy Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10541"; a="341348006" X-IronPort-AV: E=Sophos;i="5.96,193,1665471600"; d="scan'208";a="341348006" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Nov 2022 01:13:59 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10541"; a="593169064" X-IronPort-AV: E=Sophos;i="5.96,193,1665471600"; d="scan'208";a="593169064" Received: from dpdk-xuke-lab.sh.intel.com ([10.67.114.198]) by orsmga003.jf.intel.com with ESMTP; 25 Nov 2022 01:13:57 -0800 From: Ke Xu To: dts@dpdk.org Cc: qi.fu@intel.com, lijuan.tu@intel.com, ke1.xu@intel.com Subject: [DTS][PATCH V2 1/2] test_plans/vf_offload: add test cases for tunneling packets Date: Fri, 25 Nov 2022 17:12:25 +0800 Message-Id: <20221125091226.383666-2-ke1.xu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221125091226.383666-1-ke1.xu@intel.com> References: <20221125091226.383666-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. Added new case HW tunneling checksum offload check, covering tunnel packets for HW checksum offload. Added new packets to TSO prerequisites and added new case csum fwd engine, use tunnel TSO, covering tunnel packets for HW TSO. Signed-off-by: Ke Xu --- test_plans/vf_offload_test_plan.rst | 225 ++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) diff --git a/test_plans/vf_offload_test_plan.rst b/test_plans/vf_offload_test_plan.rst index c5e720f2..8a5e36af 100644 --- a/test_plans/vf_offload_test_plan.rst +++ b/test_plans/vf_offload_test_plan.rst @@ -113,6 +113,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 ==================================== @@ -183,6 +273,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 =================================== @@ -226,3 +401,53 @@ 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 Nov 25 09:12:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ke Xu X-Patchwork-Id: 120145 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 0518FA0032; Fri, 25 Nov 2022 10:14:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 02BAF40A8A; Fri, 25 Nov 2022 10:14:03 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 61ED840A8A for ; Fri, 25 Nov 2022 10:14:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669367641; x=1700903641; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d3k6QWXTrDI9tz0zeCHBl5G4chQzMJOyZvtRUuoOCv0=; b=DY1XdNqc3TnGDf+pxdIRo384aDZTI3O7p8yjGLpsxZdavayKA2W6XgB3 tKDnrL8C412avXtWG9tVputxK8AqwfxDn1Pp7qR8GGZygrNsDcDqvOLjS AJmSYKzp5hnzDL0xJSUFL7Hc1e8Hcj3kff+b+DxMKCFbPRVAltLEUcwtO KIHPxWUQlpU40lvW4FCEAzRteOouY04dxJPx4tol6q68otVJ6t8MmBPv4 OnADi3cVc+cHVweLVHN3u0q2xgXGFqkxWr/1MMauwcUBfIDz0W36fcFTc 450P35I6ELPgPRuhQpyaG+gZsT65JWdmR3XurqOPY28r2V5Ko7QPpwMEk g==; X-IronPort-AV: E=McAfee;i="6500,9779,10541"; a="341348012" X-IronPort-AV: E=Sophos;i="5.96,193,1665471600"; d="scan'208";a="341348012" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Nov 2022 01:14:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10541"; a="593169074" X-IronPort-AV: E=Sophos;i="5.96,193,1665471600"; d="scan'208";a="593169074" Received: from dpdk-xuke-lab.sh.intel.com ([10.67.114.198]) by orsmga003.jf.intel.com with ESMTP; 25 Nov 2022 01:13:59 -0800 From: Ke Xu To: dts@dpdk.org Cc: qi.fu@intel.com, lijuan.tu@intel.com, ke1.xu@intel.com Subject: [DTS][PATCH V2 2/2] test_plans/vf_offload: format packet organization of previous cases into a table Date: Fri, 25 Nov 2022 17:12:26 +0800 Message-Id: <20221125091226.383666-3-ke1.xu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221125091226.383666-1-ke1.xu@intel.com> References: <20221125091226.383666-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 8a5e36af..943de179 100644 --- a/test_plans/vf_offload_test_plan.rst +++ b/test_plans/vf_offload_test_plan.rst @@ -102,7 +102,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, @@ -232,7 +246,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,