From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 22787A04DD; Tue, 31 Dec 2019 06:41:35 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AAD131C0D2; Tue, 31 Dec 2019 06:41:34 +0100 (CET) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 368031C0C8 for ; Tue, 31 Dec 2019 06:41:31 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Dec 2019 21:41:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,378,1571727600"; d="scan'208";a="209207670" Received: from dpdk-lunannan-dev1.sh.intel.com ([10.67.119.144]) by orsmga007.jf.intel.com with ESMTP; 30 Dec 2019 21:41:27 -0800 From: Nannan Lu To: dts@dpdk.org Cc: Nannan Lu Date: Tue, 31 Dec 2019 13:28:36 +0000 Message-Id: <20191231132836.6737-1-nannan.lu@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [dts] [PATCH V3] test_plans: add cvl_switch_filter_test_plan.rst X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "dts" Add cvl_switch_filter_test_plan.rst to test_plans Signed-off-by: Nannan Lu --- test_plans/cvl_switch_filter_test_plan.rst | 4473 ++++++++++++++++++++ 1 file changed, 4473 insertions(+) create mode 100644 test_plans/cvl_switch_filter_test_plan.rst diff --git a/test_plans/cvl_switch_filter_test_plan.rst b/test_plans/cvl_switch_filter_test_plan.rst new file mode 100644 index 0000000..6537a77 --- /dev/null +++ b/test_plans/cvl_switch_filter_test_plan.rst @@ -0,0 +1,4473 @@ +.. 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. + +======================= +CVL Switch Filter Tests +======================= + +Description +=========== + +This document provides the plan for testing switch filter feature of CVL, including: + +* Enable switch filter for IPv4/IPv6 + TCP/UDP in non-pipeline/pipeline mode (comm #1 package) +* Enable switch filter for tunnel : VXLAN / NVGRE in non-pipeline/pipeline mode (comm #1 package) +* Enable switch filter for PPPOE in non-pipeline mode (comm #1 package) + +In pipeline mode, a flow can be set at one specific stage by setting parameter ``priority``. Currently, +we support two stages: priority = 0 or !0. Flows with priority 0 located at the first pipeline stage +which typically be used as a firewall. At this stage, flow rules are created for the device's exact +match engine: switch. Flows with priority !0 located at the second stage, typically packets are +classified here and be steered to specific queue or queue group. At this stage, flow rules are created +for device's flow director engine. + +In non-pipeline mode, ``priority`` is ignored, a flow rule can be created as a flow director rule or a +switch rule depends on its pattern/action. If a rule is supported by switch or fdir at the same time, it +will be created in the fdir table first. Therefore, to test switch filter in non-pipeline mode, we need to +fill the fdir table first, and then the rules are created in the switch filter table. The capacity of fdir +table is 16K, so we create 16K fdir rules to make the fdir table full. + +Pattern and input set +--------------------- + + +---------------------+-------------------------------+---------------------------------------------------------------------------------------+ + | | | Input Set | + | Packet Types | Pattern +-------------------------------------------+-------------------------------------------+ + | | | non-pipeline mode | pipeline mode | + +=====================+===============================+===========================================+===========================================+ + | | MAC_IPV4_FRAG | | [Source IP], [Dest IP], | + | | | | [DSCP] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_PAY | | [Source IP], [Dest IP], | + | | | | [IP protocol], [DSCP] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_UDP_PAY | | [Source IP], [Dest IP], | + | | | | [DSCP], | + | | | | [Source Port], [Dest Port] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | IPv4/IPv6 + TCP/UDP | MAC_IPV4_TCP | | [Source IP], [Dest IP], | + | | | | [DSCP], | + | | | | [Source Port], [Dest Port] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV6_FRAG | | [Source IP], [Dest IP], | + | | | | [TC] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV6_UDP_PAY | | [Source IP], [Dest IP], | + | | | | [TC], | + | | | | [Source Port], [Dest Port] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV6_TCP | | [Source IP], [Dest IP], | + | | | | [TC], | + | | | | [Source Port], [Dest Port] | + +---------------------+-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_TUN_IPV4_FRAG | [Out Dest IP], [VNI/GRE_KEY], | [inner Source IP], [inner Dest IP], | + | | | [Inner Source IP], [Inner Dest IP], | [DSCP] | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_TUN_IPV4_PAY | [Out Dest IP], [VNI/GRE_KEY], | N/A | + | | | [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 IP], [Inner Dest IP], | [DSCP], | + | | | [Inner Source Port], [Inner Dest Port] | [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 IP], [Inner Dest IP], | [DSCP], | + | | | [Inner Source Port], [Inner Dest Port] | [Inner Source Port], [Inner Dest Port] | + | tunnel +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_TUN_MAC_IPV4_FRAG | [Out Dest IP], [VNI/GRE_KEY], | N/A | + | | | [Inner Dest MAC], | | + | | | [Inner Source IP], [Inner Dest IP] | | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_TUN_MAC_IPV4_PAY | [Out Dest IP], [VNI/GRE_KEY], | N/A | + | | | [Inner Dest MAC], | | + | | | [Inner Source IP], [Inner Dest IP] | | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_TUN_MAC_IPV4_UDP_PAY | [Out Dest IP], [VNI/GRE_KEY], | N/A | + | | | [Inner Dest MAC], | | + | | | [Inner Source IP],[Inner Dest IP], | | + | | | [Inner Source Port], [Inner Dest Port] | | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_IPV4_TUN_MAC_IPV4_TCP | [Out Dest IP], [VNI/GRE_KEY], | N/A | + | | | [Inner Dest MAC], | | + | | | [Inner Source IP], [Inner Dest IP], | | + | | | [Inner Source Port], [Inner Dest Port] | | + +---------------------+-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_PPPOD_PAY | all this kind of packets | N/A | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | PPPOD / PPPOE | MAC_PPPOE_PAY | all this kind of packets | N/A | + | +-------------------------------+-------------------------------------------+-------------------------------------------+ + | | MAC_PPPOE_IPV4_PAY | [Dest MAC], [VLAN] | N/A | + +---------------------+-------------------------------+-------------------------------------------+-------------------------------------------+ + +Action type +----------- + +* To queue +* To queue group +* Drop + +Prerequisites +============= + +1. Hardware: + columbiaville_25g/columbiaville_100g + +2. software: + dpdk: http://dpdk.org/git/dpdk + scapy: http://www.secdev.org/projects/scapy/ + +3. Copy comm #1 package to /lib/firmware/intel/ice/ddp/ice.pkg, + then reboot server, and compile DPDK. + +4. Bind the pf to dpdk driver:: + + ./usertools/dpdk-devbind.py -b igb_uio 18:00.2 + +5. Launch the app ``testpmd`` with the following arguments:: + + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 0000:18:00.2 --log-level="ice,8" -- -i --txq=8 --rxq=8 + testpmd> port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd + testpmd> set fwd rxonly + testpmd> set verbose 1 + + If set VXLAN flow rule:: + + testpmd> rx_vxlan_port add 4789 0 + testpmd> start + + If create rules in pipeline mode, please add the following parameters in testpmd command line:: + + -w 0000:18:00.2,pipeline-mode-support=1 + + +Test case: VXLAN non-pipeline mode +================================== + +1. create fdir rules to make the fdir table full, + which can be created as follows:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end + +2. create switch filter rules and verify + +* MAC_IPV4_VXLAN_IPV4_FRAG + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.4", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.5")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.4", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.5")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.4", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.5")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23) /Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23) /Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19) /Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23) /Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23) /Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19) /Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23) /Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23) /Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19) /Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / tcp src is 50 dst is 23 / end actions queue index 5 / end + +send mathced packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=29,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=50,dport=100)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 5 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / tcp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send mathced packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=29,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=50,dport=100)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / tcp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=29,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=50,dport=100)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / icmp / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / icmp / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / icmp / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_MAC_IPV4_FRAG + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.4", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.4", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.0.2", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.4", dst="192.168.0.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_MAC_IPV4_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3") /TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3") /TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3") /TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.0.2", dst="192.168.0.3") /TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.4", dst="192.168.0.3") /TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.5") /TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.4", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.5")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these two packets dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.4", dst="192.168.0.3")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.5")/TCP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_MAC_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions queue index 1 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=29)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=29)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=29)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_MAC_IPV4_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / tcp src is 25 dst is 23 / end actions queue index 1 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=25,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=20,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=25,dport=19)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / tcp src is 25 dst is 23 / end actions rss queues 1 2 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=25,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 or 2 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=20,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=25,dport=19)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 and 2 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / tcp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=25,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=20,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=25,dport=19)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_MAC_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=25,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_MAC_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / icmp / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send a mismatched packet:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / icmp / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send a mismatched packet:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / udp / vxlan vni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / icmp / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send a mismatched packet:: + + sendp([Ether()/IP(dst="192.168.0.1")/UDP()/VXLAN(vni=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +3. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. + + +Test case: VXLAN pipeline mode +============================== + +1. create switch filter rules and verify + +* MAC_IPV4_VXLAN_IPV4_FRAG + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=5,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=5,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=5,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_PAY (not support in 19.11) + +1) to queue action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue and 3 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_VXLAN_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 50 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=19,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=19,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=19,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / sctp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=19,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=9)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / sctp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=19,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=9)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=19,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=9)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / icmp type is 0x08 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x05)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / icmp type is 0x08 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x05)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / icmp type is 0x08 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x05)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_VXLAN_IPV6_FRAG (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV6_PAY (not support in 19.11) + +1) to queue action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send a mismatched packet:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +2) to queue group action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_VXLAN_IPV6_UDP_PAY (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions rss queues 1 2 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 or 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 and 2 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=29)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV6_TCP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 50 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=50,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 50 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=50,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=50,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV6_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_VXLAN_IPV6_ICMPV6 (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x02)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x02)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x02)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +2. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. + + +Test case: NVGRE non-pipeline mode +================================== + +1. create fdir rules to make the fdir table full, + which can be created as follows:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end + +2. create switch filter rules and verify + +* MAC_IPV4_NVGRE_IPV4_FRAG + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these two packets dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.4", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.5")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / udp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=20,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether()/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=50,dport=19)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions queue index 1 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=39)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions rss queues 1 2 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" )/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 or 2 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=39)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 and 2 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3" )/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=39)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / sctp src is 25 dst is 23 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / sctp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / icmp / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / icmp / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / icmp / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether()/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_NVGRE_MAC_IPV4_FRAG + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5" ,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_MAC_IPV4_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.2")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=3)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a9")/IP(src="192.168.1.2", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.4", dst="192.168.1.3")/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.5")/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_MAC_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=2,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=20)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=2,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=20)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 0x8 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / udp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=2,dport=23)/Raw('x'*80)], iface="enp27s0f2", count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=0x8)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP(sport=25,dport=20)/Raw('x'*80)], iface="enp27s0f2", count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_MAC_IPV4_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / tcp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_MAC_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / sctp src is 25 dst is 23 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / sctp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/SCTP(sport=25,dport=19)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_MAC_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / icmp / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / icmp / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.1 / nvgre tni is 2 / eth dst is 68:05:ca:8d:ed:a8 / ipv4 src is 192.168.1.2 dst is 192.168.1.3 / icmp / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/ICMP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(dst="192.168.0.1")/NVGRE(TNI=2)/Ether(dst="68:05:ca:8d:ed:a8")/IP(src="192.168.1.2", dst="192.168.1.3")/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +3. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. + + +Test case: NVGRE pipeline mode +============================== + +1. create switch filter rules and verify + +* MAC_IPV4_NVGRE_IPV4_FRAG + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=5,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=5,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=5,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_PAY (not support in 19.11) + +1) to queue action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +3) drop action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x11,tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",proto=0x06,tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_NVGRE_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 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 50 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=2,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=100)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 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 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=2,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=100)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 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 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=2,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=100)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=3,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=100)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=3,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=100)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=3,dport=23)/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=100)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / sctp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=4,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=10)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / sctp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=4,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=10)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=4,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=10)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / icmp type is 0x08 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x04)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / icmp type is 0x08 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x04)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / icmp type is 0x08 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x04)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_NVGRE_IPV6_FRAG (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV6_PAY (not support in 19.11) + +1) to queue action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +2) to queue group action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_NVGRE_IPV6_UDP_PAY (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=5,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=5,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=5,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=25,dport=30)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV6_TCP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions queue index 1 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=7,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 1 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=7,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=7,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV6_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions queue index 5 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=39)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 5 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=39)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=20,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=39)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_NVGRE_IPV6_ICMPV6 (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x04)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x04)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 / nvgre / eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x04)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +2. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. + + +Test case: PPPOD non-pipeline mode +================================== + +1. create fdir rules to make the fdir table full, + which can be created as follows:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end + +2. create switch filter rules and verify + +* MAC_PPPOD_PAY + +1) to queue action + +create rules:: + + testpmd> flow create 0 ingress pattern eth type is 0x8863 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x' *80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP()/IP()/Raw('x' *80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth type is 0x8863 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x' *80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP()/IP()/Raw('x' *80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth type is 0x8863 / end actions drop / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x' *80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP()/IP()/Raw('x' *80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +3. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. + + +Test case: PPPOE non-pipeline mode +================================== + +1. create fdir rules to make the fdir table full, + which can be created as follows:: + + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 / end + +2. create switch filter rules and verify + +* MAC_PPPOE_PAY + +1) to queue action + +create rules:: + + testpmd> flow create 0 ingress pattern eth type is 0x8864 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP()/IP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth type is 0x8864 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP()/IP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth type is 0x8864 / end actions drop / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP()/IP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_PPPOE_IPV4_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions queue index 1 / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 1 + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 1 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / vlan tci is 1 / pppoes / end actions drop / end + +send matched packets:: + + sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether(dst="00:11:22:33:44:54",type=0x8100)/Dot1Q(vlan=1,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x8864)/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +3. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. + + +Test case: Non-tunnel pipeline mode +=================================== + +1. create switch filter rules and verify + +* MAC_IPV4_FRAG + +1) to queue action + +create a rule:: + + 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 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=7,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +create a rule with partial fields:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + 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 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=7,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +create a rule with partial fields:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + + verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + 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 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=7,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +create a rule with partial fields:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.3",tos=4,frag=5)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.4", dst="192.168.0.3",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2", dst="192.168.0.5",tos=4,frag=5)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_PAY + +1) to queue action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 and 3 + +3) drop action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x06 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 proto is 0x11 tos is 4 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV4_UDP_PAY + +1) to queue action + +create a rule:: + + 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 / udp src is 50 dst is 23 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=2,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=3)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 + +2) to queue group action + +create a rule:: + + 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 / udp src is 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=2,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=3)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + 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 / udp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=2,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/UDP(sport=50,dport=3)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_TCP + +1) to queue action + +create a rule:: + + 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 50 dst is 23 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=5,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=7)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule:: + + 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 50 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=5,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=7)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + 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 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=5,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/TCP(sport=50,dport=7)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + 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 / sctp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=3)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 + +2) to queue group action + +create a rule:: + + 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 / sctp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=3)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + 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 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/SCTP(sport=25,dport=3)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV4_ICMP (not support in 19.11) + +1) to queue action + +create a rule:: + + 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 / icmp type is 0x08 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x04)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + 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 / icmp type is 0x08 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x04)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + 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 / icmp type is 0x08 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x08)/Raw('x' * 80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IP(src="192.168.0.2",dst="192.168.0.3",tos=4)/ICMP(type=0x04)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV6_FRAG + +1) to queue action + +create a rule with src ipv6 + dst ipv6:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1515 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 5 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 5 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1514",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 5 + +create a rule with dst ipv6 + tc:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2027",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 3 + +2) to queue group action + +create a rule with src ipv6 + dst ipv6:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1515 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1514",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +create a rule with dst ipv6 + tc:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2027",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule with src ipv6 + dst ipv6:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 src is CDCD:910A:2222:5498:8475:1111:3900:1515 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1514",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2023",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +create a rule with dst ipv6 + tc:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2027",tc=3)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=4)/IPv6ExtHdrFragment()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV6_PAY (not support in 19.11) + +1) to queue action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions queue index 3 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 3 + +2) to queue group action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule for tcp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x06 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +create a rule for udp:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 0x11 tc is 3 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x11,tc=3)/UDP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",nh=0x06,tc=3)/TCP()/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +* MAC_IPV6_UDP_PAY + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 50 dst is 23 / end actions queue index 5 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 5 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=3,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=50,dport=4)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 5 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 50 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=3,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=50,dport=4)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / udp src is 50 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=50,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=3,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/UDP(sport=50,dport=4)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these packets not dropped + +* MAC_IPV6_TCP + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / tcp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/TCP(sport=25,dport=20)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets not dropped + +* MAC_IPV6_SCTP (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions queue index 4 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=9)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets not to queue 4 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions rss queues 2 3 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 or 3 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=9)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets not to queue 2 and 3 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / sctp src is 25 dst is 23 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=1,dport=23)/Raw('x'*80)],iface="enp27s0f2",count=1) + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/SCTP(sport=25,dport=9)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify these two packets not dropped + +* MAC_IPV6_ICMPV6 (not support in 19.11) + +1) to queue action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions queue index 2 / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 2 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x03)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 2 + +2) to queue group action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions rss queues 4 5 end / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet to queue 4 or 5 + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x03)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not to queue 4 and 5 + +3) drop action + +create a rule:: + + testpmd> flow create 0 priority 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 tc is 3 / icmp type is 0x01 / end actions drop / end + +send matched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x01)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet dropped + +send mismatched packets:: + + sendp([Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1515",dst="CDCD:910A:2222:5498:8475:1111:3900:2020",tc=3)/ICMP(type=0x03)/Raw('x'*80)],iface="enp27s0f2",count=1) + +verify this packet not dropped + +2. verify rules can be listed and destroyed:: + + testpmd> flow list 0 + + verify the rule exists in the list. + destroy the rule, suppose the rule number is 0:: + + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 + + verify the rule does not exist, and send matched packets, the packets are not to the corresponding queues. -- 2.17.1