From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7B84CA04AB; Mon, 31 Aug 2020 04:32:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 321121DBD; Mon, 31 Aug 2020 04:32:45 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id A82D2CF3 for ; Mon, 31 Aug 2020 04:32:42 +0200 (CEST) IronPort-SDR: sSs7drpKsWg313V+m3JjFIWkRwDMvUtILK5xUFk9DOMaXShcuIfiPHnpZz8dH2/q0bk1My+QoL MzfzFcK6iz9g== X-IronPort-AV: E=McAfee;i="6000,8403,9729"; a="157913712" X-IronPort-AV: E=Sophos;i="5.76,374,1592895600"; d="scan'208";a="157913712" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2020 19:32:40 -0700 IronPort-SDR: LouP8n8EulZZLsmkHPJtS8Mm70LqV7LsAyQsDIatb6Tz05r0IH4RXSNln0bsh+CVsLimszlJ92 8VajH/tcPubQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,374,1592895600"; d="scan'208";a="404309243" Received: from npg_dpdk_nic_yuanpeng_tester62.sh.intel.com ([10.67.119.61]) by fmsmga001.fm.intel.com with ESMTP; 30 Aug 2020 19:32:37 -0700 From: Peng Yuan To: dts@dpdk.org Cc: Peng Yuan Date: Mon, 31 Aug 2020 09:37:24 +0000 Message-Id: <1598866644-168954-1-git-send-email-yuan.peng@intel.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dts] [PATCH v1]test_plans: rework cvl_advanced_rss_test_plan.rst X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" Rework the cvl_advanced_rss_test_plan.rst only include IPv4/IPv6 + TCP/UDP/SCTP include toeplitz, symmetric and simple-xor include basic cases, negative case, multirules case. Signed-off-by: Peng Yuan diff --git a/test_plans/cvl_advanced_rss_test_plan.rst b/test_plans/cvl_advanced_rss_test_plan.rst index 000ac383..69730e06 100644 --- a/test_plans/cvl_advanced_rss_test_plan.rst +++ b/test_plans/cvl_advanced_rss_test_plan.rst @@ -1,4 +1,4 @@ -.. Copyright (c) <2019>, Intel Corporation +.. Copyright (c) <2020>, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without @@ -37,13 +37,13 @@ CVL: Advanced RSS FOR CVL Description =========== -Advanced RSS only support columbiaville nic with ice , throught create rule include related pattern and input-set -to hash IP and ports domain, diversion the packets to the difference queues. +Advanced RSS only support columbiaville nic with ice , through creating rules which include related pattern and input-set +to hash IP and ports domain, diverting the packets to different queues. * inner header hash for tunnel packets, including comms package. -* symmetric hash by rte_flow RSS action. -* input set change by rte_flow RSS action. - +* symmetric hash by rte_flow RSS func. +* input set changed by rte_flow RSS types. + Pattern and input set --------------------- .. table:: @@ -51,79 +51,139 @@ Pattern and input set +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ | Default hash function: Non Symmetric_toeplitz | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | Packet Type | Pattern | Input Set | + | Packet Type | Pattern | All the Input Set options in combination | +===============================+===========================+==================================================================================+ - | IPv4/IPv6 + TCP/UDP/SCTP/ICMP | MAC_IPV4_SRC_ONLY | [Dest MAC],[Source IP] | + | IPv4/IPv6 + TCP/UDP/SCTP | MAC_IPV4 | eth, l2-src-only, l2-dst-only, ipv4, l3-src-only, l3-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_UDP | eth, l2-src-only, l2-dst-only, ipv4-udp, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_TCP | eth, l2-src-only, l2-dst-only, ipv4-tcp, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_SCTP | eth, l2-src-only, l2-dst-only, ipv4-sctp, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6 | eth, l2-src-only, l2-dst-only, ipv6, l3-src-only, l3-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_UDP | eth, l2-src-only, l2-dst-only, ipv6-udp, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_TCP | eth, l2-src-only, l2-dst-only, ipv6-tcp, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_SCTP | eth, l2-src-only, l2-dst-only, ipv6-sctp, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | GTP-U data packet types | MAC_IPV4_GTPU_IPV4 | gtpu, ipv4, l3-src-only, l3-dst-only | + | IPv4/IPv6 transport | | | + | IPv4/IPv6 payload | | | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV4_UDP | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV4_TCP | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV6 | gtpu, ipv6, l3-src-only, l3-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV6_UDP | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV6_TCP | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV4 | gtpu, ipv4, l3-src-only, l3-dst-only | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV4_UDP | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_DST_ONLY_FRAG | [Dest MAC],[Dest IP] | + | | MAC_IPV6_GTPU_IPV4_TCP | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_PAY | [Dest MAC],[Source IP], [Dest IP] | + | | MAC_IPV6_GTPU_IPV6 | gtpu, ipv6, l3-src-only, l3-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_SRC_ICMP | [Dest MAC],[Source IP] | + | | MAC_IPV6_GTPU_IPV6_UDP | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_DST_ICMP | [Dest MAC],[Source IP] | + | | MAC_IPV6_GTPU_IPV6_TCP | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_UDP_L3SRC_L4DST | [Dest MAC],[Source IP],[Dest Port] | + | | MAC_IPV4_GTPU_EH_IPV4 | gtpu, ipv4, l3-src-only, l3-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_UDP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | + | | MAC_IPV4_GTPU_EH_IPV4_UDP | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_TCP_L3SRC_L4DST | [Dest MAC],[Source IP],[Dest Port] | + | | MAC_IPV4_GTPU_EH_IPV4_TCP | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_TCP_L3DST_L4SRC | [Dest MAC],[Dest IP],[Source Port] | + | | MAC_IPV4_GTPU_EH_IPV6 | gtpu, ipv6, l3-src-only, l3-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_TCP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | + | | MAC_IPV4_GTPU_EH_IPV6_UDP | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_SCTP_L3SRC_L4DST | [Dest MAC],[Source IP],[Dest Port] | + | | MAC_IPV4_GTPU_EH_IPV6_TCP | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_SCTP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | + | | MAC_IPV6_GTPU_EH_IPV4 | gtpu, ipv4, l3-src-only, l3-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_ICMP | [Inner Source IP], [Inner Dest IP] | + | | MAC_IPV6_GTPU_EH_IPV4_UDP | gtpu, ipv4-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_L3SRC_ICMP | [Inner MAC][Inner Source IP] | + | | MAC_IPV6_GTPU_EH_IPV4_TCP | gtpu, ipv4-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_L3DST_ICMP | [Inner MAC][Inner Dest IP] | + | | MAC_IPV6_GTPU_EH_IPV6 | gtpu, ipv6, l3-src-only, l3-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_TCP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | + | | MAC_IPV6_GTPU_EH_IPV6_UDP | gtpu, ipv6-udp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_SCTP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | + | | MAC_IPV6_GTPU_EH_IPV6_TCP | gtpu, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_ICMP | [Inner Source IP], [Inner Dest IP] | + | VLAN | MAC_VLAN_IPV4 | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_L3SRC_ICMP | [Inner MAC][Inner Source IP] | + | | MAC_VLAN_IPV4_UDP_PAY | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_L3DST_ICMP | [Inner MAC][Inner Dest IP] | + | | MAC_VLAN_IPV4_TCP_PAY | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_TCP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | + | | MAC_VLAN_IPV4_SCTP_PAY | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_SCTP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | + | | MAC_VLAN_IPV6 | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_UDP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | + | | MAC_VLAN_IPV6_UDP_PAY | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV6_SRC_ONLY | [Dest MAC],[Source IP] | + | | MAC_VLAN_IPV6_TCP_PAY | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV6_DST_ONLY_FRAG | [Dest MAC],[Dest IP] | + | | MAC_VLAN_IPV6_SCTP_PAY | c-vlan | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV6_PAY | [Dest MAC],[Source IP], [Dest IP], | + | PPPOES | MAC_PPPOES_IPV4 | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, ipv4 | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV6_UDP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | + | | MAC_PPPOES_IPV4_UDP | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only, ipv4-udp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV6_TCP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | + | | MAC_PPPOES_IPV4_TCP | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only, ipv4-tcp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV6_SCTP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | + | | MAC_PPPOES_IPV4_SCTP | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only, ipv4-sctp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_PPPOE_PPPOD | [Dest MAC],[Session ID],[Proto] ,[Source IP] ,[Dest IP] | + | | MAC_PPPOES_IPV6 | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, ipv6 | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_PPPOE_TCP | [Dest MAC],[Session ID],[Proto],[Source IP],[Dest IP],[Source Port],[Dest Port] | + | | MAC_PPPOES_IPV6_UDP | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only, ipv6-udp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_PPPOE_UDP | [Dest MAC],[Session ID],[Proto],[Source IP],[Dest IP],[Source Port],[Dest Port] | + | | MAC_PPPOES_IPV6_TCP | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only, ipv6-tcp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_PPPOE_TCP | [Dest MAC],[Session ID],[Proto],[Source IP],[Dest IP],[Source Port],[Dest Port] | + | | MAC_PPPOES_IPV6_SCTP | eth, l2-src-only, l2-dst-only, l3-src-only, l3-dst-only, | + | | | l4-src-only, l4-dst-only, ipv6-udp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_PPPOE_ICMP | [Dest MAC],[Session ID],[Proto],[Source IP],[Dest IP] | + | | MAC_PPPOES | eth, l2-src-only, l2-dst-only, pppoe | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_GTP | [TEID] | + | ESP | MAC_IPV4_ESP | esp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ - | | MAC_IPV4_GTPU_IPV4_TCP | [TEID] | + | | MAC_IPV4_UDP_ESP | esp | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_ESP | esp | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_UDP_ESP | esp | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | AH | MAC_IPV4_AH | ah | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_AH | ah | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | L2TP | MAC_IPV4_L2TP | l2tpv3 | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_L2TP | l2tpv3 | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | PFCP | MAC_IPV4_PFCP | pfcp | + +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ + | | MAC_IPV6_PFCP | pfcp | +-------------------------------+---------------------------+----------------------------------------------------------------------------------+ .. table:: @@ -133,111 +193,98 @@ Pattern and input set +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ | Packet Type | Pattern | Input Set | +===============================+===========================+================================================================================+ - | IPV4/IPV6 | MAC_IPV4_SRC_ONLY | [Dest MAC],[Source IP] | + | IPv4/IPv6 + TCP/UDP/SCTP | MAC_IPV4 | ipv4 | +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_DST_ONLY_FRAG | [Dest MAC],[Dest IP] | + | | MAC_IPV4_UDP | ipv4-udp | +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_PAY | [Dest MAC],[Source IP], [Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_SRC_ICMP | [Dest MAC],[Source IP] | + | | MAC_IPV4_TCP | ipv4-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_SCTP | ipv4-sctp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6 | ipv6 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_UDP | ipv6-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_TCP | ipv6-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_SCTP | ipv6-sctp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | GTP-U data packet types | MAC_IPV4_GTPU_IPV4 | ipv4 | + | IPv4/IPv6 transport | | | + | IPv4/IPv6 payload | | | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV4_UDP | ipv4-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV4_TCP | ipv4-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV6 | ipv6 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV6_UDP | ipv6-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_IPV6_TCP | ipv6-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV4 | ipv4 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV4_UDP | ipv4-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV4_TCP | ipv4-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV6 | ipv6 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV6_UDP | ipv6-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_IPV6_TCP | ipv6-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_EH_IPV4 | ipv4 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_EH_IPV4_UDP | ipv4-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_EH_IPV4_TCP | ipv4-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_EH_IPV6 | ipv6 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_EH_IPV6_UDP | ipv6-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV4_GTPU_EH_IPV6_TCP | ipv6-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_EH_IPV4 | ipv4 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_EH_IPV4_UDP | ipv4-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_EH_IPV4_TCP | ipv4-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_EH_IPV6 | ipv6 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_EH_IPV6_UDP | ipv6-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_IPV6_GTPU_EH_IPV6_TCP | ipv6-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | PPPOES | MAC_PPPOES_IPV4 | ipv4 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV4_UDP | ipv4-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV4_TCP | ipv4-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV4_SCTP | ipv4-sctp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV6 | ipv6 | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV6_UDP | ipv6-udp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV6_TCP | ipv6-tcp | + +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ + | | MAC_PPPOES_IPV6_SCTP | ipv6-sctp | +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_DST_ICMP | [Dest MAC],[Source IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_UDP_L3SRC_L4DST | [Dest MAC],[Source IP],[Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_UDP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_TCP_L3SRC_L4DST | [Dest MAC],[Source IP],[Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_TCP_L3DST_L4SRC | [Dest MAC],[Dest IP],[Source Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_TCP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_SCTP_L3SRC_L4DST | [Dest MAC],[Source IP],[Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_SCTP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_ICMP | [Inner Source IP], [Inner Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_L3SRC_ICMP | [Inner MAC][Inner Source IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_L3DST_ICMP | [Inner MAC][Inner Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_TCP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_NVGRE_SCTP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_ICMP | [Inner Source IP], [Inner Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_L3SRC_ICMP | [Inner MAC][Inner Source IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_L3DST_ICMP | [Inner MAC][Inner Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_TCP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_SCTP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_VXLAN_UDP | [Inner Source IP], [Inner Dest IP],[Inner Source Port], [Inner Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_SRC_ONLY | [Dest MAC],[Source IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_DST_ONLY_FRAG | [Dest MAC],[Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_PAY | [Dest MAC],[Source IP], [Dest IP], | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_UDP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_TCP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_SCTP | [Dest MAC],[Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV4_SIMPLE_XOR | [Dest MAC],[Source IP], [Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - | | MAC_IPV6_SIMPLE_XOR | [Dest MAC],[Source IP], [Dest IP] | - +-------------------------------+---------------------------+--------------------------------------------------------------------------------+ - -Default parameters ------------------- - - MAC:: - - [Dest MAC]: 68:05:ca:a3:28:94 - - IPv4-Symmetric_toeplitz and simplexor:: - - [Source IP]: 192.168.0.20 - [Dest IP]: 192.168.0.21 - [IP protocol]: 255 - [TTL]: 2 - [DSCP]: 4 - - IPv6--Symmetric_toeplitz and simplexor:: - - [Source IPv6]: 2001::2 - [Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020 - [IP protocol]: 1 - [TTL]: 2 - [TC]: 1 - - UDP/TCP/SCTP:: - - [Source IP]: RandIP - [Dest IP]: RandIP - [Source Port]: Randport - [Dest Port]: Randport - - VXLAN inner only---Symmetric_toeplitz:: - - [Inner Source IP]: 192.168.0.20 - [Inner Dest IP]: 192.168.0.21 - [Inner Source Port]: 22 - [Inner Dest Port]: 23 - GTP-U data packet:: +.. note:: - [TEID]: 0x12345678 + This test plan only cover the packet type IPv4/IPv6 + TCP/UDP/SCTP, + including toeplitz, symmetric and simple-xor. + Other packet types will be coverd in other test plans. + Rules with src/dst mac addresses as hash input set can not be applied + to tunnel packets. So in the test cases with input set src/dst mac addresses, + matched packets do not include tunnel packets. - Prerequisites ============= @@ -249,7 +296,7 @@ Prerequisites - dpdk: http://dpdk.org/git/dpdk - scapy: http://www.secdev.org/projects/scapy/ - + .. note:: This rss feature designed for CVL NIC 25G and 100g, so below the case only support CVL nic. @@ -262,1351 +309,2060 @@ Prerequisites .. note:: The kernel must be >= 3.6+ and VT-d must be enabled in bios. - + 4. Launch the testpmd to configuration queue of rx and tx number 64 in DUT:: testpmd>./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --port-topology=loop + + or disable rss in command line:: + + testpmd>./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4 -- -i --rxq=64 --txq=64 --disable-rss --port-topology=loop testpmd>set fwd rxonly testpmd>set verbose 1 testpmd>rx_vxlan_port add 4789 0 - + 5. start scapy and configuration NVGRE and GTP profile in tester scapy:: >>> import sys >>> sys.path.append('~/dts/dep') >>> from nvgre import NVGRE - >>> from scapy.contrib.gtp import * + >>> from scapy.contrib.gtp import * -Test case: MAC_IPV4_L3SRC -========================= -#. create rule for the rss type for l3 src only:: - - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd>start - -#. send the 100 IP pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value,and check the pkts typ is “L2_ETHER L3_IPV4 NONFRAG” - - Verbose log parses and check point example: - Once rule has created and receive related packets, - Check the rss hash value and rss queue, make sure the different hash value and cause to related packets enter difference queue:: - - src=00:00:00:00:00:00 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x60994f6e - RSS queue=0x2e - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x2e ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN - -statistics log:: - - ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 0/Queue= 0 ------- - RX-packets: 1 TX-packets: 0 TX-dropped: 0 - - ------- Forward Stats for RX Port= 0/Queue= 1 -> TX Port= 0/Queue= 1 ------- - RX-packets: 2 TX-packets: 0 TX-dropped: 0 - ...... - - ------- Forward Stats for RX Port= 0/Queue=63 -> TX Port= 0/Queue=63 ------- - RX-packets: 4 TX-packets: 0 TX-dropped: 0 - - ---------------------- Forward statistics for port 0 ---------------------- - RX-packets: 100 RX-dropped: 0 RX-total: 100 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ---------------------------------------------------------------------------- - - +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ - RX-packets: 100 RX-dropped: 0 RX-total: 100 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -Test case: MAC_IPV4_L3SRC_FRAG -============================== - -#. create rule for the rss type for l3 src only:: - - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end - testpmd> start - -#. send the 100 IP +frag type pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(), frag=5)/SCTP(sport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value,and check the pkts typ is L2_ETHER L3_IPV4 "FRAG" - -Test case: MAC_IPV4_L3DST: -========================== +Default parameters +------------------ + + MAC:: -#. create rule for the rss type for l3 dst only:: + [Src MAC]: 00:11:22:33:44:55 + [Dest MAC]: 68:05:CA:BB:26:E0 - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end - testpmd> start + IPv4:: -#. send the 100 IP +frag type pkts:: + [Dest IP]: 192.168.0.1 + [Source IP]: 192.168.0.2 - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst=RandIP())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + IPv6:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value,and check the pkts typ is L2_ETHER L3_IPV4 "FRAG" + [Source IPv6]: ABAB:910B:6666:3457:8295:3333:1800:2929 + [Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020 -Test case: MAC_IPV4_L3DST_FRAG: -=============================== -#. create rule for the rss type for l3 dst only:: + UDP/TCP/SCTP:: - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end - testpmd> start - -#. send the 100 IP frag pkts:: + [Source Port]: 22 + [Dest Port]: 23 - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst=RandIP(), frag=5)/SCTP(sport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value,and check the pkts typ is L2_ETHER L3_IPV4 "FRAG" - -Test case: MAC_IPV4_L3SRC_FRAG_ICMP: -==================================== -#. create rule for the rss type for l3 dst only:: +toeplitz Test steps +=================== +launch testpmd with "--disable-rss" +all the test cases run the same test steps as below: +1. validate rule. +2. create rule and list rule. +3. send a basic hit pattern packet,record the hash value, + check the packet is distributed to queues by RSS. +4. send hit pattern packet with changed input set in the rule. + check the received packet have different hash value with basic packet. + check the packet is distributed to queues by rss. +5. send hit pattern packet with changed input set not in the rule. + check the received packet have same hash value with the basic packet. + check the packet is distributed to queues by rss. +note: if there is not this type packet in the case, omit this step. +6. send not hit pattern packets with input set in the rule. + check the received packets have not hash value, and distributed to queue 0. +note: if there is not this type packet in the case, omit this step. +7. distroy the rule and list rule. +8. send same packet with step 3. + check the received packets have not hash value, and distributed to queue 0. - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd> start +Test case: MAC_IPV4 +=================== +basic hit pattern packets are the same in this test case: +ipv4-nonfrag packets:: -#. send the 100 IP pkts:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(), frag=5)/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +ipv4-frag packets:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_L3DST_FRAG_ICMP: -==================================== -#. create rule for the rss type for l3 dst only:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end - testpmd> start +ipv4-icmp packets:: -#. send the 100 IP pkts:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst=RandIP(), frag=5)/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +ipv4-tcp packets:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -Test case: MAC_IPV4_PAY: -======================== -#. create rule for the rss type for l3 all keywords:: +ipv4-udp-vxlan packet:: - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end - testpmd> start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") -#. send the 100 IP pkts:: +not hit pattern packets are the same in this test case:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/("X"*480)], iface="enp175s0f0", count=100) - testpmd>stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw("x"*80)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_PAY_FRAG_ICMP: -================================== -#. create rule for the rss type for IPV4 l3 all (src and dst) +frag+ICMP:: +Subcase: MAC_IPV4_L2SRC +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=19,dport=99)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV4_L2DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l2-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=23,dport=25)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV4_L2SRC_L2DST +----------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types eth end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5",frag=7)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/TCP(sport=23,dport=25)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV4_L3SRC +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.1.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src='192.168.0.2')/UDP(sport=32,dport=33)/("X"*480)], iface="ens786f0") + +Subcase: MAC_IPV4_L3DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src='192.168.0.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.1.2')/UDP(sport=32,dport=33)/("X"*480)], iface="ens786f0") + +Subcase: MAC_IPV4_ALL +--------------------- +1. create rss rule:: flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end - -#. send the 100 IP pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/ICMP()/("X"*480)], iface="enp175s0f0", count=100) - testpmd>stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_NVGRE_L3SRC: -================================ -#. create rule for the rss type is IPV4 l3 src +NVGRE inner IPV4 +frag + ICMP:: - - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd> start - -#. send the 100 IP nvgre pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src=RandIP())/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_NVGRE_L3DST: -================================ -#. create rule for the rss type is IPV4 l3 dst +NVGRE inner IPV4 +frag + ICMP:: - - testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end - testpmd> start - -#. send the 100 IP nvgre pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(dst=RandIP())/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_VXLAN_L3SRC: -================================ -#. create rule for the rss type is IPV4 src VXLAN +frag +ICMP:: - - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd>start - -#. send the 100 VXLAN pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src=RandIP(), frag=5)/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_NVGRE_L3DST: -================================ -#. create rule for the rss type is IPV4 dst VXLAN +frag+ICMP:: - - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end - testpmd>start - -#. send the 100 vxlan pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(dst=RandIP(), frag=5)/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_NVGRE: -========================== -#. create rule for the rss type is IPV4 all VXLAN +frag +ICMP:: - - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end - testpmd>start - -#. send the 100 vxlan pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src=RandIP(),dst=RandIP(),frag=5)/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_L3SRC -========================== -#. create rule for the rss type is IPV6 L3 src:: - - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end - testpmd>start - -#. send the 100 IPV6 pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/("X" * 80)], iface="enp175s0f0", count=100) - -Test case: MAC_IPV6_L3SRC_FRAG -=============================== -#. create rule for the rss type is IPV6 L3 src +ExtHdrFragment:: - - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end - testpmd>start - -#. send the 100 IPV6 pkts:: - - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_L3DST -========================= -#. create rule for the rss type is IPV6 L3 dst +ExtHdrFragment:: - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end - testpmd>start +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.1.1", src='192.168.0.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.1.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + +3. hit pattern/not defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") -#. send the 100 IPV6 pkts:: +ipv4-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(dst=RandIP6())/IPv6ExtHdrFragment()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_PAY +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +Test case: MAC_IPV4_UDP ======================= -#. create rule for the rss type is IPV6 L3 all +ExtHdrFragment+ICMP:: - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end - testpmd>start +basic hit pattern packets are the same in this test case. +ipv4-udp packets:: -#. send the 100 IPV6 pkts:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6(),dst=RandIP6())/IPv6ExtHdrFragment()/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_UDP: -======================== -#. create rule for the rss type is ipv4 UDP +l3 src and dst:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") -#. send the 100 IP+UDP pkts:: +not hit pattern packets are the same in this test case:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP())/UDP(dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/Raw("x"*80)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_UDP_FRAG: -============================= -#. create rule for the rss type is ipv4 +UDP +frag:: +Subcase: MAC_IPV4_UDP_L2SRC +--------------------------- +1. create rss rule:: - testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end - testpmd> start + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end -#. send the 100 IP src IP +UDP port pkts:: +2. hit pattern/defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - -#. send the 100 IP +UDP port pkts:: + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) +3. hit pattern/not defined input set: +ipv4-udp packets:: -#. send the 100 IP src and dst IP +UDP port pkts:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/UDP()/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop - -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_NVGRE_IPV4_UDP_FRAG: -=================================== -#. create rule for the rss type is ipv4 + inner IP and UDP:: +Subcase: MAC_IPV4_UDP_L2DST +--------------------------- +1. create rss rule:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end - testpmd>start - -#. send the 100 NVGRE IP pkts:: + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop +2. hit pattern/defined input set: +ipv4-udp packets:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_VXLAN_IPV4_UDP_FRAG: -=================================== -#. create rule for the rss type is ipv4 + vxlan UDP:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") - testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end - testpmd> start +3. hit pattern/not defined input set: +ipv4-udp packets:: -#. To send VXLAN pkts with IP src and dst,UDP port:: + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src=RandIP(),dst=RandIP())/UDP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop +Subcase: MAC_IPV4_UDP_L2SRC_L2DST +--------------------------------- +1. create rss rule:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_UDP: -======================== -#. create rule for the rss type is IPV6 + UDP src and dst type hash:: + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types eth end key_len 0 queues end / end - testpmd> flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end - testpmd> start - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/UDP(sport=RandShort(),dport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +2. hit pattern/defined input set: +ipv4-udp packets:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -Test case: MAC_IPV6_UDP_FRAG: -============================= -#. To send IPV6 pkts with IPV6 src +frag +UDP port:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/UDP(sport=RandShort(),dport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.3", src="192.168.0.5")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_TCP_FRAG: -============================= -#. create rule for the rss type is IPV4 + TCP L3 src and L4 dst type hash:: +Subcase: MAC_IPV4_UDP_L3SRC +--------------------------- +1. create rss rule:: - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-dst-only end key_len 0 queues end / end + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end -#. To send IPV4 pkts with scr IP and TCP dst port:: +2. hit pattern/defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP())/TCP(dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. To send IPV4 pkts with scr IP and TCP src port:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst=RandIP())/TCP(sport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_TCP_PAY -=========================== -#. Create rule for the rss type is IPV4 +tcp and hash tcp src and dst ports:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") -#. To send IPV4 pkts with IP src and dst ip and TCP ports:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=33)/("X"*480)], iface="ens786f0") -#. To send IPV4 pkts without IP src and dst ip and includ TCP ports:: +Subcase: MAC_IPV4_UDP_L3DST +--------------------------- +1. create rss rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/TCP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end -#. To send IPV4 pkts with IP src and dst ip and without TCP port:: +2. hit pattern/defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/TCP()/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. To send IPV4 pkts with IP src and dst +frag and without TCP port:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP(),frag=4)/TCP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_UDP_FRAG: -============================= -#. Create rule for the RSS type nvgre IP src dst ip and TCP:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") -#. To send NVGRE ip pkts:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src=RandIP(),dst=RandIP())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=33)/("X"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_VXLAN_IPV4_TCP -============================= -#. Create rule for the rss type is IPV4 +tcp and hash tcp src and dst ports:: +Subcase: MAC_IPV4_UDP_L3SRC_L4SRC +--------------------------------- +1. create rss rule:: - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end - testpmd>start + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end -#. To send VXLAN pkts includ src and dst ip and TCP ports:: +2. hit pattern/defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/TCP()/VXLAN()/Ether()/IP(src=RandIP(),dst=RandIP())/TCP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_TCP -======================= -#. Create rule for the rss IPV6 tcp:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") -#. To send IPV6 pkts include TCP ports:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/TCP(sport=RandShort(),dport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV6_TCP_FRAG: -============================= -#. Create rule for the rss IPV6 tcp:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") -#. To send ipv6 pkts and IPV6 frag:: +Subcase: MAC_IPV4_UDP_L3SRC_L4DST +--------------------------------- +1. create rss rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/TCP(sport=RandShort(),dport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_SCTP: -========================= -#. Create rule for the rss type IPV4 and SCTP, hash keywords with ipv4 sctp and l3 src port l4 dst port:: +2. hit pattern/defined input set: +ipv4-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp l3-src-only l4-dst-only end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") -#. To send IP pkts includ SCTP dport:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP())/SCTP(dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") -#. To send IP pkts includ SCTP sport:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst=RandIP())/SCTP(sport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_SCTP_FRAG: -============================== -#. Create rule for the rss type IPV4 and SCTP, hash keywords with ipv4 sctp:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") -#. To send IPV4 pkt include SCTP ports:: +Subcase: MAC_IPV4_UDP_L3DST_L4SRC +--------------------------------- +1. create rss rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP())/SCTP()/("X"*480)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src=RandIP(),dst=RandIP(),frag=4)/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_NVGRE_IPV4_SCTP: -=============================== -#. Create rule for the rss type IPV4 and hash keywords ipv4 sctp src and dst type:: +2. hit pattern/defined input set: +ipv4-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") -#. To send NVGRE ip pkts and sctp ports:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src=RandIP(),dst=RandIP())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_VXLAN_IPV4_SCTP: -=============================== -#. create rule for the rss type IPV4 and hash keywords ipv4 sctp src and dst type:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") -#. To send VXLAN ip pkts and sctp ports:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/SCTP()/VXLAN()/Ether()/IP(src=RandIP(),dst=RandIP())/SCTP(sport=RandShort(),dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value +Subcase: MAC_IPV4_UDP_L3DST_L4DST +--------------------------------- +1. create rss rule:: -Test case: MAC_IPV6_SCTP_PAY: -============================= -#. Create rule for the rss type IPV6 and hash keywords ipv4 sctp src and dst type:: + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end - testpmd>flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end - testpmd>start +2. hit pattern/defined input set: +ipv4-udp packets:: -#. To send IPV6 pkts and sctp ports:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/SCTP(sport=RandShort(),dport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - MAC IPV6 SCTP all+frag: +nvgre packet:: -#. to send IPV6 pkts includ frag:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src=RandIP6())/IPv6ExtHdrFragment()/SCTP(sport=RandShort(),dport=RandShort())/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +3. hit pattern/not defined input set: +ipv4-udp packets:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_PPPOD_PPPOE: -================================ -#. Create rule for the rss type pppoes type:: + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end - testpmd>start +nvgre packet:: -#. To send pppoe 100pkts:: + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=RandShort())/PPP(proto=0x21)/IP(src=RandIP())/UDP(sport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop +Subcase: MAC_IPV4_UDP_L4SRC +--------------------------- +1. create rss rule:: -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_PPPOD_PPPOE: -================================ -#. Create rule for the rss type pppoes:: + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end - testpmd>flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end - testpmd>start +2. hit pattern/defined input set: +ipv4-udp packets:: -#. To send pppoe pkts:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=RandShort())/PPP(proto=0x21)/IP(src=RandIP())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop +nvgre packet:: -#. Verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - -Test case: MAC_IPV4_PPPOD_PPPOE_UDP: -==================================== -#. Create rule for the rss type pppoes and hash l3 src , l4 dst port:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end - testpmd>start +3. hit pattern/not defined input set: +ipv4-udp packets:: -#. To send pppoe pkt and include the UPD ports:: + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=RandShort())/PPP(proto=0x21)/IP(src=RandIP())/UDP(dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop +nvgre packet:: -#. Verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") -Test case: MAC_IPV4_PPPOD_PPPOE_SCTP: -===================================== -#. Create rule for the rss type pppoe and hash sctp keywords:: +Subcase: MAC_IPV4_UDP_L4DST +--------------------------- +1. create rss rule:: - testpmd>flow create 0 ingress pattern eth / pppoes / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end - testpmd>start + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end -#. To send pppoe pkt and include the SCTP ports:: +2. hit pattern/defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=RandShort())/PPP(proto=0x21)/IP(src=RandIP())/SCTP(dport=RandShort())/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") -#. Verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_PPPOD_PPPOE_ICMP: -===================================== -#. Create rule for the rss type pppoe and hash icmp keywords:: +nvgre packet:: - testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types ipv4 end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") -#. To send pppoe pkt and include the ICMP ports:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/PPPoE(sessionid=RandShort())/PPP(proto=0x21)/IP(src=RandIP())/ICMP()/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") -#. Verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_GTPU_FRAG: -============================== -#. Create rule for the rss type GTPU and hash l3 src keywords:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.1.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") -#. To send GTPU pkts:: +Subcase: MAC_IPV4_UDP_ALL +------------------------- +1. create rss rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(teid=0x123456)/IP(src=RandIP())/ICMP()/("X"*480)],iface="enp175s0f0",count=100) + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end -#. To send GTPU PKTS and IPV4 frag:: +2. hit pattern/defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(teid=0x123456)/IP(src=RandIP(),frag=6)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. Verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_GTPU_FRAG_UDP: -================================== -#. create rule for the rss type GTPU and hash l3 src and dst keywords:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=33)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=32,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.1.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") -#. to send GTP pkts and include IP pkts and UDP:: +3. hit pattern/not defined input set: +ipv4-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(teid=0x123456)/IP(src=RandIP(),frag=6)/UDP(dport=RandShort())/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_GTPU_FRAG_TCP: -================================== -#. create rule for the rss type GTPU and hash l3 src and dst keywords:: +Test case: MAC_IPV4_TCP +======================= +the rules and packets in this test case is similar to "Test case: MAC_IPV4_UDP" +just change some parts of rules and packets: + + rule: + change udp to tcp, change ipv4-udp to ipv4-tcp + packets: + if the packet's L4 layer is UDP, change it to TCP; + if the packet's L4 layer is TCP, change it to UDP; + if tunnel packet, change inner L4 layer from UDP to TCP; + if tunnel packet, change inner L4 layer from TCP to UDP; + +Subcase: MAC_IPV4_TCP_L2SRC +--------------------------- + +Subcase: MAC_IPV4_TCP_L2DST +--------------------------- + +Subcase: MAC_IPV4_TCP_L2SRC_L2DST +--------------------------------- + +Subcase: MAC_IPV4_TCP_L3SRC +--------------------------- + +Subcase: MAC_IPV4_TCP_L3DST +--------------------------- + +Subcase: MAC_IPV4_TCP_L3SRC_L4SRC +--------------------------------- + +Subcase: MAC_IPV4_TCP_L3SRC_L4DST +--------------------------------- + +Subcase: MAC_IPV4_TCP_L3DST_L4SRC +--------------------------------- + +Subcase: MAC_IPV4_TCP_L3DST_L4DST +--------------------------------- + +Subcase: MAC_IPV4_TCP_L4SRC +--------------------------- + +Subcase: MAC_IPV4_TCP_L4DST +--------------------------- + +Subcase: MAC_IPV4_TCP_ALL +------------------------- + + +Test case: MAC_IPV4_SCTP +======================== +the rules and packets in this test case is similar to "Test case: MAC_IPV4_UDP" +just change some parts of rules and packets: + + rule: + change udp to sctp, change ipv4-udp to ipv4-sctp + packets: + if the packet's L4 layer is UDP, change it to SCTP; + if tunnel packet, change inner L4 layer from UDP to SCTP; + others can be not changed. + +Subcase: MAC_IPV4_SCTP_L2SRC +---------------------------- + +Subcase: MAC_IPV4_SCTP_L2DST +---------------------------- + +Subcase: MAC_IPV4_SCTP_L2SRC_L2DST +---------------------------------- + +Subcase: MAC_IPV4_SCTP_L3SRC +---------------------------- + +Subcase: MAC_IPV4_SCTP_L3DST +---------------------------- + +Subcase: MAC_IPV4_SCTP_L3SRC_L4SRC +---------------------------------- + +Subcase: MAC_IPV4_SCTP_L3SRC_L4DST +---------------------------------- + +Subcase: MAC_IPV4_SCTP_L3DST_L4SRC +---------------------------------- + +Subcase: MAC_IPV4_SCTP_L3DST_L4DST +---------------------------------- + +Subcase: MAC_IPV4_SCTP_L4SRC +---------------------------- + +Subcase: MAC_IPV4_SCTP_L4DST +---------------------------- + +Subcase: MAC_IPV4_SCTP_ALL +-------------------------- + + + +Test case: MAC_IPV6 +=================== +basic hit pattern packets are the same in this test case: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +ipv6-frag packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") -#. to send GTP pkts and include IP pkts and tcp:: +ipv6-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(teid=0x123456)/IP(src=RandIP(),frag=6)/TCP(dport=RandShort())/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value - - -Test case: MAC_IPV4_GTPU_FRAG_ICMP: -=================================== -#. create rule for the rss type GTPU and hash l3 src and dst keywords:: +ipv6-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. to send GTP pkts and include IP pkts and ICMP:: +nvgre packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP(dport=2152)/GTP_U_Header(teid=0x123456)/IP(src=RandIP(),frag=6)/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop - verify 100 pkts has sent, and to check the 100 pkts has send to differently totaly 64 queues evenly with - differently RSS random value + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") -Test case: SYMMETRIC_TOEPLITZ_IPV4_PAY: -======================================= -#. create rule for the rss type symmetric_toeplitz and hash ipv4 src and dst keywords:: +not hit pattern packets are the same in this test case:: - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP:: +Subcase: MAC_IPV6_L2SRC +----------------------- +1. create rss rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp175s0f0", count=100) + flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end -#. to send ip pkts with fix IP and switch src and dst ip address:: +2. hit pattern/defined input set: +ipv6-nonfrag packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") -Verbos log:: +ipv6-frag packets:: - src=A4:BF:01:68:D2:03 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0xf84ccd9b - RSS queue=0x1b - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x1b ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") - src=A4:BF:01:68:D2:03 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0xf84ccd9b - RSS queue=0x1b - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x1b ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN +ipv6-icmp packets:: -#. To verify the hash value keep with a same value when the IP has exchanged:: + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") - hash=0xf84ccd9b - RSS queue=0 - hash=0xf84ccd9b - RSS queue=0 - -#. to send ip pkts with fix IP:: +ipv6-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.2",dst="5.6.7.8")/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP and switch src and dst ip address:: +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.7.8",dst="8.8.8.2")/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop - -verify 100 pkts has sent, and check the has value has fixed, verify the has value keep with a same value, when the IP has exchanged -Verbose log:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)],iface="ens786f0") - src=A4:BF:01:68:D2:03 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x772baed3 - RSS queue=0x13 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x13 ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN - src=A4:BF:01:68:D2:03 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x772baed3 - RSS queue=0x13 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x13 ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN - -#. To verify the hash value keep with a same value when the IP has exchanged:: +ipv6-frag packets:: - 0x772baed3 - RSS queue=0x19 - 0x772baed3 - RSS queue=0x19 - -statistics log:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") - ------- Forward Stats for RX Port= 0/Queue=19 -> TX Port= 0/Queue=19 ------- - RX-packets: 200 TX-packets: 0 TX-dropped: 0 - - ---------------------- Forward statistics for port 0 ---------------------- - RX-packets: 200 RX-dropped: 0 RX-total: 200 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ---------------------------------------------------------------------------- - - +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ - RX-packets: 200 RX-dropped: 0 RX-total: 200 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +ipv6-icmp packets:: -Test case: SYMMETRIC_TOEPLITZ_IPV4_PAY_FRAG: -============================================ -#. create rule for the rss type symmetric_toeplitz and hash ipv4 src and dst keywords:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)],iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end - testpmd>start +ipv6-udp packets:: -#. to send ip pkts with fix IP includ frag:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/("X"*480)], iface="enp175s0f0", count=100) +Subcase: MAC_IPV6_L2DST +----------------------- +1. create rss rule:: -#. to send ip pkts with fix IP includ frag and switch src and dst ip address:: + flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop +2. hit pattern/defined input set: +ipv6-nonfrag packets:: -#. verify 100 pkts has sent, and check the rss has has fixed with a same value. - + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") -Test case: SYMMETRIC_TOEPLITZ_IPV4_UDP: -======================================= -#. create rule for the rss type symmetric_toeplitz and hash UDP src and dst keywords:: +ipv6-frag packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and UDP:: +ipv6-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/UDP(sport=20,dport=22)/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and switch src and dst ip address and UDP ports:: +ipv6-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/UDP(sport=22,dport=20)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_IPV4_UDP_L3SRC_L3DST_L4SRC_L4DST: -=============================================================== -#. create rule for the rss type symmetric_toeplitz and hash l3 l4 keywords:: +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only l3-dst-only l4-src-only l4-dst-only end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and UDP:: +ipv6-frag packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="1.1.4.1",dst="2.2.2.3")/UDP(sport=20,dport=22)/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and switch src and dst ip address and UDP ports:: +ipv6-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="2.2.2.3",dst="1.1.4.1")/UDP(sport=22,dport=20)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/ICMP()/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_IPV4_TCP: -======================================= -#. create rule for the rss type symmetric_toeplitz and hash TCP keywords:: +ipv6-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and TCP:: +Subcase: MAC_IPV6_L2SRC_L2DST +----------------------------- +1. create rss rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/TCP(sport=20,dport=22)/("X"*480)], iface="enp175s0f0", count=100) + flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end -#. to send ip pkts with fix IP includ frag and switch src and dst ip address and tcp ports:: +2. hit pattern/defined input set: +ipv6-nonfrag packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/TCP(sport=22,dport=20)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_IPV4_SCTP: -======================================== -#. create rule for the rss type symmetric_toeplitz and hash SCTP keywords:: +ipv6-frag packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and SCTP:: +ipv6-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/SCTP(sport=20,dport=22)/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and switch src and dst ip address and sctp ports:: +ipv6-udp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/SCTP(sport=22,dport=20)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the has rssh hash keep a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_IPV4_ICMP: -======================================== -#. create rule for the rss type symmetric_toeplitz and hash ICMP keywords:: +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and ICMP:: +ipv6-frag packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/ICMP()/("X"*480)], iface="enp175s0f0", count=100) + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IP includ frag and switch src and dst ip address and ICMP ports:: +ipv6-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/ICMP()/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/ICMP()/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash value with a fixed value . - +ipv6-udp packets:: -Test case: SYMMETRIC_TOEPLITZ_IPV6: -=================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end - testpmd>start +Subcase: MAC_IPV6_L3SRC +----------------------- +1. create rss rule:: -#. to send ip pkts with fix IPV6 pkts with fixed address:: + flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)], iface="enp175s0f0", count=100) +2. hit pattern/defined input set: +ipv6-nonfrag packets:: -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)], iface="enp175s0f0", count=100) +ipv6-frag packets:: -#. to send ip pkts with fix IPV6 pkts with fixed address without MAC address:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)], iface="enp175s0f0", count=100) +ipv6-icmp packets:: -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address without mac address:: + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +ipv6-udp packets:: -#. verify 100 pkts has sent, and check the rssh hash with a fixed value . + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") -Test case: SYMMETRIC_TOEPLITZ_IPV6_PAY: -========================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: +nvgre packet:: - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IPV6 pkts with fixed address and includ IPV6 frag:: +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/IPv6ExtHdrFragment()/("X" * 80)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_IPV6_UDP: -======================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: +ipv6-frag packets:: - testpmd>flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IPV6 pkts with fixed address and includ IPV6 frag and UDP port:: +ipv6-icmp packets:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=30,dport=32)/("X" * 80)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=30)/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)],iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_IPV6_TCP: -======================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: +ipv6-udp packets:: - testpmd>flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") -#. to send ip pkts with fix IPV6 pkts with fixed address and includ IPV6 frag and tcp port:: +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV6_L3DST +----------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)],iface="ens786f0") + +ipv6-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + +ipv6-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)],iface="ens786f0") + +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +ipv6-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + +ipv6-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV6_ALL +--------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +ipv6-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + +ipv6-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +ipv6-frag packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + +ipv6-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +Test case: MAC_IPV6_UDP +======================= +basic hit pattern packets are the same in this test case: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +not hit pattern packets are the same in this test case:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(src="192.168.0.1",dst="192.168.0.2")/UDP(sport=22,dport=23)/Raw("x"*80)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV6_UDP_L2SRC +--------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV6_UDP_L2DST +--------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV6_UDP_L2SRC_L2DST +--------------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0") + +Subcase: MAC_IPV6_UDP_L3SRC +--------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L3DST +--------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L3SRC_L4SRC +--------------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L3SRC_L4DST +--------------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L3DST_L4SRC +--------------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L3DST_L4DST +--------------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L4SRC +--------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_L4DST +--------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + + +Subcase: MAC_IPV6_UDP_ALL +------------------------- +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +ipv4_udp_vxlan_ipv6_udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0") + +3. hit pattern/not defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +Test case: MAC_IPV6_TCP +======================= +the rules and packets in this test case is similar to "Test case: MAC_IPV6_UDP" +just change some parts of rules and packets: + + rule: + change udp to tcp, change ipv6-udp to ipv6-tcp + packets: + if the packet's L4 layer is UDP, change it to TCP; + if the packet's L4 layer is TCP, change it to UDP; + if tunnel packet, change inner L4 layer from UDP to TCP; + if tunnel packet, change inner L4 layer from TCP to UDP; + +Subcase: MAC_IPV6_TCP_L2SRC +--------------------------- + +Subcase: MAC_IPV6_TCP_L2DST +--------------------------- + +Subcase: MAC_IPV6_TCP_L2SRC_L2DST +--------------------------------- + +Subcase: MAC_IPV6_TCP_L3SRC +--------------------------- + +Subcase: MAC_IPV6_TCP_L3DST +--------------------------- + +Subcase: MAC_IPV6_TCP_L3SRC_L4SRC +--------------------------------- + +Subcase: MAC_IPV6_TCP_L3SRC_L4DST +--------------------------------- + +Subcase: MAC_IPV6_TCP_L3DST_L4SRC +--------------------------------- + +Subcase: MAC_IPV6_TCP_L3DST_L4DST +--------------------------------- + +Subcase: MAC_IPV6_TCP_L4SRC +--------------------------- + +Subcase: MAC_IPV6_TCP_L4DST +--------------------------- + +Subcase: MAC_IPV6_TCP_ALL +------------------------- + + +Test case: MAC_IPV6_SCTP +======================== +the rules and packets in this test case is similar to "Test case: MAC_IPV6_UDP" +just change some parts of rules and packets: + + rule: + change udp to sctp, change ipv6-udp to ipv6-sctp + packets: + if the packet's L4 layer is UDP, change it to SCTP; + if tunnel packet, change inner L4 layer from UDP to SCTP; + others can be not changed. + +Subcase: MAC_IPV6_SCTP_L2SRC +---------------------------- + +Subcase: MAC_IPV6_SCTP_L2DST +---------------------------- + +Subcase: MAC_IPV6_SCTP_L2SRC_L2DST +---------------------------------- + +Subcase: MAC_IPV6_SCTP_L3SRC +---------------------------- + +Subcase: MAC_IPV6_SCTP_L3DST +---------------------------- + +Subcase: MAC_IPV6_SCTP_L3SRC_L4SRC +---------------------------------- + +Subcase: MAC_IPV6_SCTP_L3SRC_L4DST +---------------------------------- + +Subcase: MAC_IPV6_SCTP_L3DST_L4SRC +---------------------------------- + +Subcase: MAC_IPV6_SCTP_L3DST_L4DST +---------------------------------- + +Subcase: MAC_IPV6_SCTP_L4SRC +---------------------------- + +Subcase: MAC_IPV6_SCTP_L4DST +---------------------------- + +Subcase: MAC_IPV6_SCTP_ALL +-------------------------- + + +symmetric-toeplitz Test steps +============================= +Launch testpmd without "--disable-rss" +all the test cases run the same test steps as below: +1. validate rule. +2. send hit pattern packets with switched value of input set in the rule. + check the received packets have different hash value. + check all the packets are distributed to queues by rss. +3. create rule and list rule. +4. send same packets with step 2. + check the received packets have the same hash value. + check all the packets are distributed to queues by rss. +5. send not hit pattern packets with switched value of input set in the rule. + check the received packets have different hash value. + check all the packets are distributed to queues by rss. +note: if there is not this type packet in the case, omit this step. +6. distroy the rule and list rule. +7. send same packets with step 2. + check the received packets have different hash value, or have not hash value. + +Test case: symmetric MAC_IPV4 +============================= +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)],iface="ens786f0") + +ipv4-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2",frag=6)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1",frag=6)/("X"*480)],iface="ens786f0") + +ipv4-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/ICMP()/("X"*480)],iface="ens786f0") + +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src='192.168.0.1')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + +3. not hit pattern with switched value of input set in the rule: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2928",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +Test case: symmetric MAC_IPV4_UDP +================================= +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)],iface="ens786f0") + +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="ens786f0") + +3. not hit pattern/not defined input set packets:: +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + +Test case: symmetric MAC_IPV4_TCP +================================= +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=23,dport=22)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=23,dport=22)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan-eth-ipv4-tcp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/TCP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src='192.168.0.1')/TCP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/TCP(sport=23,dport=22)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src='192.168.0.1')/TCP(sport=23,dport=22)/("X"*480)], iface="ens786f0") + +3. not hit pattern/not defined input set packets:: +ipv4-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan-eth-ipv4-udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src='192.168.0.1')/UDP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + +Test case: symmetric MAC_IPV4_SCTP +================================== +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv4-sctp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/SCTP(sport=23,dport=22)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/SCTP(sport=23,dport=22)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan-eth-ipv4-sctp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/SCTP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src='192.168.0.1')/SCTP(sport=22,dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.1", src='192.168.0.2')/SCTP(sport=23,dport=22)/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IP(dst="192.168.0.2", src='192.168.0.1')/SCTP(sport=23,dport=22)/("X"*480)], iface="ens786f0") + +3. not hit pattern/not defined input set packets:: +ipv4-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +Test case: symmetric MAC_IPV6 +============================= +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="ens786f0") + +ipv6-frag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)],iface="ens786f0") + +ipv6-icmp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="ens786f0") + +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +ipv4-udp-vxlan-eth-ipv6 packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)], iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/UDP()/VXLAN()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)], iface="ens786f0") + +3. not hit pattern with switched value of input set in the rule: +ipv4-nonfrag packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)],iface="ens786f0") + +Test case: symmetric MAC_IPV6_UDP +================================= +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre-eth-ipv6-udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. not hit pattern/not defined input set packets:: +ipv6-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre-eth-ipv6-tcp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +Test case: symmetric MAC_IPV6_TCP +================================= +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-tcp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre-eth-ipv6-tcp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. not hit pattern/not defined input set packets:: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre-eth-ipv6-udp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +Test case: symmetric MAC_IPV6_SCTP +================================== +1. create rss rule:: + + flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end + +2. hit pattern/defined input set: +ipv6-sctp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +nvgre-eth-ipv6-sctp packet:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +3. not hit pattern/not defined input set packets:: +ipv6-udp packets:: + + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0") + +Test case: global simple-xor +============================ +1. Launch testpmd without "--disable-rss" + +2. send packets with switched l3 address:: + + sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IP(dst="192.168.0.2", src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=22, dport=23)/("X" * 80)], iface="ens786f0") + sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X" * 80)], iface="ens786f0") + +3. check the pair of packets with switched l3 address have different hash value, and distributed by rss. + +4. create a simple-xor rule:: + + flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end + +5. send the packet in step 2 again. + +6. check the pair of packets with switched l3 address have same hash value, and distributed to same queue. + +7. delete the rule:: + + flow destroy 0 rule 0 + +8. send the packet in step 2 again. + +9. check the pair of packets with switched l3 address have different hash value, and distributed by rss. + +Test Case: negative case +======================== +1. create rules with invalid input set:: + + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4-udp end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end + ice_flow_create(): Failed to create flow + port_flow_complain(): Caught PMD error type 10 (item specification): cause: 0x7fff3b61eb08, Invalid input set: Invalid argument + + check all the rule failed to be created. + +2. validate all the rules in step 1:: + + flow validate 0 ingress pattern eth / ipv4 / end actions rss types eth l3-src-only end key_len 0 queues end / end + flow validate 0 ingress pattern eth / ipv4 / end actions rss types ipv4-udp end key_len 0 queues end / end + flow validate 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4 end key_len 0 queues end / end + flow validate 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end + flow validate 0 ingress pattern eth / ipv4 / end actions rss types ipv6 end key_len 0 queues end / end + flow validate 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-src-only end key_len 0 queues end / end + flow validate 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types eth end key_len 0 queues end / end + + check all the rule failed to be validated. + +Test Case: multirules test +========================== +Launch testpmd without "--disable-rss" - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=30,dport=32)/("X" * 80)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=30)/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +Subcase 1: two rules with same pattern but different hash input set, not hit default profile +-------------------------------------------------------------------------------------------- -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_IPV6_SCTP: -======================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: +1. create a MAC_IPV4_UDP_L3_SRC_ONLY rule:: - testpmd>flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end - testpmd>start + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-src-only end key_len 0 queues end / end + testpmd> flow list 0 -#. to send ip pkts with fix IPV6 pkts with fixed address and includ IPV6 frag and sctp port:: + check the rule exists in the list. - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=30,dport=32)/("X" * 80)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=30)/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +2. send a MAC_IPV4_UDP packet:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") -Test case: SYMMETRIC_TOEPLITZ_IPV6_ICMP: -======================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + change the field [Source IP], send a packet:: - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end key_len 0 queues end / end - testpmd>start + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") -#. to send ip pkts with fix IPV6 pkts with fixed address and includ IPV6 frag and ICMP port:: + check the hash value is different from the first packet. - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop +3. create a rule with same pattern but different hash input set:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end + testpmd> flow list 0 -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV4: -========================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV4 keywords:: + check the rule exists in the list. - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end - testpmd>start +4. send a MAC_IPV4_UDP packet:: -#. to send ip pkts with fix nvgre pkts with fixed address and includ frag:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") - sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.8",dst="192.168.0.69",frag=6)/("X"*480)], iface="enp175s0f0", count=100) - sendp([Ether()/IP()/NVGRE()/Ether()/IP(src="192.168.0.69",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + change the field [Source IP], send a packet:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_VXLAN_IPV4: -========================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV4 keywords:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end - testpmd>start + check the hash value is the same as the first packet. + change the field [Dest IP], send a packet:: -#. to send ip pkts with fix vxlan pkts with fixed address and includ frag:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.7")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.1",dst="192.168.0.2",frag=6)/("X"*480)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.2",dst="192.168.0.1",frag=6)/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + check the hash value is different from the first packet. -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV4_UDP: -============================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV4 keywords:: +5. destroy the rule 1:: - testpmd>flow create 0 ingress pattern eth / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end - testpmd>start + testpmd> flow destroy 0 rule 1 + testpmd> flow list 0 -#. to send ip pkts with fix nvgre pkts with fixed address and includ frag and udp ports:: + check the rule 1 not exists in the list. + send a MAC_IPV4_UDP packet, you can find it hit default ipv4 profile:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.1",dst="5.6.8.2")/UDP(sport=20,dport=22)/("X"*480)],iface="enp175s0f0",count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.8.2",dst="8.8.8.1")/UDP(sport=22,dport=20)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_SCTP: -========================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV4 keywords:: + change the fields [Source IP] or [Dest IP], send a packet:: - testpmd>flow create 0 ingress pattern eth / ipv4 / sctp / end actions rss func symmetric_toeplitz types ipv4-sctp end key_len 0 queues end / end - testpmd>start + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") -#. to send ip pkts with fix nvgre pkts with fixed address and includ frag and sctp ports:: + check the hash values of the last two packets are different from the first packet. + destroy the rule 0:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.1",dst="5.6.8.2")/SCTP(sport=20,dport=22)/("X"*480)],iface="enp175s0f0",count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.8.2",dst="8.8.8.1")/SCTP(sport=22,dport=20)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV4_TCP: -============================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV4 keywords:: + check the rule 0 not exists in the list. + send a MAC_IPV4_UDP packet, you can find it hit default ipv4 profile:: - testpmd>flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp end key_len 0 queues end / end - testpmd>start + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") -#. to send ip pkts with fix nvgre pkts with fixed address and includ frag and tcp ports:: + change the fields [Source IP] or [Dest IP], send a packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="8.8.8.1",dst="5.6.8.2")/TCP(sport=20,dport=22)/("X"*480)],iface="enp175s0f0",count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether(dst="68:05:ca:a3:28:94")/IP(src="5.6.8.2",dst="8.8.8.1")/TCP(sport=22,dport=20)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.9")/UDP(dport=45)/Raw("x"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV4_ICMP: -============================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV4 keywords:: + check the hash values of the last two packets are different from the first packet. - testpmd>flow create 0 ingress pattern eth / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end - testpmd>start +Subcase 2: two rules with same pattern but different hash input set, hit default profile +---------------------------------------------------------------------------------------- -#. to send ip pkts with fix nvgre pkts with fixed address and includ frag and icmp ports:: +1. create a MAC_IPV4_PAY_L3_SRC_ONLY rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="8.8.8.1",dst="5.6.8.2")/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IP(src="5.6.8.2",dst="8.8.8.1")/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end + testpmd> flow list 0 -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV6: -========================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + check the rule exists in the list. - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end - testpmd>start +2. send a MAC_IPV4_PAY packet:: -#. to send ipv6 pkts with fix nvgre pkts with fixed address:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X"*480)],iface="enp175s0f0",count=100) + change the field [Source IP], send a packet:: -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + check the hash value is different from the first packet. + change the field [Dest IP], send a packet:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV6_UDP: -================================================ -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.8")/Raw("x"*480)], iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end - testpmd>start + check the hash value is the same as the first packet. -#. to send ipv6 pkts with fix nvgre pkts with fixed address and includ ipv6 frag and UDP ports:: +3. create a rule with same pattern but different hash input set:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=30,dport=32)/("X"*480)],iface="enp175s0f0",count=100) + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end + testpmd> flow list 0 -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address and udp ports:: + check the rule exists in the list. - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop +4. send a MAC_IPV4_PAY packet:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV6_TCP: -============================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)], iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end - testpmd>start + change the field [Source IP], send a packet:: -#. to send ipv6 pkts with fix nvgre pkts with fixed address and includ ipv6 frag and tcp ports:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=30,dport=32)/("X"*480)],iface="enp175s0f0",count=100) + check the hash value is the same as the first packet. + change the field [Dst IP], send a packet:: -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address and tcp ports:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.7")/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop - verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV6_SCTP -============================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + check the hash value is different from the first packet. - testpmd>flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end - testpmd>start +5. destroy the rule 1:: -#. to send ipv6 pkts with fix nvgre pkts with fixed address and includ ipv6 frag and SCTP ports:: + testpmd> flow destroy 0 rule 1 + testpmd> flow list 0 - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=30,dport=32)/("X"*480)],iface="enp175s0f0",count=100) + check the rule 1 not exists in the list. + send the MAC_IPV4_PAY packet:: -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address and SCTP ports:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + check the hash value is not exist. -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - - -Test case: SYMMETRIC_TOEPLITZ_NVGRE_IPV6_ICMP: -============================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: +Subcase 3: two rules, scope smaller created first, and the larger one created later +----------------------------------------------------------------------------------- - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end - testpmd>start +1. create a MAC_IPV4_UDP_PAY_L4_SRC_ONLY rule:: -#. to send ipv6 pkts with fix nvgre pkts with fixed address and includ ipv6 frag and ICMP ports:: + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end + testpmd> flow list 0 - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)],iface="enp175s0f0",count=100) + check the rule exists in the list. -#. to send ip pkts with fix IPv6 includ frag and switch src and dst ip address and ICMP ports:: +2. send a MAC_IPV4_UDP_PAY packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_VXLAN_IPV6_UDP: -============================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + change the field [Source Port], send a packet:: - testpmd>flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end - testpmd>start + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25, dport=45)/Raw("x"*480)], iface="ens786f0") -#. to send ipv6 pkts with fix vxlan pkts with fixed address and includ ipv6 frag and UDP ports:: + check the hash value is different from the first packet. + change other fields, send a packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/UDP(sport=30,dport=32)/("X"*480)],iface="enp175s0f0",count=100) + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.8")/UDP(sport=23, dport=44)/Raw("x"*480)], iface="ens786f0") -#. to send VXLAN pkts with fix IPv6 includ frag and switch src and dst ip address and UDP ports:: + check the hash value is the same as the first packet. - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop +3. create a MAC_IPV4_PAY_L3_SRC_ONLY rule:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_VXLAN_IPV6: -========================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end + testpmd> flow list 0 - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end - testpmd>start + check the rule exists in the list. -#. to send ipv6 pkts with fix vxlan pkts with fixed address and includ ipv6 frag:: +4. send a MAC_IPV4_UDP_PAY packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X"*480)],iface="enp175s0f0",count=100) + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)], iface="ens786f0") -#. to send VXLAN pkts with fix IPv6 includ frag and switch src and dst ip address:: + change the field [Source IP], send a packet:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IP()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)], iface="ens786f0") -#. verify 100 pkts has sent, and check the rss hash with a fixed value. + check the hash value is different from the first packet. + change other fields, send a packet:: -Test case: SYMMETRIC_TOEPLITZ_VXLAN_IPV6_TCP: -============================================= -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.8")/UDP(sport=25, dport=99)/Raw("x"*480)], iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end - testpmd>start + check the hash value is the same as the first packet. -#. to send ipv6 pkts with fix vxlan pkts with fixed address and includ ipv6 frag and tcp ports:: +5. destroy the rule 1:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/TCP(sport=30,dport=32)/("X"*480)],iface="enp175s0f0",count=100) + testpmd> flow destroy 0 rule 1 + testpmd> flow list 0 -#. to send VXLAN pkts with fix IPv6 includ frag and switch src and dst ip address and tcp ports:: + check the rule 1 not exists in the list. + repeat step 2, get the same result. + destroy the rule 0:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_VXLAN_IPV6_SCTP: -============================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + send a MAC_IPV4_UDP_PAY packet, check the hash values not exists. - testpmd>flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end - testpmd>start +Subcase 4: two rules, scope larger created first, and the smaller one created later +----------------------------------------------------------------------------------- -#. to send ipv6 pkts with fix vxlan pkts with fixed address and includ ipv6 frag and sctp ports:: +1. create a MAC_IPV4_PAY_L3_SRC_ONLY rule:: - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/SCTP(sport=30,dport=32)/("X"*480)],iface="enp175s0f0",count=100) + testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end + testpmd> flow list 0 -#. to send VXLAN pkts with fix IPv6 includ frag and switch src and dst ip address and sctp ports:: + check the rule exists in the list. - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=30)/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop +2. send a MAC_IPV4_UDP_PAY packet:: -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Test case: SYMMETRIC_TOEPLITZ_VXLAN_IPV6_ICMP: -============================================== -#. create rule for the rss type symmetric_toeplitz and hash IPV6 keywords:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)], iface="ens786f0") - testpmd>flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end - testpmd>start + change the field [Source IP], send a packet:: -#. to send ipv6 pkts with fix vxlan pkts with fixed address and includ ipv6 frag and ICMP ports:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/ICMP()/("X"*480)],iface="enp175s0f0",count=100) + check the hash value is different from the first packet. + change other fields, send a packet:: -#. to send VXLAN pkts with fix IPv6 includ frag and switch src and dst ip address and icmp ports:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.8")/UDP(sport=25, dport=99)/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)],iface="enp175s0f0",count=100) - testpmd> stop + check the hash value is the same as the first packet. -#. verify 100 pkts has sent, and check the rss hash with a fixed value - -Test case: SIMPLE_XOR: -====================== -#. create rule for the rss type simple_xor:: +3. create a MAC_IPV4_UDP_PAY_L3_SRC_ONLY rule:: - testpmd>flow create 0 ingress pattern end actions rss func simple_xor key_len 0 queues end / end - testpmd>start - -Test case: SIMPLE_XOR_IPV4: -=========================== -#. to send IPV4 pkt with fixed IP and switch IP src and dst address and switch the upd, tcp, sctp, icpm ports:: + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end + testpmd> flow list 0 - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="1.1.4.1",dst="2.2.2.3")/("X"*480)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IP(src="2.2.2.3",dst="1.1.4.1")/("X"*480)], iface="enp175s0f0", count=100) - testpmd> stop + check the rule exists in the list. -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Verbose log:: +4. send a MAC_IPV4_UDP_PAY packet:: - src=A4:BF:01:68:D2:03 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x3030602 - RSS queue=0x2 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x2 ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=23, dport=45)/Raw("x"*480)], iface="ens786f0") - src=A4:BF:01:68:D2:03 - dst=68:05:CA:A3:28:94 - type=0x0800 - length=514 - nb_segs=1 - RSS hash=0x3030602 - RSS queue=0x2 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x2 ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN - -Check the RSS value wiht a same value and the packets enter to a queue - -statistics log:: + change the field [Source Port], send a packet:: - ------- Forward Stats for RX Port= 0/Queue= 2 -> TX Port= 0/Queue= 2 ------- - RX-packets: 200 TX-packets: 0 TX-dropped: 0 - - ---------------------- Forward statistics for port 0 ---------------------- - RX-packets: 200 RX-dropped: 0 RX-total: 200 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ---------------------------------------------------------------------------- - - +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ - RX-packets: 200 RX-dropped: 0 RX-total: 200 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25, dport=45)/Raw("x"*480)], iface="ens786f0") + check the hash value is different from the first packet. + change other fields, send a packet:: -SIMPLE_XOR_IPV6: -================ -#. to send IPV6 pkt with fixed IP and switch IP src and dst address and switch the upd, tcp, sctp, icpm ports:: + sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.8")/UDP(sport=23, dport=44)/Raw("x"*480)], iface="ens786f0") - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020",dst="ABAB:910B:6666:3457:8295:3333:1800:2929")/("X" * 80)], iface="enp175s0f0", count=100) - sendp([Ether(dst="68:05:ca:a3:28:94")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X" * 80)], iface="enp175s0f0", count=100) - testpmd> stop + check the hash value is the same as the first packet. -#. verify 100 pkts has sent, and check the rss hash with a fixed value. - -Verbose log:: +5. destroy the rule 1:: - src=00:00:00:00:00:00 - dst=68:05:CA:A3:28:94 - type=0x86dd - length=134 - nb_segs=1 - RSS hash=0x5c24be5 - RSS queue=0x25 - hw ptype: L2_ETHER L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV6 - l2_len=14 - l3_len=40 - Receive queue=0x25 ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + testpmd> flow destroy 0 rule 1 + testpmd> flow list 0 - src=00:00:00:00:00:00 - dst=68:05:CA:A3:28:94 - type=0x86dd - length=134 - nb_segs=1 - RSS hash=0x5c24be5 - RSS queue=0x25 - hw ptype: L2_ETHER L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV6 - l2_len=14 - l3_len=40 - Receive queue=0x25 ol_flags: PKT_RX_RSS_HASH PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + check the rule 1 not exists in the list. + repeat step 2, hit ipv4 profile, get the same result. + destroy the rule 0:: -statistics log:: + testpmd> flow destroy 0 rule 0 + testpmd> flow list 0 - ------- Forward Stats for RX Port= 0/Queue=37 -> TX Port= 0/Queue=37 ------- - RX-packets: 200 TX-packets: 0 TX-dropped: 0 - - ---------------------- Forward statistics for port 0 ---------------------- - RX-packets: 200 RX-dropped: 0 RX-total: 200 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ---------------------------------------------------------------------------- - - +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ - RX-packets: 200 RX-dropped: 0 RX-total: 200 - TX-packets: 0 TX-dropped: 0 TX-total: 0 - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + send a MAC_IPV4_UDP_PAY packet, check the hash values not exists. -- 2.17.1