From patchwork Thu Sep 9 14:47:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yaqi Tang X-Patchwork-Id: 98404 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id F0092A0547; Thu, 9 Sep 2021 08:49:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EADFC40E09; Thu, 9 Sep 2021 08:49:07 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 6B21A4003E for ; Thu, 9 Sep 2021 08:49:06 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10101"; a="217542506" X-IronPort-AV: E=Sophos;i="5.85,279,1624345200"; d="scan'208";a="217542506" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Sep 2021 23:49:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,279,1624345200"; d="scan'208";a="469950002" Received: from dpdk-yaqi.sh.intel.com ([10.67.118.175]) by orsmga007.jf.intel.com with ESMTP; 08 Sep 2021 23:49:02 -0700 From: Yaqi Tang To: dts@dpdk.org Cc: Yaqi Tang Date: Thu, 9 Sep 2021 14:47:48 +0000 Message-Id: <20210909144748.850901-1-yaqi.tang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [dts] [PATCH V3] tests/cvl_switch_filter_pppoe:add test cases for cvl switch filter pppoe support l4 mask 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 Sender: "dts" CVL Support l4 mask filter in PF driver for switch filter, and port can support mask like "udp src is 22 src mask 0xf". Signed-off-by: Yaqi Tang Tested-by: Yaqi Tang --- tests/TestSuite_cvl_switch_filter_pppoe.py | 220 +++++++++++++++++++++ 1 file changed, 220 insertions(+) diff --git a/tests/TestSuite_cvl_switch_filter_pppoe.py b/tests/TestSuite_cvl_switch_filter_pppoe.py index c2949546..a33bb2fe 100644 --- a/tests/TestSuite_cvl_switch_filter_pppoe.py +++ b/tests/TestSuite_cvl_switch_filter_pppoe.py @@ -109,6 +109,218 @@ tvs_ethertype_filter_pppoes = [ tv_ethertype_filter_pppoes_drop_03 ] +#l4 mask +#ipv4/ipv6 + udp/tcp pipeline mode +mac_pppoes_ipv4_udp_l4_mask_scapy_str = { + "matched": [ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=2304,dport=23)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=2244,dport=23)/Raw("x"*80)' + ] +} + +tv_mac_pppoes_ipv4_udp_l4_mask_in_queue_01 = { + "name":"tv_mac_pppoes_ipv4_udp_l4_mask_in_queue_01", + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp src is 2500 src mask 0xf00 / end actions queue index 1 / end", + "configuration":{ + "is_non_pipeline":False, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_pppoes_ipv4_udp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_in_queue, + "param":{"expect_port":0, "expect_queues":1}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_pppoes_ipv4_udp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_in_queue_mismatched, + "param":{"expect_port":0, "expect_queues":1}}, + "expect_results":{"expect_pkts":1}} +} + +mac_pppoes_ipv4_tcp_l4_mask_scapy_str = { + "matched": [ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=2304,dport=23)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=2244,dport=23)/Raw("x"*80)' + ] +} + +tv_mac_pppoes_ipv4_tcp_l4_mask_in_queue_02 = { + "name":"tv_mac_pppoes_ipv4_tcp_l4_mask_in_queue_02", + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp src is 2500 src mask 0xf00 / end actions queue index 3 / end", + "configuration":{ + "is_non_pipeline":False, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_pppoes_ipv4_tcp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_in_queue, + "param":{"expect_port":0, "expect_queues":3}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_pppoes_ipv4_tcp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_in_queue_mismatched, + "param":{"expect_port":0, "expect_queues":3}}, + "expect_results":{"expect_pkts":1}} +} + +mac_pppoes_ipv6_udp_l4_mask_scapy_str = { + "matched":[ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=1282)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=1040)/Raw("x"*80)' + ] +} + +tv_mac_pppoes_ipv6_udp_l4_mask_queue_region_03 = { + "name":"tv_mac_pppoes_ipv6_udp_l4_mask_queue_region_03", + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp dst is 1025 dst mask 0xf0 / end actions rss queues 4 5 end / end", + "configuration":{ + "is_non_pipeline":False, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_pppoes_ipv6_udp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_queue_region, + "param":{"expect_port":0, "expect_queues":[4, 5]}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_pppoes_ipv6_udp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_queue_region_mismatched, + "param":{"expect_port":0, "expect_queues":[4, 5]}}, + "expect_results":{"expect_pkts":1}} +} + +mac_pppoes_ipv6_tcp_l4_mask_scapy_str = { + "matched":[ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=1282)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=1040)/Raw("x"*80)' + ] +} + +tv_mac_pppoes_ipv6_tcp_l4_mask_drop_04 = { + "name":"tv_mac_pppoes_ipv6_tcp_l4_mask_drop_04", + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp dst is 1025 dst mask 0xf0 / end actions drop / end", + "configuration":{ + "is_non_pipeline":False, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_pppoes_ipv6_tcp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_drop, + "param":{"expect_port":0, "expect_queues":"null"}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_pppoes_ipv6_tcp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_drop_mismatched, + "param":{"expect_port":0, "expect_queues":"null"}}, + "expect_results":{"expect_pkts":1}} +} + +tvs_mac_pppoes_l4_mask = [ + tv_mac_pppoes_ipv4_udp_l4_mask_in_queue_01, + tv_mac_pppoes_ipv4_tcp_l4_mask_in_queue_02, + tv_mac_pppoes_ipv6_udp_l4_mask_queue_region_03, + tv_mac_pppoes_ipv6_tcp_l4_mask_drop_04, +] + +#vlan non-pipeline mode + +mac_vlan_pppoes_ipv4_udp_l4_mask_scapy_str = { + "matched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=50,dport=1024)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=50,dport=1281)/Raw("x"*80)' + ] +} + +tv_mac_vlan_pppoes_ipv4_udp_l4_mask_in_queue_01 = { + "name":"tv_mac_vlan_pppoes_ipv4_udp_l4_mask_in_queue_01", + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / udp dst is 1280 dst mask 0x00ff / end actions queue index 1 / end", + "configuration":{ + "is_non_pipeline":True, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_vlan_pppoes_ipv4_udp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_in_queue, + "param":{"expect_port":0, "expect_queues":1}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_vlan_pppoes_ipv4_udp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_in_queue_mismatched, + "param":{"expect_port":0, "expect_queues":1}}, + "expect_results":{"expect_pkts":1}} +} + +mac_vlan_pppoes_ipv4_tcp_l4_mask_scapy_str = { + "matched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=50,dport=1024)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0021)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=50,dport=1281)/Raw("x"*80)' + ] +} + +tv_mac_vlan_pppoes_ipv4_tcp_l4_mask_queue_region_02 = { + "name":"tv_mac_vlan_pppoes_ipv4_tcp_l4_mask_queue_region_02", + "rte_flow_pattern":"flow create 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / tcp dst is 1280 dst mask 0x00ff / end actions rss queues 4 5 end / end", + "configuration":{ + "is_non_pipeline":True, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_vlan_pppoes_ipv4_tcp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_queue_region, + "param":{"expect_port":0, "expect_queues":[4, 5]}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_vlan_pppoes_ipv4_tcp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_queue_region_mismatched, + "param":{"expect_port":0, "expect_queues":[4, 5]}}, + "expect_results":{"expect_pkts":1}} +} + +#vlan pipeline mode +mac_vlan_pppoes_ipv6_udp_l4_mask_scapy_str = { + "matched":[ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=16,dport=23)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=17,dport=23)/Raw("x"*80)' + ] +} + +tv_mac_vlan_pppoes_ipv6_udp_l4_mask_drop_03 = { + "name":"tv_mac_vlan_pppoes_ipv6_udp_l4_mask_drop_03", + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / udp src is 32 src mask 0x0f / end actions drop / end", + "configuration":{ + "is_non_pipeline":False, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_vlan_pppoes_ipv6_udp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_drop, + "param":{"expect_port":0, "expect_queues":"null"}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_vlan_pppoes_ipv6_udp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_drop_mismatched, + "param":{"expect_port":0, "expect_queues":"null"}}, + "expect_results":{"expect_pkts":1}} +} + +mac_vlan_pppoes_ipv6_tcp_l4_mask_scapy_str = { + "matched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(dport=16)/Raw("x"*80)'], + "mismatched": [ + 'Ether()/Dot1Q(vlan=1,type=0x8864)/PPPoE(sessionid=3)/PPP(proto=0x0057)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(dport=17)/Raw("x"*80)' + ] +} + +tv_mac_vlan_pppoes_ipv6_tcp_l4_mask_in_queue_04 = { + "name":"tv_mac_vlan_pppoes_ipv6_tcp_l4_mask_in_queue_04", + "rte_flow_pattern":"flow create 0 priority 0 ingress pattern eth / vlan tci is 1 / pppoes / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2022 / tcp dst is 32 dst mask 0x0f / end actions queue index 7 / end", + "configuration":{ + "is_non_pipeline":False, + "is_need_rss_rule":False}, + "matched":{"scapy_str":mac_vlan_pppoes_ipv6_tcp_l4_mask_scapy_str["matched"], + "check_func":{"func":rfc.check_output_log_in_queue, + "param":{"expect_port":0, "expect_queues":7}}, + "expect_results":{"expect_pkts":1}}, + "mismatched":{"scapy_str":mac_vlan_pppoes_ipv6_tcp_l4_mask_scapy_str["mismatched"], + "check_func":{"func":rfc.check_output_log_in_queue_mismatched, + "param":{"expect_port":0, "expect_queues":7}}, + "expect_results":{"expect_pkts":1}} +} + +tvs_mac_vlan_pppoes_l4_mask = [ + tv_mac_vlan_pppoes_ipv4_udp_l4_mask_in_queue_01, + tv_mac_vlan_pppoes_ipv4_tcp_l4_mask_queue_region_02, + tv_mac_vlan_pppoes_ipv6_udp_l4_mask_drop_03, + tv_mac_vlan_pppoes_ipv6_tcp_l4_mask_in_queue_04, + +] + #20.08 mac_vlan_pppoe_ipv4_pay_session_id_proto_id_scapy_str = { "matched": [ @@ -2462,6 +2674,14 @@ class CVLSwitchFilterPPPOETest(TestCase): self.dut.send_expect("flow create 0 ingress pattern eth / pppoes / end actions rss types pppoe end key_len 0 queues end / end", "testpmd> ", 15) self._rte_flow_validate_pattern(tvs_ethertype_filter_pppoes, False) + #l4 mask + def test_mac_pppoes_l4_mask(self): + self._rte_flow_validate_pattern(tvs_mac_pppoes_l4_mask) + + def test_mac_vlan_pppoes_l4_mask(self): + self._rte_flow_validate_pattern(tvs_mac_vlan_pppoes_l4_mask) + + # 20.08 def test_mac_vlan_pppoe_ipv4_pay_non_pipeline_mode(self): self._rte_flow_validate_pattern(tvs_mac_vlan_pppoe_ipv4_pay_session_id_proto_id)