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 98B98A034F; Mon, 7 Feb 2022 15:55:13 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 70724410F3; Mon, 7 Feb 2022 15:55:13 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 57321410EA for ; Mon, 7 Feb 2022 15:55:11 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1644245711; x=1675781711; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=eQgMR7dpCZr3yjKFecngWpV4O/I7cy3fipjkILWOyO4=; b=WJZWbaBDKipWlMmuaLAek/ps5EX3C3UtSjl/PjYaV0qwq5b3zseNLXaX /1S0Xle6ZzSODTvOElSQSOHd7WsFidQSGOy0dCjCigY5BKEYDVquTbJZc Q9ubCh8WF8QrxW2/UWeYfWInPaCc8JkPhOLQ4hs/ZKkFJ+NULwFcixHIi zmMdsKTNYKJDjw3oUkN4AR49nQg8j0wM9zmdC0fvtOsJb93VCBasnomfj 3vmdpxLOWX/WN5NfFnfDkoaF/cltFpVhjC1L+d+YPKQri0qf8K+8dt8mx rCjjns3s38Yvl9HHhrySIeT1Ez4pLK+riQYVjbzQhe0mRU/5DiVz8anIt g==; X-IronPort-AV: E=McAfee;i="6200,9189,10250"; a="248495063" X-IronPort-AV: E=Sophos;i="5.88,350,1635231600"; d="scan'208";a="248495063" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Feb 2022 06:55:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,350,1635231600"; d="scan'208";a="525158759" Received: from dpdk-qifu-cxl.sh.intel.com ([10.67.119.122]) by orsmga007.jf.intel.com with ESMTP; 07 Feb 2022 06:55:08 -0800 From: Qi Fu To: dts@dpdk.org Cc: Qi Fu Subject: [dts][PATCH V1]cvl_flow_priority:update pipeline mode test cases Date: Tue, 8 Feb 2022 07:29:46 +0800 Message-Id: <20220207232946.104254-1-qi.fu@intel.com> X-Mailer: git-send-email 2.25.1 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 merge the pipeline mode test cases in rteflow_priority_test_plan.rst into cvl_flow_priority_test_plan.rst. So that cvl pf flow priority test can use 1 test plan to cover. Signed-off-by: Qi Fu --- test_plans/cvl_flow_priority_test_plan.rst | 1736 +++++++++++--------- test_plans/rteflow_priority_test_plan.rst | 338 ---- 2 files changed, 979 insertions(+), 1095 deletions(-) delete mode 100644 test_plans/rteflow_priority_test_plan.rst diff --git a/test_plans/cvl_flow_priority_test_plan.rst b/test_plans/cvl_fl= ow_priority_test_plan.rst index a04e12dc..88b0fad2 100644 --- a/test_plans/cvl_flow_priority_test_plan.rst +++ b/test_plans/cvl_flow_priority_test_plan.rst @@ -1,757 +1,979 @@ -.. Copyright (c) <2021>, Intel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - - Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - OF THE POSSIBILITY OF SUCH DAMAGE. - -=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 -CVL Support Flow Priority in PF -=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 - -Description -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -In CVL PF rte_flow distribution mode(non-pipeline mode), a flow with prior= ity =3D 1 will be programmed into switch filter, -a flow with priority =3D 0 will be programmed into switch first then fdir.= =20 -Currently only support priority 0 and 1. 1 means low priority and 0 means = high priority. -When looking up rule table, matched pkt will hit the high priority rule fi= rstly, -it will hit the low priority rule only when there is no high priority rule= exist. - - -Prerequisites -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Topology --------- -1node/1nic/2port/fwd -2node/1nic/1port/loopback - -Hardware --------- -Supportted NICs: columbiaville_25g/columbiaville_100g - -Software --------- -DPDK: http://dpdk.org/git/dpdk -Scapy: http://www.secdev.org/projects/scapy/ - -General Set Up --------------- -1. Compile DPDK:: - - # CC=3Dgcc meson --werror -Denable_kmods=3DTrue -Dlibdir=3Dlib --defau= lt-library=3Dstatic - # ninja -C -j 110 - -2. Get the pci device id and interface of DUT and tester.=20 - For example, 0000:18:00.0 and 0000:18:00.1 is pci device id, - ens785f0 and ens785f1 is interface:: - - # ./usertools/dpdk-devbind.py -s - - 0000:18:00.0 'Device 159b' if=3Dens785f0 drv=3Dice unused=3Dvfio-pci - 0000:18:00.1 'Device 159b' if=3Dens785f1 drv=3Dice unused=3Dvfio-pci - -3. Bind the DUT port to dpdk:: - - # ./usertools/dpdk-devbind.py -b vfio-pci - -4. Launch the userland ``testpmd`` application on DUT as follows and :: - - /app/dpdk-testpmd -- -i --rxq=3D --txq=3D - testpmd> set fwd rxonly - testpmd> set verbose 1 - testpmd> rx_vxlan_port add 4789 0 - testpmd> start - -..note::=20 - - For , you can use "-c 0xf -n 1", you can also refer to te= stpmd doc for other setings. - - -Test Case -=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Common Steps ------------- -1. validate rules: two rules have same pattern, input set but different pr= iority and actions. -2. create rules and list rules. -3. send matched packets, check the action hiting the rule with priority 0. -4. send mismatched packets, check the packets will not hit any rules. -5. destroy rule with priority 0, list rules. -6. send matched packets, check the action hiting the rule with priority 1. -7. send mismatched packets, check the packets will not hit any rules. -8. recreate rules which priority is 0, list rule. -9. destroy rule with priority 1, list rules. -10. send matched packets, check the action hiting the rule with priority 0. -11. send mismatched packets, check the packets will not hit any rules. -12. destroy rule with priority 0, list rules. -13. send matched packets, check the packets will not hit any rules. - -All the packets in this test plan use below settings: -dst mac: 68:05:ca:8d:ed:a8 -dst mac change inputset: 68:05:ca:8d:ed:a3 -ipv4 src: 192.168.0.1 -ipv4 dst: 192.168.0.2 -ipv4 src change inputset: 192.168.0.3 -ipv4 dst change inputset: 192.168.0.4 -inner ipv4 src: 192.168.1.1 -inner ipv4 src change inputset: 192.168.1.2 -inner ipv4 dst: 192.168.1.3 -inner ipv4 dst change inputset: 192.168.1.4 -ipv6 src: CDCD:910A:2222:5498:8475:1111:3900:1536 -ipv6 dst: CDCD:910A:2222:5498:8475:1111:3900:2020 -ipv6 src change inputset: CDCD:910A:2222:5498:8475:1111:3900:1538 -ipv6 dst change inputset: CDCD:910A:2222:5498:8475:1111:3900:2028 -tos: 4 -tos change inputset: 5 -ttl: 2 -ttl change inputset: 9 -sport: 23 -sport change inputset: 33 -dport: 24 -dport change inputset: 34 -tc: 3 -tc change inputset: 7 -tni: 0x8 -tni change inputset: 0x1 -ethertype: 0x8863 -ethertype change inputset: 0x8864 -tci: 1 -tci change inputset: 2 -seid: 3 -seid change inputset: 4 -ipv4 proto_id: 0x0021 -ipv6 proto_id: 0x0057 -LCP proto_id: 0xc021 -IPCP proto_id: 0x8021 - -Support Pattern and Input Set ------------------------------ -.. table:: - - +---------------------+-------------------------------+---------------= ----------------------------+ - | Packet Types | Pattern | input set (non= -pipeline mode) | - +=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=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+ - | | MAC_IPV4_FRAG | N/A = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_PAY | [Source IP], [= Dest IP],[TOS],[TTL] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_UDP_PAY | [Source IP], [= Dest IP],[TOS],[TTL], | - | +-------------------------------+---------------= ----------------------------+ - | IPv4/IPv6 + TCP/UDP | MAC_IPV4_TCP | [Source IP], [= Dest IP],[TOS],[TTL], | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV6 | [Source IP], [= Dest IP] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV6_UDP_PAY | [Source IP], [= Dest IP],[TOS],[TTL], | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV6_TCP | [Source IP], [= Dest IP],[TOS],[TTL], | - +---------------------+-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_IPV4_FRAG | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Source = IP], [Inner Dest IP] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_IPV4_PAY | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Source = IP], [Inner Dest IP] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_IPV4_UDP_PAY | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Source = IP], [Inner Dest IP], | - | | | [Inner Source = Port], [Inner Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_IPV4_TCP | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Source = IP], [Inner Dest IP], | - | | | [Inner Source = Port], [Inner Dest Port] | - | tunnel +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_MAC_IPV4_FRAG | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Dest MA= C], | - | | | [Inner Source = IP], [Inner Dest IP] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_MAC_IPV4_PAY | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Dest MA= C], | - | | | [Inner Source = IP], [Inner Dest IP] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_MAC_IPV4_UDP_PAY | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Dest MA= C], | - | | | [Inner Source = IP],[Inner Dest IP], | - | | | [Inner Source = Port], [Inner Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_IPV4_TUN_MAC_IPV4_TCP | [Out Dest IP],= [VNI/GRE_KEY], | - | | | [Inner Dest MA= C], | - | | | [Inner Source = IP], [Inner Dest IP], | - | | | [Inner Source = Port], [Inner Dest Port] | - +---------------------+-------------------------------+---------------= ----------------------------+ - | ethertype filter | ethertype filter_PPPOED | [Ether type] = | - +---------------------+-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV4_PAY | [Dest MAC], [V= LAN], [seid], | - | | _session_id_proto_id | [pppoe_proto_i= d] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV6_PAY | [Dest MAC], [VLA= N], [seid], | - | | _session_id_proto_id | [pppoe_proto_i= d] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV4_PAY_session_id | [Dest MAC], [s= eid], [pppoe_proto_id] | - | | _proto_id | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV6_PAY_session_id | [Dest MAC], [s= eid], [pppoe_proto_id] | - | | _proto_id | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV4_PAY_IP_address | [Source IP], [= Dest IP] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV4_UDP_PAY | [Source IP], [= Dest IP], | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV4_UDP_PAY | [Source IP], [= Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV4_TCP_PAY | [Source IP], [= Dest IP], | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV4_TCP_PAY | [Source IP], [= Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV6_PAY_IP_address | [Source IP], [= Dest IP] | - | PPPOES +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV6_UDP_PAY | [Source IP], [= Dest IP], | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV6_UDP_PAY | [Source IP], [= Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV6_TCP_PAY | [Source IP], [= Dest IP], | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPV6_TCP_PAY | [Source IP], [= Dest IP], | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV4_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | _IP_address | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV4_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV4_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV4_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV4_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV6_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | _IP_address | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV6_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV6_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV6_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | | [Source Port],= [Dest Port] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPV6_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] | - | | _non_src_dst_port | = | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_LCP_PAY | [Dest MAC], [s= eid], [pppoe_proto_id] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_PPPOE_IPCP_PAY | [Dest MAC], [s= eid], [pppoe_proto_id] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_LCP_PAY | [Dest MAC], [V= LAN], [seid], | - | | | [pppoe_proto_i= d] | - | +-------------------------------+---------------= ----------------------------+ - | | MAC_VLAN_PPPOE_IPCP_PAY | [Dest MAC], [V= LAN], [seid], | - | | | [pppoe_proto_i= d] | - +---------------------+-------------------------------+---------------= ----------------------------+ - -..note:: - - the basic switch function of supported pattern is covered by cvl_switc= h_filter_test_plan.rst and cvl_switch_filter_pppoe_test_plan.rst. - this test plan is designed to check the flow priority in switch, so we= only select some patterns not all matrix in test plan. - - -Test Case 1: MAC_IPV4_PAY -------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / ipv4 src is dst is tos is ttl is / end= actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / ipv4 src is dst is tos is ttl is / end= actions queue index 4 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"") - -mismatched packets:: - - >>> sendp([Ether(dst=3D"")/IP(src=3D"= ",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"") - >>> sendp([Ether(dst=3D"")/IP(src=3D"= ",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"") - >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"") - >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"") - >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"") - - -Test Case 2: MAC_IPV4_UDP_PAY ------------------------------ -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is tos is / udp src is dst is = / end actions rss queues 4 5 end / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is tos is / udp src is dst is = / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)= /UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "") - >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "") - >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "") - >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)= /UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "") - >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)= /UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "") - - -Test Case 3: MAC_IPV6_PAY -------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is dst is / end actions rss queues 4 5 end / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv6 src is dst is / end actions queue index 8 / end - -matched packets:: - - >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/("X"*480= )], iface=3D"") - >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/IPv6ExtH= drFragment()/("X"*480)], iface=3D"") - -mismatched packets:: - - >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/("X"*480)], iface=3D"") - >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/("X"*480)], iface=3D"") - >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/IPv6ExtHdrFragment()/("X"*480)], iface=3D"") - >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/IPv6ExtHdrFragment()/("X"*480)], iface=3D"") - - -Test Case 4: MAC_IPV6_TCP -------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is tc is / tcp src is dst is / end actions rss q= ueues 4 5 end / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv6 dst is tc is / tcp src is dst is / end actions queue= index 3 / end - -matched packets:: - - >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)= /TCP(sport=3D,dport=3D23)/Raw("x"*80)],iface=3D"",= count=3D1) - -mismatched packets:: - - >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1) - >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1) - >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)= /TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1) - >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)= /TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1) - - -Test Case 5: MAC_IPV4_VXLAN_IPV4_FRAG -------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions rss que= ues 2 3 end / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions queue i= ndex 5 / end - -matched packets:: - - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count= =3D1) - -mismatched packets:: - - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst=3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count= =3D1) - - -Test Case 6: MAC_IPV4_VXLAN_IPV4_PAY ------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions queue i= ndex 5 / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions rss que= ues 2 3 end / end - -matched packets:: - - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst=3D"")/Raw("x"*80)],iface=3D"",= count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",= count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst=3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1) - - -Test Case 7: MAC_IPV4_NVGRE_MAC_IPV4_UDP_PAY --------------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / udp src is dst is / end = actions rss queues 2 3 end / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / udp src is dst is / end = actions queue index 4 / end - -matched packets:: - - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(= sport=3D,dport=3D)/Raw("x"*80)], iface=3D""= , count=3D1) - -mismatched packets:: - - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(= sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(= sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1) - - -Test Case 8: MAC_IPV4_NVGRE_MAC_IPV4_TCP ----------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / tcp src is dst is / end= actions queue index 5 / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / tcp src is dst is / end= actions rss queues 2 3 end / end - -matched packets:: - - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(= sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",= count=3D1) - -mismatched packets:: - - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(= sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"2", dst=3D"")/TCP= (sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1) - - -Test Case 9: ethertype filter_PPPOED ------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth type is / end actions queue index 4 / end - testpmd> flow create 0 priority 1 ingress pattern eth type is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"", type=3D)/Raw("x" *80)],if= ace=3D"",count=3D1) - >>> sendp([Ether(dst=3D"")/PPPoED()/Raw("x" *80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"", type=3D)/= Raw("x" *80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"")/PPPoE()/Raw("x" *80)],iface=3D"",count=3D1) - - -Test Case 10: MAC_VLAN_PPPOE_IPV4_PAY_session_id_proto_id ---------------------------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x"*= 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/R= aw("x" * 80)],iface=3D"",count=3D1) - - -Test Case 11: MAC_VLAN_PPPOE_IPV6_PAY_session_id_proto_id ---------------------------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/R= aw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw= ("x" * 80)],iface=3D"",count=3D1) - - -Test Case 12: MAC_PPPOE_IPV4_PAY_IP_address -------------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 = src is dst is / end actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 = src is dst is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D3)/P= PP(proto=3D0x0021)/IP(src=3D"", dst=3D"")/Raw("x"*80)],= iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D3)/P= PP(proto=3D0x0021)/IP(src=3D"", dst=3D"= ")/Raw("x"*80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D3)/P= PP(proto=3D0x0021)/IP(src=3D"", dst=3D"= ")/Raw("x"*80)],iface=3D"",count=3D1) - - -Test Case 13: MAC_PPPOE_IPV6_UDP_PAY ------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 = dst is / udp src is dst is / end actions queue i= ndex 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 = dst is / udp src is dst is / end actions queue i= ndex 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"= ")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],ifac= e=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"= ")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],ifac= e=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"= ")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],ifac= e=3D"",count=3D1) - - -Test Case 14: MAC_VLAN_PPPOE_IPV4_TCP_PAY_non_src_dst_port ----------------------------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / vlan tci is / pppoes / ipv4 src is dst is / tcp / end actions= queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth / vlan tci is / pppoes / ipv4 src is dst is / tcp / end actions= queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/TCP()/Raw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src=3D"", dst=3D"")/TCP()/Raw("x" * 80)],ifa= ce=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/TCP()/Raw("x" * 80)],i= face=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/TCP()/Raw("x" * 80)],i= face=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/UDP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/Raw("x" * 80)],iface=3D"",count=3D1) - - -Test Case 15: MAC_VLAN_PPPOE_IPV6_PAY_IP_address ------------------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / vlan tci is / pppoes / ipv6 src is / end actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth / vlan tci is / pppoes / ipv6 src is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src= =3D"", dst=3D"")/Raw("x"*80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"")/Raw("x"*80)],iface=3D"= ",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src= =3D"", dst=3D"")/Raw("x"*80)],iface=3D"= ",count=3D1) - - -Test Case 16: MAC_PPPOE_LCP_PAY -------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions q= ueue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions q= ueue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(= sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],if= ace=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],if= ace=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1) - - -Test Case 17: MAC_PPPOE_IPCP_PAY --------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions = queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions = queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(= sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],= iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],= iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1) - - -Test Case 18: MAC_VLAN_PPPOE_LCP_PAY ------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()= /Raw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw= ("x" * 80)],iface=3D"",count=3D1) - - -Test Case 19: MAC_VLAN_PPPOE_IPCP_PAY -------------------------------------- -rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end - -matched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP= ()/Raw("x" * 80)],iface=3D"",count=3D1) - -mismatched packets:: - - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1) - >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw= ("x" * 80)],iface=3D"",count=3D1) - - -Test Case 20: check flow priority filter ----------------------------------------- -1. launch testpmd with --log-level=3D"ice,8" - -2. create rules with priority 0, check the rule is created to switch with = a log "Succeeded to create (2) flow":: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 dst is / nvgre tni is / eth / ipv4 src is dst is <= inner ipv4 dst> / end actions queue index 3 / end - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / end - testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions drop / end - -3. create rules with priority 0, and the action is mark, check the rule is= created to fdir with a log "Succeeded to create (1) flow":: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / mark id 3 / end - -4. create rules with priority 1, check the rule is created to switch with = a log "Succeeded to create (2) flow":: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions drop / end - -5. create rules with priority 1, and the action is mark, check the rule cr= eate fail:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 dst is / nvgre tni is / eth / ipv4 src is dst is <= inner ipv4 dst> / end actions queue index 3 / mark id 3 / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / mark id 3 / end - testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions drop / mark id 3 / end - - -Test Case 21: negative test cases ---------------------------------- -1. create rules, check all these rules can not be created:: - - testpmd> flow create 0 priority 2 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end - testpmd> flow create 0 priority a ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions mark / rss / end - - -Test Case 22: exclusive test cases ----------------------------------- -Subcase 1: same pattern/input set/action different priority -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -1. create same pattern, input set and action but different priority, check= these two rules can be created:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end - -2. send matched pkts and check queue 3 receive this pkt:: - - >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"")/TCP()/("X"*480)], iface=3D"", count=3D1) - -3. destroy rules:: - - flow flush 0 - -Subcase 2: same pattern/input set/priority different action -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -1. create same pattern, input set and priority but different action, check= the second rule can not be created:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions rss queues 4 5 end / end - -Subcase 3: some rules overlap -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -1. create rules:: - - testpmd> flow create 0 priority 0 ingress pattern eth / vlan / vlan / = pppoes / pppoe_proto_id is 0x21 / end actions queue index 3 / end - testpmd> flow create 0 priority 1 ingress pattern eth / vlan / vlan / = pppoes seid is 1 / ipv4 / end actions queue index 2 / end - testpmd> flow create 0 priority 1 ingress pattern eth / vlan / vlan tc= i is 12 / end actions queue index 4 / end - testpmd> flow create 0 priority 0 ingress pattern eth dst is 00:00:00:= 01:03:13 / vlan / vlan / end actions rss queues 1 2 end / end - testpmd> flow create 0 priority 0 ingress pattern eth dst is 00:00:00:= 01:03:03 / end actions queue index 8 / end - testpmd> flow create 0 priority 1 ingress pattern eth / vlan tci is 1 = / vlan tci is 2 / end actions queue index 4 / end - -2. check all the rules exist in the list:: - - flow list 0 - -3. send pkt which match rule 0 and rule 1, check the pkt can be received b= y queue 3:: - - >>> sendp([Ether(type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8100)/Dot1Q(vl= an=3D0x2,type=3D0x8864)/PPPoE(sessionid=3D0x1)/PPP(proto=3D0x21)/IP()/UDP(d= port=3D23)/("X"*480)], iface=3D"") - -4. destroy rule 0, repeat step 3 and check the pkt can be received by queu= e 2:: - - flow destroy 0 rule 0 - -5. send pkt which match rule 2 and rule 3, check the pkt can be received b= y queue 1 or 2:: - - >>> sendp([Ether(dst=3D"00:00:00:01:03:13")/Dot1Q(vlan=3D1)/Dot1Q(vlan= =3D12)/Raw("x"*480)], iface=3D"", count=3D1) - -6. destroy rule 3, repeat step 5 and check the pkt can be received by queu= e 4:: - - flow destroy 0 rule 3 - -7. send pkt which match rule 4 and rule 5, check the pkt will be received = by queue 8:: - - >>> sendp([Ether(dst=3D"00:00:00:01:03:03")/Dot1Q(vlan=3D1)/Dot1Q(vlan= =3D2)/Raw("x"*480)], iface=3D"", count=3D1) - -8. destroy rule 4, repeat step 7 and check the pkts can be received by que= ue 4:: - - flow destroy 0 rule 3 +.. Copyright (c) <2021>, 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=0D +CVL Support Flow Priority in PF=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=0D +=0D +Description=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +In CVL PF rte_flow distribution mode(non-pipeline mode), a flow with prior= ity =3D 1 will be programmed into switch filter,=0D +a flow with priority =3D 0 will be programmed into switch first then fdir.= =0D +Currently only support priority 0 and 1. 1 means low priority and 0 means = high priority.=0D +When looking up rule table, matched packets will hit the high priority rul= e firstly,=0D +it will hit the low priority rule only when there is no high priority rule= exist.=0D +=0D +In CVL PF pipeline mode, a flow with priority =3D 1 will be programmed int= o fdir filter,=0D +a flow with priority =3D 0 will be programmed into switch filter. Rules ar= e not prioritized.=0D +When looking up rule table, will look up switch filter first then fdir.=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 +=0D +Test Case=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +=0D +Common Steps=0D +------------=0D +Test Case 1 - 19 using below steps to check the matched packets will hit t= he high priority rule firstly,=0D +and hit the low priority rule only when there is no high priority rule exi= st:=0D +=0D +1. validate rules: two rules have same pattern, input set but different pr= iority and actions.=0D +2. create rules and list rules.=0D +3. send matched packets, check the action hiting the rule with priority 0.= =0D +4. send mismatched packets, check the packets will not hit any rules.=0D +5. destroy rule with priority 0, list rules.=0D +6. send matched packets, check the action hiting the rule with priority 1.= =0D +7. send mismatched packets, check the packets will not hit any rules.=0D +8. recreate rules which priority is 0, list rule.=0D +9. destroy rule with priority 1, list rules.=0D +10. send matched packets, check the action hiting the rule with priority 0= .=0D +11. send mismatched packets, check the packets will not hit any rules.=0D +12. destroy rule with priority 0, list rules.=0D +13. send matched packets, check the packets will not hit any rules.=0D +=0D +All the packets in this test plan use below settings:=0D +dst mac: 68:05:ca:8d:ed:a8=0D +dst mac change inputset: 68:05:ca:8d:ed:a3=0D +ipv4 src: 192.168.0.1=0D +ipv4 dst: 192.168.0.2=0D +ipv4 src change inputset: 192.168.0.3=0D +ipv4 dst change inputset: 192.168.0.4=0D +inner ipv4 src: 192.168.1.1=0D +inner ipv4 src change inputset: 192.168.1.2=0D +inner ipv4 dst: 192.168.1.3=0D +inner ipv4 dst change inputset: 192.168.1.4=0D +ipv6 src: CDCD:910A:2222:5498:8475:1111:3900:1536=0D +ipv6 dst: CDCD:910A:2222:5498:8475:1111:3900:2020=0D +ipv6 src change inputset: CDCD:910A:2222:5498:8475:1111:3900:1538=0D +ipv6 dst change inputset: CDCD:910A:2222:5498:8475:1111:3900:2028=0D +tos: 4=0D +tos change inputset: 5=0D +ttl: 2=0D +ttl change inputset: 9=0D +sport: 23=0D +sport change inputset: 33=0D +dport: 24=0D +dport change inputset: 34=0D +tc: 3=0D +tc change inputset: 7=0D +tni: 0x8=0D +tni change inputset: 0x1=0D +ethertype: 0x8863=0D +ethertype change inputset: 0x8864=0D +tci: 1=0D +tci change inputset: 2=0D +seid: 3=0D +seid change inputset: 4=0D +ipv4 proto_id: 0x0021=0D +ipv6 proto_id: 0x0057=0D +LCP proto_id: 0xc021=0D +IPCP proto_id: 0x8021=0D +=0D +Support Pattern and Input Set in Non-pipeline Mode=0D +--------------------------------------------------=0D +.. table::=0D +=0D + +---------------------+-------------------------------+---------------= ----------------------------+=0D + | Packet Types | Pattern | input set (non= -pipeline mode) |=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=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 + | | MAC_IPV4_FRAG | N/A = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_PAY | [Source IP], [= Dest IP],[TOS],[TTL] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_UDP_PAY | [Source IP], [= Dest IP],[TOS],[TTL], |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | IPv4/IPv6 + TCP/UDP | MAC_IPV4_TCP | [Source IP], [= Dest IP],[TOS],[TTL], |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV6 | [Source IP], [= Dest IP] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV6_UDP_PAY | [Source IP], [= Dest IP],[TOS],[TTL], |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV6_TCP | [Source IP], [= Dest IP],[TOS],[TTL], |=0D + +---------------------+-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_IPV4_FRAG | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Source = IP], [Inner Dest IP] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_IPV4_PAY | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Source = IP], [Inner Dest IP] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_IPV4_UDP_PAY | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Source = IP], [Inner Dest IP], |=0D + | | | [Inner Source = Port], [Inner Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_IPV4_TCP | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Source = IP], [Inner Dest IP], |=0D + | | | [Inner Source = Port], [Inner Dest Port] |=0D + | tunnel +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_MAC_IPV4_FRAG | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Dest MA= C], |=0D + | | | [Inner Source = IP], [Inner Dest IP] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_MAC_IPV4_PAY | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Dest MA= C], |=0D + | | | [Inner Source = IP], [Inner Dest IP] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_MAC_IPV4_UDP_PAY | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Dest MA= C], |=0D + | | | [Inner Source = IP],[Inner Dest IP], |=0D + | | | [Inner Source = Port], [Inner Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_IPV4_TUN_MAC_IPV4_TCP | [Out Dest IP],= [VNI/GRE_KEY], |=0D + | | | [Inner Dest MA= C], |=0D + | | | [Inner Source = IP], [Inner Dest IP], |=0D + | | | [Inner Source = Port], [Inner Dest Port] |=0D + +---------------------+-------------------------------+---------------= ----------------------------+=0D + | ethertype filter | ethertype filter_PPPOED | [Ether type] = |=0D + +---------------------+-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV4_PAY | [Dest MAC], [V= LAN], [seid], |=0D + | | _session_id_proto_id | [pppoe_proto_i= d] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV6_PAY | [Dest MAC], [V= LAN], [seid], |=0D + | | _session_id_proto_id | [pppoe_proto_i= d] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV4_PAY_session_id | [Dest MAC], [s= eid], [pppoe_proto_id] |=0D + | | _proto_id | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV6_PAY_session_id | [Dest MAC], [s= eid], [pppoe_proto_id] |=0D + | | _proto_id | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV4_PAY_IP_address | [Source IP], [= Dest IP] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV4_UDP_PAY | [Source IP], [= Dest IP], |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV4_UDP_PAY | [Source IP], [= Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV4_TCP_PAY | [Source IP], [= Dest IP], |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV4_TCP_PAY | [Source IP], [= Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV6_PAY_IP_address | [Source IP], [= Dest IP] |=0D + | PPPOES +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV6_UDP_PAY | [Source IP], [= Dest IP], |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV6_UDP_PAY | [Source IP], [= Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV6_TCP_PAY | [Source IP], [= Dest IP], |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPV6_TCP_PAY | [Source IP], [= Dest IP], |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV4_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | _IP_address | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV4_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV4_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV4_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV4_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV6_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | _IP_address | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV6_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV6_UDP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV6_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | | [Source Port],= [Dest Port] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPV6_TCP_PAY | [VLAN], [Sourc= e IP], [Dest IP] |=0D + | | _non_src_dst_port | = |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_LCP_PAY | [Dest MAC], [s= eid], [pppoe_proto_id] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_PPPOE_IPCP_PAY | [Dest MAC], [s= eid], [pppoe_proto_id] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_LCP_PAY | [Dest MAC], [V= LAN], [seid], |=0D + | | | [pppoe_proto_i= d] |=0D + | +-------------------------------+---------------= ----------------------------+=0D + | | MAC_VLAN_PPPOE_IPCP_PAY | [Dest MAC], [V= LAN], [seid], |=0D + | | | [pppoe_proto_i= d] |=0D + +---------------------+-------------------------------+---------------= ----------------------------+=0D +=0D +..note::=0D +=0D + the basic switch function of supported pattern is covered by cvl_switc= h_filter_test_plan.rst and cvl_switch_filter_pppoe_test_plan.rst.=0D + this test plan is designed to check the flow priority in switch, so we= only select some patterns not all matrix in test plan.=0D +=0D +=0D +Test Case 1: MAC_IPV4_PAY=0D +-------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / ipv4 src is dst is tos is ttl is / end= actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / ipv4 src is dst is tos is ttl is / end= actions queue index 4 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"")=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"= ",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"")=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"= ",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"")=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"")=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"")=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/("X"*480)], iface=3D"")=0D +=0D +=0D +Test Case 2: MAC_IPV4_UDP_PAY=0D +-----------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is tos is / udp src is dst is = / end actions rss queues 4 5 end / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is tos is / udp src is dst is = / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)= /UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "")=0D + >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "")=0D + >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "")=0D + >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)= /UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "")=0D + >>> sendp([Ether()/IP(src=3D"",dst=3D"",tos=3D)= /UDP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "")=0D +=0D +=0D +Test Case 3: MAC_IPV6_PAY=0D +-------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is dst is / end actions rss queues 4 5 end / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv6 src is dst is / end actions queue index 8 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/("X"*480= )], iface=3D"")=0D + >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/IPv6ExtH= drFragment()/("X"*480)], iface=3D"")=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/("X"*480)], iface=3D"")=0D + >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/("X"*480)], iface=3D"")=0D + >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/IPv6ExtHdrFragment()/("X"*480)], iface=3D"")=0D + >>> sendp([Ether()/IPv6(src=3D"", dst=3D"")/IPv6ExtHdrFragment()/("X"*480)], iface=3D"")=0D +=0D +=0D +Test Case 4: MAC_IPV6_TCP=0D +-------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is tc is / tcp src is dst is / end actions rss q= ueues 4 5 end / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv6 dst is tc is / tcp src is dst is / end actions queue= index 3 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)= /TCP(sport=3D,dport=3D23)/Raw("x"*80)],iface=3D"",= count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1)=0D + >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1)=0D + >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)= /TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1)=0D + >>> sendp([Ether()/IPv6(src=3D"",dst=3D"",tc=3D)= /TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D= "",count=3D1)=0D +=0D +=0D +Test Case 5: MAC_IPV4_VXLAN_IPV4_FRAG=0D +-------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions rss que= ues 2 3 end / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions queue i= ndex 5 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count= =3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst=3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"",frag=3D5)/Raw("x"*80)],iface=3D"",count= =3D1)=0D +=0D +=0D +Test Case 6: MAC_IPV4_VXLAN_IPV4_PAY=0D +------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions queue i= ndex 5 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / end actions rss que= ues 2 3 end / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1)= =0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst=3D"")/Raw("x"*80)],iface=3D"",= count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",= count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst=3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src=3D"", dst= =3D"")/TCP()/Raw("x"*80)],iface=3D"",count=3D1)= =0D +=0D +=0D +Test Case 7: MAC_IPV4_NVGRE_MAC_IPV4_UDP_PAY=0D +--------------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / udp src is dst is / end = actions rss queues 2 3 end / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / udp src is dst is / end = actions queue index 4 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(= sport=3D,dport=3D)/Raw("x"*80)], iface=3D""= , count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(= sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/UDP(= sport=3D,dport=3D)/Raw("x"*80)], iface=3D"", count=3D1)=0D +=0D +=0D +Test Case 8: MAC_IPV4_NVGRE_MAC_IPV4_TCP=0D +----------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / tcp src is dst is / end= actions queue index 5 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 dst is / nvgre tni is / eth dst is / ipv4 src is dst is / tcp src is dst is / end= actions rss queues 2 3 end / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(= sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",= count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst=3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"", dst=3D"")/TCP(= sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether()/IP(dst=3D"")/NVGRE(TNI=3D)/Ether(dst= =3D"")/IP(src=3D"2", dst=3D"")/TCP= (sport=3D,dport=3D)/Raw("x"*80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 9: ethertype filter_PPPOED=0D +------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth type is / end actions queue index 4 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth type is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"", type=3D)/Raw("x" *80)],if= ace=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"")/PPPoED()/Raw("x" *80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"", type=3D)/= Raw("x" *80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"")/PPPoE()/Raw("x" *80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 10: MAC_VLAN_PPPOE_IPV4_PAY_session_id_proto_id=0D +---------------------------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x"*= 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/R= aw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 11: MAC_VLAN_PPPOE_IPV6_PAY_session_id_proto_id=0D +---------------------------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/R= aw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw= ("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 12: MAC_PPPOE_IPV4_PAY_IP_address=0D +-------------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 = src is dst is / end actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / pppoes / ipv4 = src is dst is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D3)/P= PP(proto=3D0x0021)/IP(src=3D"", dst=3D"")/Raw("x"*80)],= iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D3)/P= PP(proto=3D0x0021)/IP(src=3D"", dst=3D"= ")/Raw("x"*80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D3)/P= PP(proto=3D0x0021)/IP(src=3D"", dst=3D"= ")/Raw("x"*80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 13: MAC_PPPOE_IPV6_UDP_PAY=0D +------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 = dst is / udp src is dst is / end actions queue i= ndex 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / pppoes / ipv6 = dst is / udp src is dst is / end actions queue i= ndex 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"= ")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],ifac= e=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"= ")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],ifac= e=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"= ")/UDP(sport=3D,dport=3D)/Raw("x" * 80)],ifac= e=3D"",count=3D1)=0D +=0D +=0D +Test Case 14: MAC_VLAN_PPPOE_IPV4_TCP_PAY_non_src_dst_port=0D +----------------------------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / vlan tci is / pppoes / ipv4 src is dst is / tcp / end actions= queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / vlan tci is / pppoes / ipv4 src is dst is / tcp / end actions= queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/TCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src=3D"", dst=3D"")/TCP()/Raw("x" * 80)],ifa= ce=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/TCP()/Raw("x" * 80)],i= face=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/TCP()/Raw("x" * 80)],i= face=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/UDP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP(src= =3D"", dst=3D"")/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 15: MAC_VLAN_PPPOE_IPV6_PAY_IP_address=0D +------------------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / vlan tci is / pppoes / ipv6 src is / end actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / vlan tci is / pppoes / ipv6 src is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src= =3D"", dst=3D"")/Raw("x"*80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src=3D"", dst=3D"")/Raw("x"*80)],iface=3D"= ",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IPv6(src= =3D"", dst=3D"")/Raw("x"*80)],iface=3D"= ",count=3D1)=0D +=0D +=0D +Test Case 16: MAC_PPPOE_LCP_PAY=0D +-------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions q= ueue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions q= ueue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(= sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],if= ace=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],if= ace=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 17: MAC_PPPOE_IPCP_PAY=0D +--------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions = queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / pppoes seid is / pppoe_proto_id is / end actions = queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(= sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],= iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],= iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 18: MAC_VLAN_PPPOE_LCP_PAY=0D +------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()= /Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_LCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw= ("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 19: MAC_VLAN_PPPOE_IPCP_PAY=0D +-------------------------------------=0D +rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 1 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions queue index 2 / end=0D +=0D +matched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP= ()/Raw("x" * 80)],iface=3D"",count=3D1)=0D +=0D +mismatched packets::=0D +=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(= vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,type=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/PPP_IPCP()/Raw("x" * 80)],iface=3D"",count=3D1)=0D + >>> sendp([Ether(dst=3D"",type=3D0x8100)/Dot1Q(vlan=3D,typ= e=3D0x8864)/PPPoE(sessionid=3D)/PPP(proto=3D)/IP()/Raw= ("x" * 80)],iface=3D"",count=3D1)=0D +=0D +=0D +Test Case 20: check non-pipeline mode flow priority filter=0D +----------------------------------------------------------=0D +This case is designed to check a flow with priority =3D 1 will be programm= ed into switch filter,=0D +a flow with priority =3D 0 will be programmed into switch first then fdir= =0D +=0D +Test Steps=0D +~~~~~~~~~~=0D +1. launch testpmd with --log-level=3D"ice,8"=0D +=0D +2. create rules with priority 0, check the rule is created to switch with = a log "Succeeded to create (2) flow"::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 dst is / nvgre tni is / eth / ipv4 src is dst is <= inner ipv4 dst> / end actions queue index 3 / end=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / end=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions drop / end=0D +=0D +3. create rules with priority 0, and the action is mark, check the rule is= created to fdir with a log "Succeeded to create (1) flow"::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / mark id 3 / end=0D +=0D +4. create rules with priority 1, check the rule is created to switch with = a log "Succeeded to create (2) flow"::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions drop / end=0D +=0D +5. create rules with priority 1, and the action is mark, check the rule cr= eate fail::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 dst is / nvgre tni is / eth / ipv4 src is dst is <= inner ipv4 dst> / end actions queue index 3 / mark id 3 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / tcp src is = dst is / end actions rss queues 4 5 end / mark id 3 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth dst is = / vlan tci is / pppoes seid is / pppoe_proto_id is / end actions drop / mark id 3 / end=0D +=0D +=0D +Test Case 21: negative test cases=0D +---------------------------------=0D +Test Steps=0D +~~~~~~~~~~=0D +1. create rules, check all these rules can not be created::=0D +=0D + testpmd> flow create 0 priority 2 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end=0D + testpmd> flow create 0 priority a ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions mark / rss / end=0D +=0D +=0D +Test Case 22: non-pipeline mode exclusive test cases=0D +----------------------------------------------------=0D +This case is designed to check some exclusive scenario in non-pipeline mod= e.=0D +=0D +Subcase 1: same pattern/input set/action different priority=0D +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D +1. create same pattern, input set and action but different priority, check= these two rules can be created::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end=0D +=0D +2. send matched packet and check queue 3 receive this packet::=0D +=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"")/TCP()/("X"*480)], iface=3D"", count=3D1)=0D +=0D +3. destroy rules::=0D +=0D + testpmd> flow flush 0=0D +=0D +Subcase 2: same pattern/input set/priority different action=0D +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D +1. create same pattern, input set and priority but different action, check= the second rule can not be created::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions queue index 3 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is / end actions rss queues 4 5 end / end=0D +=0D +Subcase 3: some rules overlap=0D +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0D +1. create rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / vlan / vlan / = pppoes / pppoe_proto_id is 0x21 / end actions queue index 3 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / vlan / vlan / = pppoes seid is 1 / ipv4 / end actions queue index 2 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / vlan / vlan tc= i is 12 / end actions queue index 4 / end=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is 00:00:00:= 01:03:13 / vlan / vlan / end actions rss queues 1 2 end / end=0D + testpmd> flow create 0 priority 0 ingress pattern eth dst is 00:00:00:= 01:03:03 / end actions queue index 8 / end=0D + testpmd> flow create 0 priority 1 ingress pattern eth / vlan tci is 1 = / vlan tci is 2 / end actions queue index 4 / end=0D +=0D +2. check all the rules exist in the list::=0D +=0D + testpmd> flow list 0=0D +=0D +3. send packet which match rule 0 and rule 1, check the packet can be rece= ived by queue 3::=0D +=0D + >>> sendp([Ether(type=3D0x8100)/Dot1Q(vlan=3D1,type=3D0x8100)/Dot1Q(vl= an=3D0x2,type=3D0x8864)/PPPoE(sessionid=3D0x1)/PPP(proto=3D0x21)/IP()/UDP(d= port=3D23)/("X"*480)], iface=3D"")=0D +=0D +4. destroy rule 0, repeat step 3 and check the packet can be received by q= ueue 2::=0D +=0D + testpmd> flow destroy 0 rule 0=0D +=0D +5. send packet which match rule 2 and rule 3, check the packet can be rece= ived by queue 1 or 2::=0D +=0D + >>> sendp([Ether(dst=3D"00:00:00:01:03:13")/Dot1Q(vlan=3D1)/Dot1Q(vlan= =3D12)/Raw("x"*480)], iface=3D"", count=3D1)=0D +=0D +6. destroy rule 3, repeat step 5 and check the packet can be received by q= ueue 4::=0D +=0D + testpmd> flow destroy 0 rule 3=0D +=0D +7. send packet which match rule 4 and rule 5, check the packet will be rec= eived by queue 8::=0D +=0D + >>> sendp([Ether(dst=3D"00:00:00:01:03:03")/Dot1Q(vlan=3D1)/Dot1Q(vlan= =3D2)/Raw("x"*480)], iface=3D"", count=3D1)=0D +=0D +8. destroy rule 4, repeat step 7 and check the packet can be received by q= ueue 4::=0D +=0D + testpmd> flow destroy 0 rule 3=0D +=0D +=0D +Test Case 23: Create Flow Rules with Priority in Pipeline Mode=0D +--------------------------------------------------------------=0D +Priority is active in pipeline mode.=0D +This case is designed to check creating flow rules and setting priority 0/= 1 will map switch/fdir filter separately.=0D +Patterns in this case::=0D +=0D + MAC_IPV4_TCP=0D + MAC_IPV4_VXLAN_IPV4_UDP_PAY=0D +=0D +Test Steps=0D +~~~~~~~~~~=0D +1. Start the ``testpmd`` application as follows::=0D +=0D + /app/dpdk-testpmd -a ,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D + testpmd> rx_vxlan_port add 4789 0=0D +=0D +2. Create switch filter rules::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is tos is / tcp src is dst is = / end actions queue index 1 / end=0D + ice_flow_create(): Succeeded to create (2) flow=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is tos is / udp sr= c is dst is / end actions queue index 2 / end=0D + ice_flow_create(): Succeeded to create (2) flow=0D +=0D +3. Create fdir filter rules::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is tos is ttl= is / tcp src is dst is / end actions queue index 3 /= end=0D + ice_flow_create(): Succeeded to create (1) flow=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / udp / v= xlan / eth / ipv4 src is dst is / udp src is dst is / end actions queue index 4 = / end=0D + ice_flow_create(): Succeeded to create (1) flow=0D +=0D +4. Check flow list with commands "flow list 0", all flows are created corr= ectly::=0D + =0D + +-----+--------+--------+--------+-----------------------+=0D + |ID | Group | Prio | Attr | Rul |=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 + | 0 | 0 | 0 | i- | ETH IPV4 TCP =3D> QUEUE |=0D + +-----+--------+--------+--------+-----------------------+=0D + | 1 ... |=0D + +-----+--------+--------+--------+-----------------------+=0D + | 2 ... |=0D + +-----+--------+--------+--------+-----------------------+=0D + | 3 ... |=0D + +-----+--------+--------+--------+-----------------------+=0D +=0D +5. Send packets according to the created rules in tester::=0D +=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D)/TCP(sport=3D,dport=3D)/Raw('x'*80)],iface= =3D"")=0D + >>> sendp([Ether(dst=3D"")/IP()/UDP()/VXLAN()/Ether()/IP(src= =3D"",dst=3D"",tos=3D)/UDP(sport=3D,dport= =3D)/Raw('x'*80)],iface=3D"")=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D,ttl=3D)/TCP(sport= =3D,dport=3D)/Raw('x'*80)],iface=3D"")=0D + >>> sendp([Ether(dst=3D"")/IP()/UDP()/VXLAN()/Ether()/IP(src= =3D"",dst=3D"")/UDP(spo= rt=3D,dport=3D)/Raw('x'*80)],iface=3D"")=0D +=0D +6. Check the packets are recieved in right queues by dut::=0D +=0D + testpmd> port 0/queue 1: received 1 packets=0D + src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0x96803f93 - RSS queue=3D0x1 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x1=0D + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN=0D + ......=0D +=0D +7. Create rules without priority, Check only patterns supported by switch = can be created for the default priorty is 0.=0D + So the first flow can be created and the second flow can not be created= ::=0D +=0D + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 ds= t is 192.168.0.1 tos is 5 / tcp src is 25 dst is 23 / end actions queue ind= ex 1 / end=0D + ice_flow_create(): Succeeded to create (2) flow=0D + Flow rule #1 created=0D + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 ds= t is 192.168.0.3 tos is 4 ttl is 20 / sctp src is 25 dst is 23 / end action= s queue index 1 / end=0D + ice_flow_create(): Failed to create flow=0D + Caught error type 2 (flow rule (handle)): Invalid input pattern: Invali= d argument=0D +=0D +=0D +Test case 24: Create Flow Rules Only Supported by Fdir Filter with Priorit= y 0 in Pipeline Mode=0D +--------------------------------------------------------------------------= --------------------=0D +Creating a rule only supported by fdir filter with priority 0, it is not a= cceptable.=0D +Patterns in this case::=0D +=0D + MAC_IPV6_SCTP=0D + MAC_IPV4_SCTP=0D +=0D +Test Steps=0D +~~~~~~~~~~=0D +1. Start the ``testpmd`` application as follows::=0D +=0D + /app/dpdk-testpmd -a ,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D +=0D +2. Create rules, check the flows can not be created::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is 11= 11:2222:3333:4444:5555:6666:7777:8888 dst is 1111:2222:3333:4444:5555:6666:= 7777:9999 / sctp src is 25 dst is 23 / end actions queue index 1 / end=0D + ice_flow_create(): Failed to create flow=0D + Caught error type 2 (flow rule (handle)): Invalid input pattern: Inval= id argument=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 ttl is 20 / sctp src is 25 dst is 23 = / end actions queue index 1 / end=0D + ice_flow_create(): Failed to create flow=0D + Caught error type 2 (flow rule (handle)): Invalid input pattern: Inval= id argument=0D +=0D +=0D +Test case 25: Create flow rules only supported by switch filter with prior= ity 1 in Pipeline Mode=0D +--------------------------------------------------------------------------= ----------------------=0D +Create a rule only supported by fdir switch with priority 1, it is not acc= eptable.=0D +Patterns in this case::=0D +=0D + MAC_IPV4_NVGRE_MAC_IPV4=0D + MAC_IPV4_NVGRE_MAC_IPV4_UDP=0D +=0D +Test Steps=0D +~~~~~~~~~~=0D +1. Start the ``testpmd`` application as follows::=0D +=0D + /app/dpdk-testpmd -a ,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D +=0D +2. Create rules, check the flows can not be created::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / nvgre /= eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions qu= eue index 3 / end=0D + ice_flow_create(): Failed to create flow=0D + Caught error type 13 (specific pattern item): cause: 0x7fffe65b8128, U= nsupported pattern: Invalid argument=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / nvgre /= eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 25 = dst is 23 / end actions queue index 3 / end=0D + ice_flow_create(): Failed to create flow=0D + Caught error type 13 (specific pattern item): cause: 0x7fffe65b8128, U= nsupported pattern: Invalid argument=0D +=0D +=0D +Test case 26: Create flow rules with same parameter but differenet actions= in Pipeline Mode=0D +--------------------------------------------------------------------------= -----------------=0D +It is acceptable to create same rules with differenet filter in pipeline m= ode.=0D +When fdir filter and switch filter has the same parameter rules, the flow = will map to switch then fdir. =0D +Patterns in this case::=0D +=0D + MAC_IPV4_TCP=0D +=0D +Test Steps=0D +~~~~~~~~~~=0D +1. Start the ``testpmd`` application as follows::=0D +=0D + /app/dpdk-testpmd -a ,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D +=0D +2. Create switch rule then fdir rule with the same parameter, check two fl= ows can be created::=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is tos is / tcp src is dst is = / end actions queue index 1 / end=0D + ice_flow_create(): Succeeded to create (2) flow=0D + Flow rule #0 created=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is tos is / tcp src is dst is = / end actions queue index 3 / end=0D + ice_interrupt_handler(): OICR: MDD event=0D + ice_flow_create(): Succeeded to create (1) flow=0D + Flow rule #1 created=0D +=0D +3. Tester send a packet to dut::=0D +=0D + >>> sendp([Ether(dst=3D"")/IP(src=3D"",dst=3D"",tos=3D)/TCP(sport=3D,dport=3D)/Raw('x'*80)],iface= =3D"")=0D +=0D +4. Check the packets are recieved by dut in queue 1::=0D +=0D + testpmd> port 0/queue 1: received 1 packets=0D + src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x1 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x1=0D + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN=0D +=0D +5. Remove the switch rule::=0D +=0D + testpmd> flow destroy 0 rule 0=0D +=0D +6. Repeat step 3.=0D +=0D +7. Check the packets are recieved in queue 3::=0D +=0D + testpmd> port 0/queue 3: received 1 packets=0D + src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x3 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x3=0D + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN=0D +=0D +8. Restart the ``testpmd`` application as follows::=0D +=0D + /app/dpdk-testpmd -a ,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --rxq=3D --txq=3D=0D + testpmd> set fwd rxonly=0D + testpmd> set verbose 1=0D +=0D +9. Create fdir rule then switch rule with the same parameter, check two fl= ows can be created::=0D +=0D + testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is dst is tos is / tcp src is dst is = / end actions queue index 3 / end=0D + ice_interrupt_handler(): OICR: MDD event=0D + ice_flow_create(): Succeeded to create (1) flow=0D + Flow rule #0 created=0D +=0D + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is dst is tos is / tcp src is dst is = / end actions queue index 1 / end=0D + ice_flow_create(): Succeeded to create (2) flow=0D + Flow rule #1 created=0D +=0D +10. Repeat step 3.=0D +=0D +11. Check the packets are recieved by dut in queue 1::=0D +=0D + testpmd> port 0/queue 1: received 1 packets=0D + src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x1 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x1=0D + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN=0D +=0D +12. Remove the switch rule::=0D +=0D + testpmd> flow destroy 0 rule 1=0D +=0D +13. Repeat step 3.=0D +=0D +14. Check the packets are recieved in queue 3::=0D +=0D + testpmd> port 0/queue 3: received 1 packets=0D + src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x3 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x3=0D + ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN \ No newline at end of file diff --git a/test_plans/rteflow_priority_test_plan.rst b/test_plans/rteflow= _priority_test_plan.rst deleted file mode 100644 index 405a1bf1..00000000 --- a/test_plans/rteflow_priority_test_plan.rst +++ /dev/null @@ -1,338 +0,0 @@ -.. Copyright (c) <2019>, Intel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - - Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - OF THE POSSIBILITY OF SUCH DAMAGE. - - -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -Rte_flow Priority Tests -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - - -Description -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -This document provides the plan for testing the Rte_flow Priority feature. -this feature uses devargs as a hint to active flow priority or not. - -This test plan is based on Intel E810 series ethernet cards. -when priority is not active, flows are created on fdir then switch/ACL. -when priority is active, flows are identified into 2 category:=20 -High priority as permission stage that maps to switch/ACL, -Low priority as distribution stage that maps to fdir, -a no destination high priority rule is not acceptable, since it may be ove= rwritten by a low priority rule due to cvl FXP behavior. - -Note: Since these tests are focus on priority, the patterns in tests are e= xamples. - - -Prerequisites -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Bind the pf to dpdk driver:: - - ./usertools/dpdk-devbind.py -b vfio-pci af:00.0 -=20=20=20 -Note: The kernel must be >=3D 3.6+ and VT-d must be enabled in bios. - -Test Case: Setting Priority in Non-pipeline Mode -=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 - -Priority is not active in non-pipeline mode. The default value of priority= is 0 but it will be ignored. - -Patterns in this case: - MAC_IPV4 - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq=3D8 - set fwd rxonly - set verbose 1 - -#. Create a rule with priority 0, Check the flow can be created but it wil= l map to fdir filter:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / mark / = end - ice_interrupt_handler(): OICR: MDD event - ice_flow_create(): Succeeded to create (1) flow - Flow rule #0 created - -#. Create a rule with priority 1, check the flow can not be created for th= e vallue of priority is 0 in non-pipeline mode:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / mark / = end - ice_flow_create(): Failed to create flow - Caught error type 4 (priority field): cause: 0x7ffe24e65738, Not suppo= rt priority.: Invalid argument - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0,pipeline-mode-support=3D0 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - -#. Create a rule with priority 0, Check the flow can be created but it wil= l map to fdir filter:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / end - ice_interrupt_handler(): OICR: MDD event - ice_flow_create(): Succeeded to create (1) flow - Flow rule #0 created - -#. Create a rule with priority 1, check the flow can not be created for th= e vallue of priority is 0 in non-pipeline mode:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / end - ice_flow_create(): Failed to create flow - Caught error type 4 (priority field): cause: 0x7ffe24e65738, Not suppo= rt priority.: Invalid argument - -Test Case: Create Flow Rules with Priority in Pipeline Mode -=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=3D=3D=3D=3D=3D=3D - -Priority is active in pipeline mode.=20 -Creating flow rules and setting priority 0/1 will map switch/fdir filter s= eparately. - -Patterns in this case: - MAC_IPV4_TCP - MAC_IPV4_VXLAN_IPV4_UDP_PAY - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - rx_vxlan_port add 4789 0 - -#. Create switch filter rules:: - - flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2= dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end actions queue = index 1 / end - - flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / et= h / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 25 dst= is 23 / end actions queue index 2 / end - -#. Create fdir filter rules:: - - flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.4= dst is 192.168.0.7 tos is 4 ttl is 20 / tcp src is 25 dst is 23 / end acti= ons queue index 3 / end - - flow create 0 priority 1 ingress pattern eth / ipv4 / udp / vxlan / et= h / ipv4 src is 192.168.0.4 dst is 192.168.0.7 / udp src is 25 dst is 23 / = end actions queue index 4 / end - -#. Check flow list with commands "flow list 0", all flows are created corr= ectly:: -=20=20=20 - +-----+--------+--------+--------+-----------------------+ - |ID | Group | Prio | Attr | Rul | - +=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+ - | 0 | 0 | 0 | i- | ETH IPV4 TCP =3D> QUEUE | - +-----+--------+--------+--------+-----------------------+ - | 1 ... | - +-----+--------+--------+--------+-----------------------+ - | 2 ... | - +-----+--------+--------+--------+-----------------------+ - | 3 ... | - +-----+--------+--------+--------+-----------------------+ - -#. Send packets according to the created rules in tester:: - - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(s= rc=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/= Raw('x'*80)],iface=3D"enp134s0f0") - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP()= /UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/= UDP(sport=3D25,dport=3D23)/Raw('x'*80)],iface=3D"enp134s0f0") - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(s= rc=3D"192.168.0.4",dst=3D"192.168.0.7",tos=3D4,ttl=3D20)/TCP(sport=3D25,dpo= rt=3D23)/Raw('x'*80)],iface=3D"enp134s0f0") - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP()= /UDP()/VXLAN()/Ether()/IP(src=3D"192.168.0.4 ",dst=3D"192.168.0.7")/UDP(spo= rt=3D25,dport=3D23)/Raw('x'*80)],iface=3D"enp134s0f0") - -#. Check the packets are recieved in right queues by dut:: - - testpmd> port 0/queue 1: received 1 packets - src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - l= ength=3D134 - nb_segs=3D1 - RSS hash=3D0x96803f93 - RSS queue=3D0x1 - hw pt= ype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_T= CP - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x1 - ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD P= KT_RX_OUTER_L4_CKSUM_UNKNOWN - ...... - -#. Create rules without priority, Check only patterns supported by switch = can be created for the default priorty is 0. -So the first flow can be created and the second flow can not be created:: - - testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 ds= t is 192.168.0.1 tos is 5 / tcp src is 25 dst is 23 / end actions queue ind= ex 1 / end - ice_flow_create(): Succeeded to create (2) flow - Flow rule #1 created - testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 d= st is 192.168.0.3 tos is 4 ttl is 20 / sctp src is 25 dst is 23 / end actio= ns queue index 1 / end - ice_flow_create(): Failed to create flow - Caught error type 2 (flow rule (handle)): Invalid input pattern: Invali= d argument - -Test case: Create No Destination High Priority Flow Rule -=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=3D=3D - -A no destination high priority rule is not acceptable. Destination here me= ans exact actions. - -Patterns in this case: - MAC_IPV4_TCP - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - -#. Create a rule without exact actions, check the flows can not be created= :: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end actio= ns / end - Bad arguments - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end - Bad arguments - -Test case: Create Flow Rules Only Supported by Fdir Filter with Priority 0 -=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=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D - -Creating a rule only supported by fdir filter with priority 0, it is not a= cceptable. - -Patterns in this case: - MAC_IPV6_SCTP - MAC_IPV4_SCTP - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - -#. Create rules, check the flows can not be created:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is 11= 11:2222:3333:4444:5555:6666:7777:8888 dst is 1111:2222:3333:4444:5555:6666:= 7777:9999 / sctp src is 25 dst is 23 / end actions queue index 1 / end - ice_flow_create(): Failed to create flow - Caught error type 2 (flow rule (handle)): Invalid input pattern: Inval= id argument - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 ttl is 20 / sctp src is 25 dst is 23 = / end actions queue index 1 / end - ice_flow_create(): Failed to create flow - Caught error type 2 (flow rule (handle)): Invalid input pattern: Inval= id argument - - -Test case: Create flow rules only supported by switch filter with priority= 1 -=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=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D - -Create a rule only supported by fdir switch with priority 1, it is not acc= eptable. - -Patterns in this case: - MAC_IPV4_NVGRE_MAC_IPV4 - MAC_IPV4_NVGRE_MAC_IPV4_UDP - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - -#. Create rules, check the flows can not be created:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / nvgre /= eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions qu= eue index 3 / end - ice_flow_create(): Failed to create flow - Caught error type 13 (specific pattern item): cause: 0x7fffe65b8128, U= nsupported pattern: Invalid argument - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 / nvgre /= eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 25 = dst is 23 / end actions queue index 3 / end - ice_flow_create(): Failed to create flow - Caught error type 13 (specific pattern item): cause: 0x7fffe65b8128, U= nsupported pattern: Invalid argument - -Test case: Create flow rules with same parameter but differenet actions=20 -=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=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -It is acceptable to create same rules with differenet filter in pipeline m= ode. -When fdir filter and switch filter has the same parameter rules, the flow = will map to switch then fdir.=20 - -Patterns in this case: - MAC_IPV4_TCP - -#. Start the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0,pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - -#. Create switch rule then fdir rule with the same parameter, check two fl= ows can be created:: - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end actio= ns queue index 1 / end - ice_flow_create(): Succeeded to create (2) flow - Flow rule #0 created - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end actio= ns queue index 3 / end - ice_interrupt_handler(): OICR: MDD event - ice_flow_create(): Succeeded to create (1) flow - Flow rule #1 created - -#. Tester send a pkt to dut:: - - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(s= rc=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/= Raw('x'*80)],iface=3D"enp134s0f0") - -#. Check the packets are recieved by dut in queue 1:: - - testpmd> port 0/queue 1: received 1 packets - src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x1 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x1 - ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN - -#. Remove the switch rule:: - - testpmd>flow destroy 0 rule 0 - -#. Tester send a pkt to dut:: - - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(s= rc=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/= Raw('x'*80)],iface=3D"enp134s0f0") - -#. Check the packets are recieved in queue 3:: - - testpmd> port 0/queue 3: received 1 packets - src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - le= ngth=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x3 - hw pty= pe: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_TC= P - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x3 - ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PK= T_RX_OUTER_L4_CKSUM_UNKNOWN - -#. Restart the ``testpmd`` application as follows:: - - ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:af:0= 0.0, pipeline-mode-support=3D1 --log-level=3D"ice,7" -- -i --txq=3D8 --rxq= =3D8 - set fwd rxonly - set verbose 1 - -#. Create fdir rule then switch rule with the same parameter, check two fl= ows can be created:: - - testpmd> flow create 0 priority 1 ingress pattern eth / ipv4 src is 19= 2.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end actio= ns queue index 3 / end - ice_interrupt_handler(): OICR: MDD event - ice_flow_create(): Succeeded to create (1) flow - Flow rule #0 created - - testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192= .168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end action= s queue index 1 / end - ice_flow_create(): Succeeded to create (2) flow - Flow rule #1 created - -#. Tester send a pkt to dut:: - - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(s= rc=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/= Raw('x'*80)],iface=3D"enp134s0f0") - -#. Check the packets are recieved by dut in queue 1:: - - testpmd> port 0/queue 1: received 1 packets - src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - l= ength=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x1 - hw pt= ype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_T= CP - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x1 - ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD P= KT_RX_OUTER_L4_CKSUM_UNKNOWN - -#. Remove the switch rule:: - - testpmd>flow destroy 0 rule 1 - -#. Tester send a pkt to dut:: - - sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(s= rc=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/= Raw('x'*80)],iface=3D"enp134s0f0") - -#. Check the packets are recieved in queue 3:: - - testpmd> port 0/queue 3: received 1 packets - src=3D11:22:33:44:55:66 - dst=3D00:00:00:00:11:00 - type=3D0x0800 - l= ength=3D134 - nb_segs=3D1 - RSS hash=3D0xf12811f1 - RSS queue=3D0x3 - hw pt= ype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER L3_IPV4 L4_T= CP - l2_len=3D14 - l3_len=3D20 - l4_len=3D20 - Receive queue=3D0x3 - ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD P= KT_RX_OUTER_L4_CKSUM_UNKNOWN --=20 2.25.1