From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 44115A00C4; Wed, 27 Jul 2022 05:51:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3A4ED40E03; Wed, 27 Jul 2022 05:51:17 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mails.dpdk.org (Postfix) with ESMTP id 2106B400D7 for ; Wed, 27 Jul 2022 05:51:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1658893875; x=1690429875; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ulr9ttt7plFEkRzhbqFMlH/X3wWqXhdT6CDPXfWxLTM=; b=IrnnUX1i/Ffl7azTmoqaIDisVuqDKTGeYl/wq1DkgTOjiaHW31JVwbY9 ooiY8OQ6ADEVsVxM+z9vkUYmv/jJTwp4BQo7key9CxZALJDyf1dbeFs0h l3OtJEojIKBOI+R5tKBtvTBp0B40fvIZrBIxvlxIpvUZWJ4hgfuzz/GMB EqKwfUObaBjKQUN6u3dI3rXWjSGABJk08JcZ6iR7IownmUk7bVbCNV5H7 3oZrghA6Wk/ltX+eHzGCU/qX9GD9nF149V7Q9SJpU2W7ALGuB8T1CICdW gIsy2ZazPeNB2RYkfjtXydvye8PnGXlVFHf3TiONUQ9u68jhMGog3XMQa g==; X-IronPort-AV: E=McAfee;i="6400,9594,10420"; a="286891998" X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="286891998" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jul 2022 20:51:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,194,1654585200"; d="scan'208";a="575798017" Received: from dpdk-qifu-cxl.sh.intel.com ([10.67.119.10]) by orsmga006.jf.intel.com with ESMTP; 26 Jul 2022 20:51:13 -0700 From: Qi Fu To: dts@dpdk.org Cc: Qi Fu Subject: [dts][PATCH V1 3/4]test_plans:add test plan for ice rss protocol agnostic flow offloading Date: Wed, 27 Jul 2022 11:50:53 +0800 Message-Id: <20220727035054.1412427-4-qi.fu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220727035054.1412427-1-qi.fu@intel.com> References: <20220727035054.1412427-1-qi.fu@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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 Add test plan for ice rss protocol agnostic flow offloading. Signed-off-by: Qi Fu --- ...e_rss_protocol_agnostic_flow_test_plan.rst | 368 ++++++++++++++++++ test_plans/index.rst | 1 + 2 files changed, 369 insertions(+) create mode 100644 test_plans/ice_rss_protocol_agnostic_flow_test_plan.rst diff --git a/test_plans/ice_rss_protocol_agnostic_flow_test_plan.rst b/test= _plans/ice_rss_protocol_agnostic_flow_test_plan.rst new file mode 100644 index 00000000..ab1e1b35 --- /dev/null +++ b/test_plans/ice_rss_protocol_agnostic_flow_test_plan.rst @@ -0,0 +1,368 @@ +.. Copyright (c) <2022>, Intel Corporation=0D + All rights reserved.=0D +=0D + Redistribution and use in source and binary forms, with or without=0D + modification, are permitted provided that the following conditions=0D + are met:=0D +=0D + - Redistributions of source code must retain the above copyright=0D + notice, this list of conditions and the following disclaimer.=0D +=0D + - Redistributions in binary form must reproduce the above copyright=0D + notice, this list of conditions and the following disclaimer in=0D + the documentation and/or other materials provided with the=0D + distribution.=0D +=0D + - Neither the name of Intel Corporation nor the names of its=0D + contributors may be used to endorse or promote products derived=0D + from this software without specific prior written permission.=0D +=0D + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS=0D + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT=0D + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS=0D + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE=0D + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,=0D + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES=0D + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR=0D + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)=0D + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,=0D + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)=0D + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED=0D + OF THE POSSIBILITY OF SUCH DAMAGE.=0D +=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=0D +CVL PF enable Protocol agnostic flow offloading in RSS=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=0D +=0D +Description=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +CVL PF enable protocol agnostic flow offloading in rss, that means we can = use raw packet filter instead of naming filter(legacy flow offloading).=0D +As the raw packet filter using spec and mask to describr pattern and input= set,=0D +the protocol agnostic flow offloading is more flexible and customizable co= mpared with legacy flow offloading.=0D +To reduce redundancy, we don't check all the patterns and input set which = is covered by naming filter test cases.=0D +this plan only cover below test hints to check the feasibility of protocol= agnostic flow offloading:=0D +=0D +1. try RSS with regular 5 tuples for any UDP or TCP packet=0D +2. try RSS with VXLAN inner IP match (make sure VXLAN tunnel port has been= configured either by DCF or swtichdev)=0D +3. try RSS with GTPU inner IP match=0D +4. try RSS with GTPU outer IP match=0D +5. try RSS with un-word-aligned key=0D +=0D +And all the rules are created by packageviewer(CVL parser emulator).=0D +..note::=0D +there will be conflict between raw packet filter and naming filter, so nee= d to disable default rss when testing raw packet filter.=0D +=0D +Prerequisites=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +=0D +Hardware=0D +--------=0D +Supportted NICs: columbiaville_25g/columbiaville_100g=0D +=0D +Software=0D +--------=0D +DPDK: http://dpdk.org/git/dpdk=0D +Scapy: http://www.secdev.org/projects/scapy/=0D +=0D +General Set Up=0D +--------------=0D +1. Compile DPDK::=0D +=0D + # CC=3Dgcc meson --werror -Denable_kmods=3DTrue -Dlibdir=3Dlib --defau= lt-library=3Dstatic =0D + # ninja -C -j 110=0D +=0D +2. Get the pci device id and interface of DUT and tester. =0D + For example, 0000:18:00.0 and 0000:18:00.1 is pci device id,=0D + ens785f0 and ens785f1 is interface::=0D +=0D + # ./usertools/dpdk-devbind.py -s=0D +=0D + 0000:18:00.0 'Device 159b' if=3Dens785f0 drv=3Dice unused=3Dvfio-pci=0D + 0000:18:00.1 'Device 159b' if=3Dens785f1 drv=3Dice unused=3Dvfio-pci=0D +=0D +3. Bind the DUT port to dpdk::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci =0D +=0D +4. Launch the userland ``testpmd`` application on DUT as follows and ::=0D +=0D + /app/dpdk-testpmd -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D + testpmd> rx_vxlan_port add 4789 0=0D + testpmd> start=0D +=0D +..note:: =0D +=0D + For , you can use "-c 0xf -n 1", you can also refer to te= stpmd doc for other setings.=0D +=0D +5. Import layers when start scapy::=0D +=0D + >>> import sys=0D + >>> from scapy.contrib.gtp import *=0D +=0D +=0D +Test Case=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +common steps=0D +------------=0D +toeplitz cases:=0D +1. validate rules.=0D +2. create rules and list rules.=0D +3. send a basic hit pattern packet,record the hash value.=0D + check the packet distributed to queue by rss.=0D +4. send hit pattern packets with changed input set in the rule.=0D + check the received packets have different hash value with basic packet.= ICE_=0D + check all the packets are distributed to queues by rss.=0D +5. send hit pattern packets with changed input set not in the rule.=0D + check the received packet have same hash value with the basic packet.=0D + check all the packets are distributed to queues by rss.=0D + note: if there is not this type packet in the case, omit this step.=0D +6. destroy the rule and list rule. check the flow list has no rule.=0D +=0D +symmetric cases:=0D +1. validate rules.=0D +2. create rules and list rules.=0D +3. send a basic hit pattern packet,record the hash value.=0D +4. send a hit pattern packet with switched value of input set in the rule.= =0D + check the received packets have same hash value.=0D + check both the packets are distributed to queues by rss.=0D +5. destroy the rule and list rule.=0D +6. send the packet in step 4.=0D + check the received packet has different hash value with which in step 3= (including the case has no hash value).=0D +=0D +Test case 1: ICE_RSS_MAC/IPv4/UDP=0D +---------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500001C0000000000110000C0A80014C0A800150016001700080000 pattern mask = 0000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFF= F00000000 / end actions rss queues end / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20",dst=3D= "192.168.0.21")/UDP(sport=3D22,dport=3D23)/Raw('x' * 80)],iface=3D"ens786f0= ")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.10.20",dst= =3D"192.168.0.21")/UDP(sport=3D22,dport=3D23)/Raw('x' * 80)],iface=3D"ens78= 6f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20",dst=3D= "192.168.10.21")/UDP(sport=3D22,dport=3D23)/Raw('x' * 80)],iface=3D"ens786f= 0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20",dst=3D= "192.168.0.21")/UDP(sport=3D32,dport=3D23)/Raw('x' * 80)],iface=3D"ens786f0= ")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20",dst=3D= "192.168.0.21")/UDP(sport=3D22,dport=3D33)/Raw('x' * 80)],iface=3D"ens786f0= ")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20",dst=3D= "192.168.0.21")/TCP(sport=3D22,dport=3D23)/Raw('x' * 80)],iface=3D"ens786f0= ")=0D +=0D +hit pattern but not defined input set::=0D +=0D +=0D +Test case 2: ICE_RSS_MAC/IPv6/TCP_sysmetric=0D +-------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 286DD6000000000140600CDCD910A222254988475111139001010CDCD910A22225498847511= 11390020200016001700000000000000005000000000000000 pattern mask 00000000000= 000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF= FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 / end action= s rss func symmetric_toeplitz queues end / end=0D +=0D +packets::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IPv6(dst=3D"CDCD:910A:2222:549= 8:8475:1111:3900:2020", src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010")/TC= P(sport=3D22,dport=3D23)/("X"*480)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IPv6(dst=3D"CDCD:910A:2222:549= 8:8475:1111:3900:2020", src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010")/TC= P(sport=3D23,dport=3D22)/("X"*480)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IPv6(dst=3D"CDCD:910A:2222:549= 8:8475:1111:3900:1010", src=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/TC= P(sport=3D22,dport=3D23)/("X"*480)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IPv6(dst=3D"CDCD:910A:2222:549= 8:8475:1111:3900:1010", src=3D"CDCD:910A:2222:5498:8475:1111:3900:2020")/TC= P(sport=3D23,dport=3D22)/("X"*480)], iface=3D"ens786f0")=0D +=0D +=0D +Test case 3: ICE_RSS_MAC/IPv4/UDP/VXLAN/MAC/IPv4/PAY=0D +----------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500004600000000001100000101010102020202000012B50032000008000000000003= 000000000000010000000000020800450000140000000000000000C0A80014C0A80015 patt= ern mask 000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 00000000000FFFFFFFFFFFFFFFF / end actions rss queues end / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.0.21")/Raw('x' * 80)],iface=3D"ens786f0= ")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.10.20",dst=3D"192.168.0.21")/Raw('x' * 80)],iface=3D"ens786f= 0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.10.21")/Raw('x' * 80)],iface=3D"ens786f= 0")=0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.10")/UDP()= /VXLAN()/Ether()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/Raw('x' * 80= )],iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(dst=3D"192.168.0.10")/UDP()= /VXLAN()/Ether()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/Raw('x' * 80= )],iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=3D33)/IP(= src=3D"192.168.0.20",dst=3D"192.168.0.21")/Raw('x' * 80)],iface=3D"ens786f0= ")=0D +=0D +=0D +Test case 4: ICE_RSS_MAC/IPv4/UDP/VXLAN/MAC/IPv4/UDP=0D +----------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500004E00000000001100000101010102020202000012B5003A000008000000000000= 0000000000000100000000000208004500001C0000000000110000C0A80014C0A8001500000= 00000080000 pattern mask 00000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000 / end actions r= ss queues end / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.0.21")/UDP()/("X"*480)], iface=3D"ens78= 6f0")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.10.20",dst=3D"192.168.0.21")/UDP()/("X"*480)], iface=3D"ens7= 86f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.10.21")/UDP()/("X"*480)], iface=3D"ens7= 86f0")=0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.10")/UDP()= /VXLAN()/Ether()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/UDP()/("X"*4= 80)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(dst=3D"192.168.0.10")/UDP()= /VXLAN()/Ether()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/UDP()/("X"*4= 80)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=3D33)/Eth= er()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/UDP()/("X"*480)], iface= =3D"ens786f0")=0D +=0D +=0D +Test case 5: ICE_RSS_MAC/IPv4/UDP/VXLAN/MAC/IPv4_sysmetric=0D +----------------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500004600000000001100000101010102020202000012B50032000008000000000000= 000000000000010000000000020800450000140000000000000000C0A80014C0A80015 patt= ern mask 000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 00000000000FFFFFFFFFFFFFFFF / end actions rss func symmetric_toeplitz queue= s end / end=0D +=0D +packets::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.0.21")/Raw('x' * 80)],iface=3D"ens786f0= ")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.21",dst=3D"192.168.0.20")/Raw('x' * 80)],iface=3D"ens786f0= ")=0D +=0D +=0D +Test case 6: ICE_RSS_IPv4/UDP/VXLAN/MAC/IPv4_inner-l3-src-only=0D +--------------------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500004600000000001100000101010102020202000012B50032000008000000000000= 000000000000010000000000020800450000140000000000000000C0A80014C0A80015 patt= ern mask 000000000000000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 00000000000FFFFFFFF00000000 / end actions rss queues end / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.0.21")/("X"*480)], iface=3D"ens786f0")= =0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.10.20",dst=3D"192.168.0.21")/("X"*480)], iface=3D"ens786f0")= =0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(= src=3D"192.168.0.20",dst=3D"192.168.10.21")/("X"*480)], iface=3D"ens786f0")= =0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.10")/UDP()= /VXLAN()/Ether()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/("X"*480)], = iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(dst=3D"192.168.0.10")/UDP()= /VXLAN()/Ether()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/("X"*480)], = iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=3D22)/Eth= er()/IP(src=3D"192.168.0.20",dst=3D"192.168.0.21")/("X"*480)], iface=3D"ens= 786f0")=0D +=0D +=0D +Test case 7: ICE_RSS_MAC/IPV4/UDP/GTPU/IPV4=0D +-------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 20800450000380000000000110000C0A80014C0A80015000008680024000030FF0014000000= 00450000140000000000000000C0A80A14C0A80A15 pattern mask 0000000000000000000= 000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000= 000000000000000000000000000000FFFFFFFFFFFFFFFF / end actions rss queues end= / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IP(src=3D"192.168.10.20", dst=3D"192.168.10.21")/Raw('x'*20)], if= ace=3D"ens786f0")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.30", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IP(src=3D"192.168.10.20", dst=3D"192.168.10.21")/Raw('x'*20)], if= ace=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.31")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IP(src=3D"192.168.10.20", dst=3D"192.168.10.21")/Raw('x'*20)], if= ace=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IP(src=3D"192.168.10.30", dst=3D"192.168.10.21")/Raw('x'*20)], if= ace=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IP(src=3D"192.168.10.20", dst=3D"192.168.10.31")/Raw('x'*20)], if= ace=3D"ens786f0")=0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 567)/IP(src=3D"192.168.10.20", dst=3D"192.168.10.21")/Raw('x'*20)], iface= =3D"ens786f0")=0D +=0D +=0D +Test case 8: ICE_RSS_MAC/IPV4/UDP/GTPU/IPV6/UDP_outer-l3=0D +--------------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 20800450000540000000000110000C0A80014C0A80015000008680040000030FF0030000000= 006000000000081100CDCD910A222254988475111139001010CDCD910A22225498847511113= 90020210000000000080000 pattern mask 00000000000000000000000000000000000000= 00000000000000FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 00000000 / end actions rss queues end / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD= :910A:2222:5498:8475:1111:3900:2021")/UDP()/Raw('x'*20)], iface=3D"ens786f0= ")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.21", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD= :910A:2222:5498:8475:1111:3900:2021")/UDP()/Raw('x'*20)], iface=3D"ens786f0= ")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.22")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD= :910A:2222:5498:8475:1111:3900:2021")/UDP()/Raw('x'*20)], iface=3D"ens786f0= ")=0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1011", dst=3D"CDCD= :910A:2222:5498:8475:1111:3900:2021")/UDP()/Raw('x'*20)], iface=3D"ens786f0= ")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD= :910A:2222:5498:8475:1111:3900:2022")/UDP()/Raw('x'*20)], iface=3D"ens786f0= ")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12)/IPv6(src=3D"CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD:910A:= 2222:5498:8475:1111:3900:2021")/UDP()/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +=0D +Test case 9: ICE_RSS_MAC/IPV4/UDP/GTPU/EH/IPV4/UDP_innersysmetric=0D +-----------------------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 20800450000440000000000110000C0A80014C0A80014000008680030000034FF0024000000= 0000000085010000004500001C0000000000110000C0A80114C0A801150000000000080000 = pattern mask 0000000000000000000000000000000000000000000000000000FFFFFFFFFF= FFFFFF000000000000000000000000000000000000000000000000000000000000000000000= 000FFFFFFFFFFFFFFFF0000000000000000 / end actions rss func symmetric_toepli= tz queues end / end=0D +=0D +packets::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer()/IP(src=3D"192.168.1.20", dst=3D"192.168.= 1.21")/UDP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer()/IP(src=3D"192.168.1.21", dst=3D"192.168.= 1.20")/UDP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.21", dst= =3D"192.168.0.20")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer()/IP(src=3D"192.168.1.20", dst=3D"192.168.= 1.21")/UDP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.21", dst= =3D"192.168.0.20")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer()/IP(src=3D"192.168.1.21", dst=3D"192.168.= 1.20")/UDP()/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +=0D +Test case 10: ICE_RSS_MAC/IPV4/UDP/GTPU/UL/IPV4_inner-l3-dst-only=0D +-----------------------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500003C0000000000110000C0A80014C0A80015000008680028000034FF001C000000= 000000008501100000450000140000000000000000C0A80114C0A80115 pattern mask 000= 000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000= 00000000000000000000000000000000F000000000000000000000000000000000000000000= 000 / end actions rss queues end / end=0D +=0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D1, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.21")/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.10.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0= x12345678)/GTPPDUSessionContainer(type=3D1, P=3D1, QFI=3D0x34)/IP(src=3D"19= 2.168.1.20", dst=3D"192.168.1.21")/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.21")/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.10.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D1, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.21")/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D1, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.11.20", dst=3D"192.168.1.21")/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D1, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.11.21")/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +=0D +Test case 11: ICE_RSS_MAC/IPV4/UDP/GTPU/DL/IPV4/TCP_un-word-aligned key=0D +-----------------------------------------------------------------------=0D +rule::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 20800450000500000000000110000C0A80014C0A8001500000868003C000034FF0030000000= 000000008501000000450000280000000000060000C0A80114C0A8011500000000000000000= 00000005000000000000000 pattern mask 00000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000F00= 000000000000000000000000000FFFF00000000000000000000000000000000000000000000= 00000000 / end actions rss queues end / end=0D + =0D +basic packet::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +hit pattern and defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"191= .168.1.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .161.1.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D1, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +hit pattern but not defined input set::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.10.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.10.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0= x12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"19= 2.168.1.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")= =0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.11.20", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")= =0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.21", dst=3D"192.168.1.21")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 12345678)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192= .168.1.20", dst=3D"192.168.1.22")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 123)/GTPPDUSessionContainer(type=3D0, P=3D1, QFI=3D0x34)/IP(src=3D"192.168.= 1.20", dst=3D"192.168.1.22")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP(src=3D"192.168.0.20", dst= =3D"192.168.0.21")/UDP(dport=3D2152)/GTP_U_Header(gtp_type=3D255, teid=3D0x= 123)/GTPPDUSessionContainer(pdu_type=3D0, qos_flow=3D0x12)/IP(src=3D"192.16= 8.1.20", dst=3D"192.168.1.22")/TCP()/Raw('x'*20)], iface=3D"ens786f0")=0D +=0D +=0D +Test case 12: ICE_RSS_multi-rules_MAC/IPv4/UDP/VXLAN/IPv6=0D +---------------------------------------------------------=0D +1. create 2 rules, same pattern, different inputset::=0D +=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500004C00000000001100000101010102020202000012B50038000008000000000000= 006000000000000000CDCD910A222254988475111139001010CDCD910A22225498847511113= 9002021 pattern mask 000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 0000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF / end actions rss queue= s end / end=0D + flow create 0 ingress pattern raw pattern spec 00112233445500000000000= 208004500004C00000000001100000101010102020202000012B50038000008000000000000= 006000000000000000CDCD910A222254988475111139001010CDCD910A22225498847511113= 9002021 pattern mask 000000000000000000000000000000000000000000000000000000= 00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFF= FFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 / end actions rss queue= s end / end=0D +=0D +2. send basic packet and save hash value.=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/IPv6(src=3D= "CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD:910A:2222:5498:8475:= 1111:3900:2021")/("X"*480)], iface=3D"ens786f0")=0D +=0D +3. send packets hit rules, check the hash value of first packet is same wi= th basic packet, the second packet is different::=0D +=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/IPv6(src=3D= "CDCD:910A:2222:5498:8475:1111:3900:1010", dst=3D"CDCD:910A:2222:5498:8475:= 1111:3900:2022")/("X"*480)], iface=3D"ens786f0")=0D + sendp([Ether(dst=3D"00:11:22:33:44:55")/IP()/UDP()/VXLAN()/IPv6(src=3D= "CDCD:910A:2222:5498:8475:1111:3900:1011", dst=3D"CDCD:910A:2222:5498:8475:= 1111:3900:2021")/("X"*480)], iface=3D"ens786f0") \ No newline at end of file diff --git a/test_plans/index.rst b/test_plans/index.rst index 4b71cf03..d4d10cb8 100644 --- a/test_plans/index.rst +++ b/test_plans/index.rst @@ -38,6 +38,7 @@ The following are the test plans for the DPDK DTS automat= ed test system. ice_ecpri_test_plan ice_fdir_test_plan ice_fdir_protocol_agnostic_flow_test_plan + ice_rss_protocol_agnostic_flow_test_plan ice_ip_fragment_rte_flow_test_plan ice_iavf_ip_fragment_rte_flow_test_plan ice_iavf_rss_configure_test_plan --=20 2.25.1