From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 679A2A00BE; Tue, 15 Mar 2022 09:29:50 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2BAA240395; Tue, 15 Mar 2022 09:29:50 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id EDB964014F for ; Tue, 15 Mar 2022 09:29:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647332988; x=1678868988; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=uWrbPEMmq8/RSmbNA+vFt8Lr0qa8e/mSk9bXRciuAQk=; b=ntGqjVQxuFGRZE4+XjZkawJcZCqLj3azT0ZlS+hA8DPiJtyzoFEQG+Tu 4oAFh8CkRJPF7BU98U05M+3m9Hbg3lt7+XBZxvXqve9xh98Kh19FcNN+1 MRyKifpVEEeOthcYo2+IqM1f1TX2qGP5oumpCZW0oDPOI4n1HPm1ERwX6 fL2zD4PsPoT2rJ/PextnHuuMEOsNh+7vkELxM54DMkllI/T9QmXp+qEJd ciVzV4WBESb6wWPaGRn2VwGWqw78EZ7nyo7lm6cJap6g+sVwK3kLST1aY SOKIU5Ng3Jg+bxSho2GJFBsFqnOm0HfQMkSlSia6ZixqqNW5kA9i+jRfI w==; X-IronPort-AV: E=McAfee;i="6200,9189,10286"; a="255973751" X-IronPort-AV: E=Sophos;i="5.90,182,1643702400"; d="scan'208";a="255973751" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Mar 2022 01:29:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,182,1643702400"; d="scan'208";a="540338613" Received: from dpdk-yaqi.sh.intel.com ([10.67.118.156]) by orsmga007.jf.intel.com with ESMTP; 15 Mar 2022 01:29:44 -0700 From: Yaqi Tang To: dts@dpdk.org Cc: Yaqi Tang Subject: [dts][PATCH V1] test_plans/cvl_iavf_fdir_pppol2tpoudp: cvl iavf enable fdir for pppol2tpoudp Date: Tue, 15 Mar 2022 16:29:43 +0800 Message-Id: <20220315082943.471904-1-yaqi.tang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Support IAVF PPPoL2TPv2oUDP FDIR, and required to distribute packets based on MAC src, L2TP session ID, inner IP src+dest address and TCP/UDP src+dest port. Signed-off-by: Yaqi Tang Tested-by: Yaqi Tang < yaqi.tang@intel.com> --- .../cvl_iavf_fdir_pppol2tpoudp_test_plan.rst | 1931 +++++++++++++++++ 1 file changed, 1931 insertions(+) create mode 100644 test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst diff --git a/test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst b/test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst new file mode 100644 index 00000000..76cbdd20 --- /dev/null +++ b/test_plans/cvl_iavf_fdir_pppol2tpoudp_test_plan.rst @@ -0,0 +1,1931 @@ +.. Copyright (c) <2022>, 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 IAVF: FDIR For PPPoL2TPv2oUDP +================================= + +Description +=========== + +Support IAVF PPPoL2TPv2oUDP FDIR. +Required to distribute packets based on MAC src, L2TP session ID, inner IP src+dest address and TCP/UDP src+dest port. + +Prerequisites +============= + +Topology +-------- +1node/1nic/2port/fwd +2node/1nic/1port/loopback + +Hardware +-------- +Supportted NICs: columbiaville_25g/columbiaville_100g + +Software +-------- +dpdk: http://dpdk.org/git/dpdk +scapy: http://www.secdev.org/projects/scapy/ + +General set up +-------------- +1. Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.pkg, + then load driver:: + + # cp /lib/firmware/updates/intel/ice/ddp/ice.pkg + # rmmod ice + # insmod /ice.ko + +2. Compile DPDK:: + + # CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static + # ninja -C -j 110 + +3. Get the pci device id and interface of DUT and tester. + For example, 0000:3b:00.0 and 0000:af:00.0 is pci device id, + ens785f0 and ens260f0 is interface:: + + # ./usertools/dpdk-devbind.py -s + + 0000:3b:00.0 'Ethernet Controller E810-C for SFP 1593' if=ens785f0 drv=ice unused=vfio-pci + 0000:af:00.0 'Ethernet Controller XXV710 for 25GbE SFP28 158b' if=ens260f0 drv=i40e unused=vfio-pci + +4. Generate 1 VF on PF0, set mac address for this VF:: + + # echo 1 > /sys/bus/pci/devices/0000:3b:00.0/sriov_numvfs + # ip link set ens785f0 vf 0 mac 00:11:22:33:44:55 + +5. Bind the DUT port to dpdk:: + + # ./usertools/dpdk-devbind.py -b vfio-pci + +6. Launch the userland ``testpmd`` application on DUT as follows and :: + + /app/dpdk-testpmd -- -i --rxq= --txq= + testpmd> set fwd rxonly + testpmd> set verbose 1 + testpmd> show port info all + testpmd> start + +..note:: + + For , you can use "-l 1,2,3,4 -n 4", you can also refer to testpmd doc for other setings. + +Test Case +========= + +Common Steps +------------ +1. validate rules. +2. create rules and list rules. +3. send matched packets, check the action hiting the rule. +4. send mismatched packets, check the packets will not hit any rules. +5. destroy rule, list rules. +6. send matched packets, check the packets will not hit any rules. + +All the packets in this test plan use below settings: +src mac: 11:22:33:44:55:77 +src mac change inputset: 00:00:00:00:00:01 +session_id: 0x1111 +session_id change inputset: 0x2222 +ipv4 src: 10.0.0.11 +ipv4 dst: 10.0.0.22 +ipv4 src change inputset: 10.0.0.10 +ipv4 dst change inputset: 10.0.0.20 +ipv6 src: ABAB:910B:6666:3457:8295:3333:1800:2929 +ipv6 dst: CDCD:910A:2222:5498:8475:1111:3900:2020 +ipv6 src change inputset: ABAB:910B:6666:3457:8295:3333:1800:2920 +ipv6 dst change inputset: CDCD:910A:2222:5498:8475:1111:3900:2022 +dport: 1701 +offset: 6 +sport: 11 +sport change inputset: 10 +dport: 22 +dport change inputset: 20 + +Test case 1: MAC_IPV4_L2TPV2_CONTROL +------------------------------------ +This case is designed to check distribute MAC IPv4 L2TPV2 control packets based on MAC src and L2TP session ID as input set. + +Subcase 1: l2tpv2_session_id_MAC_IPV4_L2TPV2_CONTROL +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type control session_id is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +Subcase 2: eth_l2_src_only_MAC_IPV4_L2TPV2_CONTROL +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type control / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +Test case 2: MAC_IPV6_L2TPV2_CONTROL +------------------------------------ +This case is designed to check distribute MAC IPv6 L2TPV2 control packets based on MAC src and L2TP session ID as input set. + +Subcase 1: l2tpv2_session_id_MAC_IPV6_L2TPV2_CONTROL +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type control session_id is 0x1111 / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +Subcase 2: eth_l2_src_only_MAC_IPV6_L2TPV2_CONTROL +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type control / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0xc80,len=12,session_id=)], iface="") + +Test case 3: MAC_IPV4_L2TPV2 +---------------------------- +This case is designed to check distribute MAC IPv4 L2TPV2 data packets based on MAC src and L2TP session ID as input set. + +Subcase 1: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +Subcase 2: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +Subcase 3: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +Subcase 4: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_l / end actions queue index 3/ end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +Subcase 5: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +Subcase 6: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_s / end actions queue index 6 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +Subcase 7: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is offset_size is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +Subcase 8: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_o offset_size is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +Subcase 9: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +Subcase 10: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_l_s / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +Test case 4: MAC_IPV6_L2TPV2 +---------------------------- +This case is designed to check distribute MAC IPv6 L2TPV2 data packets based on MAC src and L2TP session ID as input set. + +Subcase 1: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +Subcase 2: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)], iface="") + +Subcase 3: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +Subcase 4: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_l / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=8,session_id=)], iface="") + +Subcase 5: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +Subcase 6: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_s / end actions queue index 6 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)], iface="") + +Subcase 7: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is offset_size is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +Subcase 8: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_o offset_size is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)], iface="") + +Subcase 9: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +Subcase 10: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_l_s / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=12,session_id=)], iface="") + +Test case 5: MAC_IPV4_PPPoL2TPV2 +-------------------------------- +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 data packets based on MAC src and L2TP session ID as input set. + +Subcase 1: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 2: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data / ppp / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 3: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is / ppp / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 4: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_l / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 5: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is / ppp / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 6: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_s / ppp / end actions queue index 6/ end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 7: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is offset_size is / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 8: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 9: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is / ppp / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 10: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv4 / udp / l2tpv2 type data_l_s / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Test case 6: MAC_IPV6_PPPoL2TPV2 +-------------------------------- +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 data packets based on MAC src and L2TP session ID as input set. + +Subcase 1: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 2: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data / ppp / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 3: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is / ppp / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 4: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_l / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=12,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 5: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is / ppp / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 6: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_s / ppp / end actions queue index 6 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 7: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is offset_size is / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 8: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,session_id=,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 9: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is / ppp / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Subcase 10: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth src is / ipv6 / udp / l2tpv2 type data_l_s / ppp / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=16,session_id=)/HDLC()/Raw(b"\\x00\\x00")], iface="") + +Test case 7: MAC_IPV4_PPPoL2TPV2_IPV4_PAY +----------------------------------------- +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv4 data packets based on inner IP src+dest address as input set. + +Subcase 1: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv4 src is dst is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 2: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv4 src is dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 3: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv4 src is dst is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/iIP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 4: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / ipv4 src is dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 5: ipv4_MAC_IPV4_PPPoL2TPV2_IPV4_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Test case 8: MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY +--------------------------------------------- +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv4 UDP data packets based on IP src+dest address and inner UDP src+dest port as input set. + +Subcase 1: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv4 src is / udp src is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(sport=)], iface="") + +Subcase 2: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv4 src is / udp dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +Subcase 3: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv4 dst is / udp src is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + +Subcase 4: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / ipv4 dst is / udp dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + +Subcase 5: ipv4_udp_MAC_IPV4_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is / udp dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +Test case 9: MAC_IPV4_PPPoL2TPV2_IPV4_TCP +----------------------------------------- +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv4 TCP data packets based on IP src+dest address and inner TCP src+dest port as input set. + +Subcase 1: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv4 src is / tcp src is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(sport=)], iface="") + +Subcase 2: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv4 src is / tcp dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +Subcase 3: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv4 dst is / tcp src is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + +Subcase 4: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / ipv4 dst is / tcp dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + +Subcase 5: ipv4_tcp_MAC_IPV4_PPPoL2TPV2_IPV4_TCP_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is / tcp dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +Test case 10: MAC_IPV4_PPPoL2TPV2_IPV6_PAY +------------------------------------------ +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv6 data packets based on IP src+dest address as input set. + +Subcase 1: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv6 src is dst is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 2: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv6 src is dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 3: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv6 src is dst is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 4: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / ipv6 src is 9 dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 5: ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Test case 11: MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY +---------------------------------------------- +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv6 data packets based on IP src+dest address and inner UDP src+dest port as input set. + +Subcase 1: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv6 dst is / udp src is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +Subcase 2: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv6 src is / udp dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +Subcase 3: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv6 dst is / udp src is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +Subcase 4: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / ipv6 src is / udp dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +Subcase 5: ipv6_udp_MAC_IPV4_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv6 dst is / udp dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + +Test case 12: MAC_IPV4_PPPoL2TPV2_IPV6_TCP +------------------------------------------ +This case is designed to check distribute MAC IPv4 PPPoL2TPV2 IPv6 data packets based on IP src+dest address and inner TCP src+dest port as input set. + +Subcase 1: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data / ppp / ipv6 dst is / tcp src is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +Subcase 2: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l / ppp / ipv6 src is / tcp dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + +Subcase 3: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s / ppp / ipv6 dst is / tcp src is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +Subcase 4: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o offset_size is / ppp / ipv6 src is / tcp dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + +Subcase 5: ipv6_tcp_MAC_IPV4_PPPoL2TPV2_IPV6_TCP_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is / tcp src is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + +Test case 13: MAC_IPV6_PPPoL2TPV2_IPV4_PAY +------------------------------------------ +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv4 data packets based on IP src+dest address as input set. + +Subcase 1: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv4 src is dst is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 2: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv4 src is dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=32)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 3: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv4 src is dst is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 4: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / ipv4 src is dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Subcase 5: ipv4_MAC_IPV6_PPPoL2TPV2_IPV4_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv4 src is dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=36)/HDLC()/Raw(b"\\x00\\x21")/IP(src="",dst="")], iface="") + +Test case 14: MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY +---------------------------------------------- +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv4 UDP data packets based on IP src+dest address and inner UDP src+dest port as input set. + +Subcase 1: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv4 src is / udp dst is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +Subcase 2: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv4 dst is / udp src is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=40)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + +Subcase 3: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv4 src is / udp dst is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/UDP(dport=)], iface="") + +Subcase 4: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / ipv4 dst is / udp src is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(sport=)], iface="") + +Subcase 5: ipv4_udp_MAC_IPV6_PPPoL2TPV2_IPV4_UDP_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv4 dst is / udp dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=44)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/UDP(dport=)], iface="") + +Test case 15: MAC_IPV6_PPPoL2TPV2_IPV4_TCP +------------------------------------------ +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv4 TCP data packets based on IP src+dest address and inner TCP src+dest port as input set. + +Subcase 1: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv4 src is / tcp dst is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +Subcase 2: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv4 dst is / tcp src is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + +Subcase 3: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv4 src is / tcp dst is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x21")/IP(src="")/TCP(dport=)], iface="") + +Subcase 4: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / ipv4 dst is / tcp src is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(sport=)], iface="") + +Subcase 5: ipv4_tcp_MAC_IPV6_PPPoL2TPV2_IPV4_TCP_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv4 dst is / tcp dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x21")/IP(dst="")/TCP(dport=)], iface="") + +Test case 16: MAC_IPV6_PPPoL2TPV2_IPV6_PAY +------------------------------------------ +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv6 data packets based on IP src+dest address as input set. + +Subcase 1: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv6 src is dst is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="7")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 2: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv6 src is dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=52)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 3: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv6 src is dst is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 4: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / ipv6 src dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Subcase 5: ipv6_MAC_IPV6_PPPoL2TPV2_IPV6_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=56)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="",dst="")], iface="") + +Test case 17: MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY +---------------------------------------------- +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv6 UDP data packets based on IP src+dest address and inner UDP src+dest port as input set. + +Subcase 1: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv6 dst is / udp src is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +Subcase 2: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv6 src is / udp dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=60)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +Subcase 3: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv6 dst is / udp src is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(sport=)], iface="") + +Subcase 4: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / ipv6 src is / udp dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/UDP(dport=)], iface="") + +Subcase 5: ipv6_udp_MAC_IPV6_PPPoL2TPV2_IPV6_UDP_PAY_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv6 dst is / udp dst is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=64)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/UDP(dport=)], iface="") + +Test case 18: MAC_IPV6_PPPoL2TPV2_IPV6_TCP +------------------------------------------ +This case is designed to check distribute MAC IPv6 PPPoL2TPV2 IPv6 TCP data packets based on IP src+dest address and inner TCP src+dest port as input set. + +Subcase 1: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data / ppp / ipv6 dst is / tcp src is / end actions queue index 3 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x000)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +Subcase 2: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_L +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l / ppp / ipv6 src is / tcp dst is / end actions queue index 5 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x400,len=72)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + +Subcase 3: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s / ppp / ipv6 dst is / tcp src is / end actions queue index 7 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x080)/HDLC()/Raw(b"\\x00\\x57")/IPv6(dst="")/TCP(sport=)], iface="") + +Subcase 4: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_O +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o offset_size is / ppp / ipv6 src is / tcp dst is / end actions queue index 2 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(dport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x020,offset=)/Raw(b"\\x00\\x00\\x00\\x00")/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + +Subcase 5: ipv6_tcp_MAC_IPV6_PPPoL2TPV2_IPV6_TCP_DATA_L_S +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +rules:: + + testpmd> flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s / ppp / ipv6 src is / tcp src is / end actions queue index 4 / end + +matched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + +mismatched packets:: + + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IPv6()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + >>> sendp([Ether(src="")/IP()/UDP(dport=)/L2TP(hdr=0x480,len=76)/HDLC()/Raw(b"\\x00\\x57")/IPv6(src="")/TCP(sport=)], iface="") + -- 2.25.1