test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH V2]test_plans/cvl_advanced_iavf_rss_gtpu_test_plan:add gtpu-nopdu/gtpc cases and update multi-rules cases
@ 2020-11-24 11:26 qifu
  2020-11-26  7:55 ` Tu, Lijuan
  0 siblings, 1 reply; 2+ messages in thread
From: qifu @ 2020-11-24 11:26 UTC (permalink / raw)
  To: dts; +Cc: qifu

1. add new test cases to support GTPU no PDU and GTPC pattern.
2. as the pkg updated, default gtpu behavior is changed.
   so that the behavior after deleting gtpu rss rule is also changed.
   ignored the steps after deleting rules in multi-rules test cases.

Signed-off-by: qifu <qi.fu@intel.com>
---
 .../cvl_advanced_iavf_rss_gtpu_test_plan.rst  | 1816 ++++++++++++++---
 1 file changed, 1517 insertions(+), 299 deletions(-)

diff --git a/test_plans/cvl_advanced_iavf_rss_gtpu_test_plan.rst b/test_plans/cvl_advanced_iavf_rss_gtpu_test_plan.rst
index f36b1e55..0b5cfc59 100644
--- a/test_plans/cvl_advanced_iavf_rss_gtpu_test_plan.rst
+++ b/test_plans/cvl_advanced_iavf_rss_gtpu_test_plan.rst
@@ -106,6 +106,15 @@ support pattern and input set
     +------------------------------------+-------------------------------------------------------------------------------------------+
     | MAC_IPV6_GTPU_IPV6_TCP             | ipv6, ipv6-tcp, l3-src-only, l3-dst-only, l4-src-only, l4-dst-only                        |
     +------------------------------------+-------------------------------------------------------------------------------------------+
+    | MAC_IPV4_GTPU                      | ipv4, l3-src-only, l3-dst-only                                                            |
+    +------------------------------------+-------------------------------------------------------------------------------------------+
+    | MAC_IPV6_GTPU                      | ipv6, l3-src-only, l3-dst-only                                                            |
+    +------------------------------------+-------------------------------------------------------------------------------------------+
+    | MAC_IPV4_GTPC                      | ipv4, l3-src-only, l3-dst-only                                                            |
+    +------------------------------------+-------------------------------------------------------------------------------------------+
+    | MAC_IPV6_GTPC                      | ipv6, l3-src-only, l3-dst-only                                                            |
+    +------------------------------------+-------------------------------------------------------------------------------------------+
+
 
 .. table::
 
@@ -162,6 +171,14 @@ support pattern and input set
     +------------------------------------+------------------------------------------------+
     | MAC_IPV6_GTPU_IPV6_TCP             | ipv6-tcp                                       |
     +------------------------------------+------------------------------------------------+
+    | MAC_IPV4_GTPU                      | ipv4                                           |
+    +------------------------------------+------------------------------------------------+
+    | MAC_IPV6_GTPU                      | ipv6                                           |
+    +------------------------------------+------------------------------------------------+
+    | MAC_IPV4_GTPC                      | ipv4                                           |
+    +------------------------------------+------------------------------------------------+
+    | MAC_IPV6_GTPC                      | ipv6                                           |
+    +------------------------------------+------------------------------------------------+
 
 
 Prerequisites
@@ -1972,360 +1989,1590 @@ reconfig all the cases of "Pattern: outer ipv4 + inner ipv4"
         change the ipv4 address to ipv6 address.
 
 
-===============
-symmetric cases
-===============
+Test case: MAC_IPV4_GTPU
+========================
+basic hit pattern packets are the same in this test case::
+MAC_IPV4_GTPU_PAY packet::
 
-all the test cases run the same test steps as below:
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-1. validate rule.
-2. create rule and list rule.
-3. send a basic hit pattern packet,record the hash value.
-4. send a hit pattern packet with switched value of input set in the rule.
-   check the received packets have same hash value.
-   check both the packets are distributed to queues by rss.
-5. destroy the rule and list rule.
-6. send the packet in step 3.
-   check the received packet has different hash value with which in step 3(including the case has no hash value).
+MAC_IPV4_GTPU_EH_PAY packet::
 
-==========================================
-Pattern: symmetric outer ipv4 + inner ipv4
-==========================================
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 with UL/DL
-=====================================================
-Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4
--------------------------------------------
-rule::
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-hit pattern/defined input set:
-MAC_IPV4_GTPU_EH_DL_IPV4 nonfrag::
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_EH_DL_IPV4 frag::
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_EH_DL_IPV4_ICMP::
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_EH_DL_IPV4_UDP::
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/UDP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
 
-Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4
--------------------------------------------
-rule::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+Subcase: MAC_IPV4_GTPU_L3SRC
+----------------------------
+rule::
 
-packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end
 
+hit pattern and defined input set::
+MAC_IPV4_GTPU_PAY packet::
 
-Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL
-=========================================================
-Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_UDP
------------------------------------------------
-rule::
- 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-hit pattern/defined input set::
+MAC_IPV4_GTPU_EH_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
-Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_UDP
------------------------------------------------
-rule::
- 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP with UL/DL
-====================================================
-the rules and packets in this test case is similar to "Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL"
-just change some parts of rules and packets::
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-    rule:
-        change inner udp to tcp, change ipv4-udp to ipv4-tcp
-    packets:
-        change the packet's inner L4 layer UDP to TCP
-        
-Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_TCP
------------------------------------------------
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_TCP
------------------------------------------------
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
 
-Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 without UL/DL
-========================================================
-rule::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
 
-hit pattern/defined input set::
-MAC_IPV4_GTPU_EH_DL_IPV4 nonfrag::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp134s0f0")
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
 
-MAC_IPV4_GTPU_EH_DL_IPV4 frag::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)], iface="enp134s0f0")
+hit pattern but not defined input set::
+MAC_IPV4_GTPU_PAY packet::
 
-MAC_IPV4_GTPU_EH_DL_IPV4_ICMP::
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)], iface="enp134s0f0")
+MAC_IPV4_GTPU_EH_PAY packet::
 
-MAC_IPV4_GTPU_EH_DL_IPV4_UDP::
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/UDP()/("X"*480)], iface="enp134s0f0")
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL
-============================================================
-rule::
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-hit pattern/defined input set::
-MAC_IPV4_GTPU_EH_DL_IPV4_UDP::
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_EH_UL_IPV4_UDP::
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
 
-Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP without UL/DL
-============================================================
-the rules and packets in this test case is similar to "Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL"
-just change some parts of rules and packets::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-    rule:
-        change inner udp to tcp, change ipv4-udp to ipv4-tcp
-    packets:
-        change the packet's inner L4 layer UDP to TCP
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-Test case: symmetric MAC_IPV4_GTPU_IPV4
-=======================================
+Subcase: MAC_IPV4_GTPU_L3DST
+----------------------------
 rule::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
 
-hit pattern/defined input set::
-MAC_IPV4_GTPU_IPV4 nonfrag::
+hit pattern and defined input set::
+MAC_IPV4_GTPU_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_IPV4 frag::
+MAC_IPV4_GTPU_EH_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_IPV4_ICMP::
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-MAC_IPV4_GTPU_IPV4_UDP::
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.20",dst="192.168.0.10")/UDP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP
-===========================================
-rule::
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-hit pattern/defined input set::
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
 
-Test case: symmetric MAC_IPV4_GTPU_IPV4_TCP
-===========================================
-the rules and packets in this test case is similar to "Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP"
-just change some parts of rules and packets::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-    rule:
-        change inner udp to tcp, change ipv4-udp to ipv4-tcp
-    packets:
-        change the packet's inner L4 layer UDP to TCP
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-==========================================
-Pattern: symmetric outer ipv4 + inner ipv6
-==========================================
+hit pattern but not defined input set::
+MAC_IPV4_GTPU_PAY packet::
 
-reconfig all the cases of "Pattern: symmetric outer ipv4 + inner ipv4"
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-    rule:
-        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.
-    packets:
-        change the packet's inner L3 layer from IP to IPv6;
-        change the ipv4 address to ipv6 address.
+MAC_IPV4_GTPU_EH_PAY packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-==========================================
-Pattern: symmetric outer ipv6 + inner ipv4
-==========================================
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
-reconfig all the cases of "Pattern: symmetric outer ipv4 + inner ipv4"
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-    rule:
-        change outer ipv4 to ipv6.
-    packets:
-        change the packet's outer L3 layer from IP to IPv6
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-==========================================
-Pattern: symmetric outer ipv6 + inner ipv6
-==========================================
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-reconfig all the cases of "Pattern: symmetric outer ipv4 + inner ipv4"
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-    rule:
-        change outer ipv4 to ipv6.
-        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.
-    packets:
-        change the packet's outer L3 layer from IP to IPv6;
-        change the packet's inner L3 layer from IP to IPv6;
-        change the ipv4 address to ipv6 address.
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-Test case: symmetric negative case
-==================================
-1. create rules with invalid input set::
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types gtpu end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-dst-only end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types tcp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-src-only end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l4-dst-only end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-2. check all the rules failed to be created.
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
 
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-Test case: toeplitz negative case
-=================================
+Subcase: MAC_IPV4_GTPU_L3
+-------------------------
+rule::
 
-1. create rules with invalid input set::
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss types ipv4 end key_len 0 queues end / end
 
-    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / 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 2 (flow rule (handle)): Invalid input pattern: Invalid argument
-    
-    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end
-    ice_flow_create(): Failed to create flow
-    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Invalid input pattern: Invalid argument
-    
-    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types udp end key_len 0 queues end / end
-    ice_flow_create(): Failed to create flow
-    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Invalid input pattern: Invalid argument
-    
-    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 gtpu end key_len 0 queues end / end
-    ice_flow_create(): Failed to create flow
-    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Invalid input pattern: Invalid argument
+hit pattern and defined input set::
+MAC_IPV4_GTPU_PAY packet::
 
-2. check all the rule failed to be created.
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
+MAC_IPV4_GTPU_EH_PAY packet::
 
-Test case: inner L4 protocal hash
-=================================
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-Subcase: MAC_IPV4_GTPU_IPV4_UDP/TCP
------------------------------------
-1. create rules::
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-2. send packets::
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-3. check the two packets received with different hash values, and distributed to queue by RSS.
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-4. flush the rules, send the two packets again, check they are distributed to the same queue::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-    testpmd> flow flush 0
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
 
-Subcase: MAC_IPV6_GTPU_IPV4_UDP/TCP
------------------------------------
-1. create rules::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
 
-2. send packets::
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
 
-3. check the two packets received with different hash values, and distributed to queue by RSS.
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-4. flush the rules, send the two packets again, check they are distributed to the same queue::
+hit pattern but not defined input set::
+MAC_IPV4_GTPU_PAY packet::
 
-    testpmd> flow flush 0
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
 
-Subcase: MAC_IPV4_GTPU_IPV6_UDP/TCP
------------------------------------
-1. create rules::
+MAC_IPV4_GTPU_EH_PAY packet::
 
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
 
-2. send packets::
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
 
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="1111:2222:3333:4444:5555:6666:7777:8888",src="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
-    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="1111:2222:3333:4444:5555:6666:7777:8888",src="2222:3333:4444:5555:6666:7777:8888:9999")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
 
-3. check the two packets received with different hash values, and distributed to queue by RSS.
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
 
-4. flush the rules, send the two packets again, check they are distributed to the same queue::
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
 
-    testpmd> flow flush 0
+MAC_VLAN_IPV4_GTPU_PAY packet::
 
-Subcase: MAC_IPV6_GTPU_IPV6_UDP/TCP
------------------------------------
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoResponse()],iface="enp134s0f0")
+
+
+Test case: MAC_IPV4_GTPC
+========================
+basic hit pattern packets are the same in this test case::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+Subcase: MAC_IPV4_GTPC_L3SRC
+----------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end
+
+hit pattern and defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+hit pattern but not defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+Subcase: MAC_IPV4_GTPC_L3DST
+----------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
+
+hit pattern and defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+hit pattern but not defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+Subcase: MAC_IPV4_GTPC_L3
+-------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss types ipv4 end key_len 0 queues end / end
+
+hit pattern and defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.11.1", dst="192.168.11.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+hit pattern but not defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=27)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=23,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+
+Test case: MAC_IPV6_GTPU
+========================
+reconfig all the cases of "Test case: MAC_IPV4_GTPU"
+
+    rule:
+        change ipv4 to ipv6.
+    packets:
+        change the packet's L3 layer from IP to IPv6;
+        change the ipv4 address to ipv6 address.
+
+
+Test case: MAC_IPV6_GTPC
+========================
+reconfig all the cases of "Test case: MAC_IPV4_GTPC"
+
+    rule:
+        change ipv4 to ipv6.
+    packets:
+        change the packet's L3 layer from IP to IPv6;
+        change the ipv4 address to ipv6 address.
+
+
+===============
+symmetric cases
+===============
+
+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.
+4. send a hit pattern packet with switched value of input set in the rule.
+   check the received packets have same hash value.
+   check both the packets are distributed to queues by rss.
+5. destroy the rule and list rule.
+6. send the packet in step 3.
+   check the received packet has different hash value with which in step 3(including the case has no hash value).
+
+==========================================
+Pattern: symmetric outer ipv4 + inner ipv4
+==========================================
+
+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 with UL/DL
+=====================================================
+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4
+-------------------------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+
+hit pattern/defined input set:
+MAC_IPV4_GTPU_EH_DL_IPV4 nonfrag::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_DL_IPV4 frag::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_DL_IPV4_ICMP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/UDP()/("X"*480)], iface="enp134s0f0")
+
+
+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4
+-------------------------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+
+packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.
+
+
+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL
+=========================================================
+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_UDP
+-----------------------------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+
+hit pattern/defined input set::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+
+
+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_UDP
+-----------------------------------------------
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+
+packets: change the pdu_type value(0->1/1->0) of packets of Subcase symmetric MAC_IPV4_GTPU_EH_DL_IPV4.
+
+
+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP with UL/DL
+=========================================================
+the rules and packets in this test case is similar to "Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP with UL/DL"
+just change some parts of rules and packets::
+
+    rule:
+        change inner udp to tcp, change ipv4-udp to ipv4-tcp
+    packets:
+        change the packet's inner L4 layer UDP to TCP
+
+Subcase: symmetric MAC_IPV4_GTPU_EH_DL_IPV4_TCP
+-----------------------------------------------
+
+Subcase: symmetric MAC_IPV4_GTPU_EH_UL_IPV4_TCP
+-----------------------------------------------
+
+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4 without UL/DL
+========================================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV4_GTPU_EH_DL_IPV4 nonfrag::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_DL_IPV4 frag::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_DL_IPV4_ICMP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.20",dst="192.168.0.10")/UDP()/("X"*480)], iface="enp134s0f0")
+
+
+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL
+============================================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV4_GTPU_EH_DL_IPV4_UDP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_UL_IPV4_UDP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+
+
+Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_TCP without UL/DL
+============================================================
+the rules and packets in this test case is similar to "Test case: symmetric MAC_IPV4_GTPU_EH_IPV4_UDP without UL/DL"
+just change some parts of rules and packets::
+
+    rule:
+        change inner udp to tcp, change ipv4-udp to ipv4-tcp
+    packets:
+        change the packet's inner L4 layer UDP to TCP
+
+
+Test case: symmetric MAC_IPV4_GTPU_IPV4
+=======================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV4_GTPU_IPV4 nonfrag::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1",dst="192.168.0.2")/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.2",dst="192.168.0.1")/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_IPV4 frag::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.3",dst="192.168.0.8",frag=6)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.8",dst="192.168.0.3",frag=6)/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_IPV4_ICMP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.10",dst="192.168.0.20")/ICMP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.20",dst="192.168.0.10")/ICMP()/("X"*480)], iface="enp134s0f0")
+
+MAC_IPV4_GTPU_IPV4_UDP::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.10",dst="192.168.0.20")/UDP()/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.20",dst="192.168.0.10")/UDP()/("X"*480)], iface="enp134s0f0")
+
+Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP
+===========================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+
+hit pattern/defined input set::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.1", dst="192.168.0.2")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(src="192.168.0.2", dst="192.168.0.1")/UDP(sport=23,dport=22)/("X"*480)], iface="enp134s0f0")
+
+
+Test case: symmetric MAC_IPV4_GTPU_IPV4_TCP
+===========================================
+the rules and packets in this test case is similar to "Test case: symmetric MAC_IPV4_GTPU_IPV4_UDP"
+just change some parts of rules and packets::
+
+    rule:
+        change inner udp to tcp, change ipv4-udp to ipv4-tcp
+    packets:
+        change the packet's inner L4 layer UDP to TCP
+
+
+==========================================
+Pattern: symmetric outer ipv4 + inner ipv6
+==========================================
+
+reconfig all the cases of "Pattern: symmetric outer ipv4 + inner ipv4"
+
+    rule:
+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.
+    packets:
+        change the packet's inner L3 layer from IP to IPv6;
+        change the ipv4 address to ipv6 address.
+
+
+==========================================
+Pattern: symmetric outer ipv6 + inner ipv4
+==========================================
+
+reconfig all the cases of "Pattern: symmetric outer ipv4 + inner ipv4"
+
+    rule:
+        change outer ipv4 to ipv6.
+    packets:
+        change the packet's outer L3 layer from IP to IPv6
+
+
+==========================================
+Pattern: symmetric outer ipv6 + inner ipv6
+==========================================
+
+reconfig all the cases of "Pattern: symmetric outer ipv4 + inner ipv4"
+
+    rule:
+        change outer ipv4 to ipv6.
+        change inner ipv4 to ipv6, change ipv4-udp to ipv6-udp, change ipv4-tcp to ipv6-tcp.
+    packets:
+        change the packet's outer L3 layer from IP to IPv6;
+        change the packet's inner L3 layer from IP to IPv6;
+        change the ipv4 address to ipv6 address.
+
+
+Test case: symmetric MAC_IPV4_GTPU
+==================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV4_GTPU_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_IPV4_GTPU_EH_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_IPV4_GTPU_ECHO_REQUEST packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPU_ECHO_RESPONSE packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_EH_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_ECHO_REQUEST packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPU_ECHO_RESPONSE packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+
+Test case: symmetric MAC_IPV4_GTPC
+==================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpc / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV4_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.1", dst="192.168.1.3")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(src="192.168.1.3", dst="192.168.1.1")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+
+Test case: symmetric MAC_IPV6_GTPU
+==================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV6_GTPU_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_IPV6_GTPU_EH_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_IPV6_GTPU_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV6_GTPU_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPU_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPU_EH_PAY packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34)/Raw("x"*96)],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPU_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPU_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2152)/GTP_U_Header(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+
+Test case: symmetric MAC_IPV6_GTPC
+==================================
+rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / gtpc / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end
+
+hit pattern/defined input set::
+MAC_IPV6_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_IPV6_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_EchoRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x01)/GTPEchoRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_EchoResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x02)/GTPEchoResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_CreatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x10)/GTPCreatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_CreatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x11)/GTPCreatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_UpdatePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x12)/GTPUpdatePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_UpdatePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x13)/GTPUpdatePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_DeletePDPContextRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x14)/GTPDeletePDPContextRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_DeletePDPContextResponse packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x15)/GTPDeletePDPContextResponse()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_PDUNotificationRequest packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1B)/GTPPDUNotificationRequest()],iface="enp134s0f0")
+
+MAC_VLAN_IPV6_GTPC_SupportedExtensionHeadersNotification packet::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:2020", dst="CDCD:910A:2222:5498:8475:1111:3900:1536")/UDP(sport=20,dport=2123)/GTPHeader(teid=0x12345678,gtp_type=0x1F)/GTPSupportedExtensionHeadersNotification()],iface="enp134s0f0")
+
+
+Test case: symmetric negative case
+==================================
+1. create rules with invalid input set::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types gtpu end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4 l3-dst-only end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-udp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4 end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types tcp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-src-only end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l4-dst-only end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / tcp / end actions rss func symmetric_toeplitz types ipv4-tcp l3-dst-only l4-src-only end key_len 0 queues end / end
+
+2. check all the rules failed to be created.
+
+
+Test case: toeplitz negative case
+=================================
+
+1. create rules with invalid input set::
+
+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / 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 2 (flow rule (handle)): Invalid input pattern: Invalid argument
+
+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end
+    ice_flow_create(): Failed to create flow
+    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Invalid input pattern: Invalid argument
+
+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types udp end key_len 0 queues end / end
+    ice_flow_create(): Failed to create flow
+    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Invalid input pattern: Invalid argument
+
+    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 gtpu end key_len 0 queues end / end
+    ice_flow_create(): Failed to create flow
+    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Invalid input pattern: Invalid argument
+
+2. check all the rule failed to be created.
+
+
+Test case: inner L4 protocol hash
+=================================
+
+Subcase: MAC_IPV4_GTPU_IPV4_UDP/TCP
+-----------------------------------
+1. create rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end
+
+2. send packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+
+3. check the two packets received with different hash values, and distributed to queue by RSS.
+
+4. flush the rules, send the two packets again, check they are distributed to the same queue::
+
+    testpmd> flow flush 0
+
+Subcase: MAC_IPV6_GTPU_IPV4_UDP/TCP
+-----------------------------------
+1. create rules::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv4 / tcp / end actions rss types ipv4-tcp end key_len 0 queues end / end
+
+2. send packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+
+3. check the two packets received with different hash values, and distributed to queue by RSS.
+
+4. flush the rules, send the two packets again, check they are distributed to the same queue::
+
+    testpmd> flow flush 0
+
+Subcase: MAC_IPV4_GTPU_IPV6_UDP/TCP
+-----------------------------------
+1. create rules::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end
+    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end
+
+2. send packets::
+
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="1111:2222:3333:4444:5555:6666:7777:8888",src="2222:3333:4444:5555:6666:7777:8888:9999")/TCP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="1111:2222:3333:4444:5555:6666:7777:8888",src="2222:3333:4444:5555:6666:7777:8888:9999")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
+
+3. check the two packets received with different hash values, and distributed to queue by RSS.
+
+4. flush the rules, send the two packets again, check they are distributed to the same queue::
+
+    testpmd> flow flush 0
+
+Subcase: MAC_IPV6_GTPU_IPV6_UDP/TCP
+-----------------------------------
 1. create rules::
 
     flow create 0 ingress pattern eth / ipv6 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end
@@ -2345,8 +3592,6 @@ Subcase: MAC_IPV6_GTPU_IPV6_UDP/TCP
 
 Test case: multirules
 =====================
-Note: the action after deleting rule is not guaranteed in dpdk-20.08.
-so the following step don't need to be run in dpdk-20.08.
 
 Subcase: IPV4_GTPU_IPV4/IPV4_GTPU_EH_IPV4
 -----------------------------------------
@@ -2382,6 +3627,9 @@ Subcase: IPV4_GTPU_IPV4/IPV4_GTPU_EH_IPV4
 
 8. check packet 2 has different hash value with packet 1, packet 3 has same hash value with packet 1.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 9. destroy IPV4_GTPU_IPV4 rule::
 
     flow destroy 0 rule 0
@@ -2435,6 +3683,9 @@ Subcase: IPV4_GTPU_EH_IPV4 with/without UL/DL
 
 8. check packet 2 has different hash value with packet 1, packet 3 has same hash value with packet 1.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 9. destroy IPV4_GTPU_EH_IPV4 rule::
 
     flow destroy 0 rule 1
@@ -2477,7 +3728,10 @@ Subcase: IPV4_GTPU_EH_IPV4 without/with UL/DL
 8. check packet 2 has different hash value with packet 1, packet 3 has same hash value with packet 1.
 
 9. repeat step 2, check packet 2 has different hash value with packet 1, packet 3 has same hash value with packet 1.
- 
+
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 10. destroy IPV4_GTPU_EH_IPV4 rule::
 
      flow destroy 0 rule 0
@@ -2513,6 +3767,9 @@ Subcase: IPV4_GTPU_EH_IPV4 and IPV4_GTPU_EH_IPV4_UDP
 
 7. repeat step 2, check packet 2 has different hash value with packet 1, packet 3 has same hash value with packet 1.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 8. destroy IPV4_GTPU_EH_IPV4 rule::
 
     flow destroy 0 rule 1
@@ -2558,6 +3815,9 @@ Subcase: IPV6_GTPU_EH_IPV6 and IPV6_GTPU_EH_IPV6_TCP
 
 7. repeat step 2, check all the packets has same hash value.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 8. destroy IPV6_GTPU_EH_IPV6 rule::
 
     flow destroy 0 rule 1
@@ -2622,63 +3882,9 @@ Subcase: IPV6_GTPU_IPV4 and IPV6_GTPU_IPV4_TCP
 
 7. repeat step 2, packet 2 has same hash value with packet 1, packet 3 has different hash value with packet 1.
 
-Test case: co-exist L3 IPv4/IPv6_GTPU_EH
-========================================
-
-Subcase 1: co-exist L3 IPV4/IPV6_GTPU_EH_IPV4
----------------------------------------------
-
-Rule 1::
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
-Rule 2::
-    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
-
-Packets::
-
-    pkt1=Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)
-    pkt2=Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP(dst="192.168.1.1", src="192.168.0.2")/("X"*480)
-    pkt3=Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP(dst="192.168.1.1", src="192.168.0.3")/("X"*480)
-    pkt4=Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP(dst="192.168.1.1", src="192.168.0.3")/("X"*480)
-
-1. Rule1 and rule2 only have outer layer 3 difference.
-2. Send rule1 matched pkt1, mark queue id as Q1, use default input to do hash.
-3. Send rule2 matched pkt2, mark queue id as Q2, use default input to do hash.
-4. Create rule 1.
-5. Send rule1 matched pkt1, mark queue id as Q3.
-6. Check Q3 is different from Q1, use rule1 input set to do hash.
-7. Send rule2 matched pkt2, mark queue id as Q4.
-8. Check Q4 is same as Q2, still use default input to do hash, not use rule1 input set.
-9. Send rule1 nomatched pkt3, change src IP address, mark queue id as Q5.
-10. Check Q5 is same as Q3.
-11. Flush flow list.
-12. Create rule 2.
-13. Send rule2 matched pkt2, mark queue id as Q6.
-14. Check Q6 is different from Q2, use rule2 input set to do hash.
-15. Send rule1 matched pkt1, mark queue id as Q7.
-16. Check Q7 is same as Q1, still use default input set to do hash, not use rule2 input set.
-17. Send rule2 nomatched pkt4, change src IP address, mark queue id as Q8.
-18. Check Q8 is same as Q6.
-
-Subcase 2: co-exist L3 IPV4/IPV6_GTPU_EH_IPV6
----------------------------------------------
-
-Rule 1::
-    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end
-rule 2::
-    flow create 0 ingress pattern eth / ipv6 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end
-
-Packets::
-
-    pkt1=Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x34)/IPv6(dst="::12", src="::35")/("X"*480)
-    pkt2=Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x34)/IPv6(dst="::12", src="::35")/("X"*480)
-    pkt3=Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x34)/IPv6(dst="::13", src="::35")/("X"*480)
-    pkt4=Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x34)/IPv6(dst="::13", src="::35")/("X"*480)
-Test steps are same as subcase 1.
 
 Test case: toeplitz and symmetric rules combination
 ===================================================
-Note: the action after deleting rule is not guaranteed in dpdk-20.08.
-so the following step don't need to be run in dpdk-20.08.
 
 Subcase: toeplitz/symmetric with same pattern
 ---------------------------------------------
@@ -2718,6 +3924,9 @@ Subcase: toeplitz/symmetric with same pattern
 
 8. repeat step 2, check the toeplitz rule can't work now.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 11. destroy the rule 1::
 
      testpmd> flow destroy 0 rule 1
@@ -2765,6 +3974,9 @@ Subcase: toeplitz/symmetric with same ptype different UL/DL
 
 8. repeat step 2, check the toeplitz rule also can work now.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 9. destroy the rule 1::
 
     testpmd> flow destroy 0 rule 1
@@ -2827,6 +4039,9 @@ Subcase: toeplitz/symmetric with different pattern
 
 8. repeat step 2, check the toeplitz rule also can work now.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 9. destroy the rule 1::
 
     testpmd> flow destroy 0 rule 1
@@ -2895,6 +4110,9 @@ Subcase: toeplitz/symmetric with different pattern (with/without UL/DL)
 
 8. repeat step 2, check the rule with UL/DL can't work now.
 
+Note: the action after deleting rule is not guaranteed so far.
+so the following step don't need to be run.
+
 9. destroy the rule 1::
 
     testpmd> flow destroy 0 rule 1
-- 
2.17.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dts] [PATCH V2]test_plans/cvl_advanced_iavf_rss_gtpu_test_plan:add gtpu-nopdu/gtpc cases and update multi-rules cases
  2020-11-24 11:26 [dts] [PATCH V2]test_plans/cvl_advanced_iavf_rss_gtpu_test_plan:add gtpu-nopdu/gtpc cases and update multi-rules cases qifu
@ 2020-11-26  7:55 ` Tu, Lijuan
  0 siblings, 0 replies; 2+ messages in thread
From: Tu, Lijuan @ 2020-11-26  7:55 UTC (permalink / raw)
  To: Fu, Qi, dts; +Cc: Fu, Qi

> 1. add new test cases to support GTPU no PDU and GTPC pattern.
> 2. as the pkg updated, default gtpu behavior is changed.
>    so that the behavior after deleting gtpu rss rule is also changed.
>    ignored the steps after deleting rules in multi-rules test cases.
> 
> Signed-off-by: qifu <qi.fu@intel.com>

Applied

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-11-26  7:55 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-24 11:26 [dts] [PATCH V2]test_plans/cvl_advanced_iavf_rss_gtpu_test_plan:add gtpu-nopdu/gtpc cases and update multi-rules cases qifu
2020-11-26  7:55 ` Tu, Lijuan

test suite reviews and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/dts/0 dts/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dts dts/ http://inbox.dpdk.org/dts \
		dts@dpdk.org
	public-inbox-index dts

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dts


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git