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 58731A034C; Tue, 30 Aug 2022 05:34:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 51939427F6; Tue, 30 Aug 2022 05:34:01 +0200 (CEST) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id DE9C340F17 for ; Tue, 30 Aug 2022 05:33:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1661830440; x=1693366440; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uf1iya7foAthMA5sMh9bzxZywhsog1U1hP4Jh0zZ3kU=; b=Vl0t6/C6BRC/c8GPrs9lOZdN3uEkeGkEvzXrpjyiD4j1yaF5se3OucgP cEXbQjTwB7LNJ9yEdErElOxwS+gPY8vbVPZ3xXmpQ6O8sln78PDeQ4TEM OOzjBTZdoeZ4OWpq27czfI8vEOeY41zIsRpWzlWNGvMIuyIQXxvN+hoOr 1l1oXMr3muxVGqVhk6HYIYZgvlnkvNVHUQOswY3c7Y3QeC4VlaBS4p0OO Yx6eMhUxH66EtYJrE6XynwlTE06+R+LBpHJnw29lz/MPFR/uAofTaGLfs 8gODfdZkW30QVdPQ1dr7aF1a48f5sihukrjbN+HBykjMYJmNLhHFxMRRG A==; X-IronPort-AV: E=McAfee;i="6500,9779,10454"; a="295070816" X-IronPort-AV: E=Sophos;i="5.93,274,1654585200"; d="scan'208";a="295070816" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Aug 2022 20:33:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,274,1654585200"; d="scan'208";a="856955492" Received: from dpdk-qifu-cxl.sh.intel.com ([10.67.119.10]) by fmsmga006.fm.intel.com with ESMTP; 29 Aug 2022 20:33:58 -0700 From: Qi Fu To: dts@dpdk.org Cc: Qi Fu Subject: [dts][PATCH V3 4/4]test_plans:add test plan for iavf rss protocol agnostic flow Date: Tue, 30 Aug 2022 11:33:42 +0800 Message-Id: <20220830033342.4006428-5-qi.fu@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220830033342.4006428-1-qi.fu@intel.com> References: <20220830033342.4006428-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 iavf rss protocol agnostic flow offloading. Signed-off-by: Qi Fu --- ...f_rss_protocol_agnostic_flow_test_plan.rst | 350 ++++++++++++++++++ test_plans/index.rst | 1 + 2 files changed, 351 insertions(+) create mode 100644 test_plans/iavf_rss_protocol_agnostic_flow_test_plan.rst diff --git a/test_plans/iavf_rss_protocol_agnostic_flow_test_plan.rst b/tes= t_plans/iavf_rss_protocol_agnostic_flow_test_plan.rst new file mode 100644 index 00000000..97767837 --- /dev/null +++ b/test_plans/iavf_rss_protocol_agnostic_flow_test_plan.rst @@ -0,0 +1,350 @@ +.. SPDX-License-Identifier: BSD-3-Clause=0D + Copyright(c) 2022 Intel Corporation\=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=0D +IAVF 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=0D +=0D +Description=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +IAVF enable protocol agnostic flow offloading in rss, that means we can us= e 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(ICE 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. Generate 2 VF from PF(0000:18:00.0 here), ::=0D +=0D + # echo 2 > /sys/bus/pci/devices/0000\:18\:00.0/sriov_numvfs=0D +=0D +3. Get the pci device id and interface of DUT and tester::=0D +=0D + # ./usertools/dpdk-devbind.py -s=0D +=0D + 0000:18:01.0 'Ethernet Adaptive Virtual Function 1889' if=3Dens785f0v0= drv=3Diavf unused=3Dvfio-pci=0D + 0000:18:01.1 'Ethernet Adaptive Virtual Function 1889' if=3Dens785f0v1= drv=3Diavf unused=3Dvfio-pci=0D +=0D +4. set VF0 trust on::=0D +=0D + # ip link set ens785f0 vf 0 trust on=0D +=0D +5. set mac address for VF1::=0D +=0D + # ip link set ens785f0 vf 1 mac 00:11:22:33:44:55=0D +=0D +6. Bind the DUT port to dpdk::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci =0D +=0D +7. Launch the userland ``testpmd`` application on DUT as follows and ::=0D +=0D + /app/dpdk-testpmd -a 0000:18:01.0,cap=3D= dcf -a 0000:18:01.1 -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D + testpmd> port config 0 udp_tunnel_port add vxlan 0x12b5=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 +8. 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= =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 +=0D +..note:: =0D + if there is not this type packet in the case, omit this step.=0D +=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: VF_RSS_MAC/IPv4/UDP=0D +--------------------------------=0D +rule::=0D +=0D + flow create 1 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 +=0D +Test case 2: VF_RSS_MAC/IPv6/TCP_sysmetric=0D +------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPv4/UDP/VXLAN/MAC/IPv4/PAY=0D +---------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPv4/UDP/VXLAN/MAC/IPv4/UDP=0D +---------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPv4/UDP/VXLAN/MAC/IPv4_sysmetric=0D +---------------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_IPv4/UDP/VXLAN/MAC/IPv4_inner-l3-src-only=0D +-------------------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPV4/UDP/GTPU/IPV4=0D +------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPV4/UDP/GTPU/IPV6/UDP_outer-l3=0D +-------------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPV4/UDP/GTPU/EH/IPV4/UDP_innersysmetric=0D +----------------------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPV4/UDP/GTPU/UL/IPV4_inner-l3-dst-only=0D +----------------------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_MAC/IPV4/UDP/GTPU/DL/IPV4/TCP_un-word-aligned key=0D +----------------------------------------------------------------------=0D +rule::=0D +=0D + flow create 1 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: VF_RSS_multi-rules_MAC/IPv4/UDP/VXLAN/IPv6=0D +--------------------------------------------------------=0D +1. create 2 rules, same pattern, different inputset::=0D +=0D + flow create 1 ingress pattern raw pattern spec 00112233445500000000000= 208004500004C00000000001100000101010102020202000012B50038000008000000000000= 006000000000000000CDCD910A222254988475111139001010CDCD910A22225498847511113= 9002021 pattern mask 000000000000000000000000000000000000000000000000000000= 000000000000000000000000000000000000000000000000000000000000000000000000000= 0000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF / end actions rss queue= s end / end=0D + flow create 1 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 1eb13384..d641c306 100644 --- a/test_plans/index.rst +++ b/test_plans/index.rst @@ -77,6 +77,7 @@ The following are the test plans for the DPDK DTS automat= ed test system. iavf_flexible_descriptor_test_plan iavf_package_driver_error_handle_test_plan iavf_fdir_protocol_agnostic_flow_test_plan + iavf_rss_protocol_agnostic_flow_test_plan ieee1588_test_plan inline_ipsec_test_plan interrupt_pmd_test_plan --=20 2.25.1