* [dts] [PATCH v1]test_plans: rework cvl_advanced_rss_test_plan.rst
@ 2020-08-31 9:37 Peng Yuan
2020-09-02 3:27 ` Tu, Lijuan
0 siblings, 1 reply; 2+ messages in thread
From: Peng Yuan @ 2020-08-31 9:37 UTC (permalink / raw)
To: dts; +Cc: Peng Yuan
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 <yuan.peng@intel.com>
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dts] [PATCH v1]test_plans: rework cvl_advanced_rss_test_plan.rst
2020-08-31 9:37 [dts] [PATCH v1]test_plans: rework cvl_advanced_rss_test_plan.rst Peng Yuan
@ 2020-09-02 3:27 ` Tu, Lijuan
0 siblings, 0 replies; 2+ messages in thread
From: Tu, Lijuan @ 2020-09-02 3:27 UTC (permalink / raw)
To: Peng, Yuan, dts; +Cc: Peng, Yuan
> Subject: [dts] [PATCH v1]test_plans: rework cvl_advanced_rss_test_plan.rst
>
> 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 <yuan.peng@intel.com>
Applied
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-09-02 3:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-31 9:37 [dts] [PATCH v1]test_plans: rework cvl_advanced_rss_test_plan.rst Peng Yuan
2020-09-02 3:27 ` Tu, Lijuan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).