diff --git a/tests/TestSuite_cvl_advanced_rss_gtpu.py b/tests/TestSuite_cvl_advanced_rss_gtpu.py
index 71d44c30..e991b16a 100755
--- a/tests/TestSuite_cvl_advanced_rss_gtpu.py
+++ b/tests/TestSuite_cvl_advanced_rss_gtpu.py
@@ -43,6 +43,7 @@ mac_ipv4_gtpu_ipv4_basic = {
     'ipv4-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)',
     'ipv4-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)',
     'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)',
+    'gtpogre-ipv4-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
 }
 
 mac_ipv4_gtpu_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_ipv4_basic).replace('192.168.0.2', '192.168.1.2'))
@@ -105,6 +106,18 @@ mac_ipv4_gtpu_ipv4_l3dst_only = {
             'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['ipv4-udp'],
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_ipv4_unmatched_pkt,
             'action': 'check_no_hash',
@@ -117,6 +130,7 @@ mac_ipv4_gtpu_ipv4_l3dst_only = {
                 mac_ipv4_gtpu_ipv4_basic['ipv4-frag'],
                 mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_ipv4_basic['ipv4-udp'],
+                mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -198,6 +212,22 @@ mac_ipv4_gtpu_ipv4_all = {
             'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'),
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_l3dst_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_l3src_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
+            'action': 'check_hash_different',
+        },
         {
             'send_packet': mac_ipv4_gtpu_ipv4_unmatched_pkt,
             'action': 'check_no_hash',
@@ -210,6 +240,7 @@ mac_ipv4_gtpu_ipv4_all = {
                 mac_ipv4_gtpu_ipv4_basic['ipv4-frag'],
                 mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_ipv4_basic['ipv4-udp'],
+                mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -269,6 +300,18 @@ mac_ipv4_gtpu_ipv4_gtpu = {
             'send_packet': mac_ipv4_gtpu_ipv4_basic['ipv4-udp'].replace('192.168.0.', '192.168.1.'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_ipv4_unmatched_pkt,
             'action': 'check_no_hash',
@@ -281,6 +324,7 @@ mac_ipv4_gtpu_ipv4_gtpu = {
                 mac_ipv4_gtpu_ipv4_basic['ipv4-frag'],
                 mac_ipv4_gtpu_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_ipv4_basic['ipv4-udp'],
+                mac_ipv4_gtpu_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -319,6 +363,14 @@ mac_ipv4_gtpu_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -345,6 +397,14 @@ mac_ipv4_gtpu_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': {'save_hash': 'gtpogre-ipv4-nonfrag'},
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {   # unmatch MAC_IPV4_GTPU_IPV6 nonfrag
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)',
             'action': 'save_hash',
@@ -371,6 +431,14 @@ mac_ipv4_gtpu_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
             'action': {'check_hash_different': 'nonfrag'},
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': {'save_hash': 'gtpogre-ipv4-nonfrag'},
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': {'check_hash_different': 'gtpogre-ipv4-nonfrag'},
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)',
             'action': {'save_hash': 'frag'},
@@ -420,6 +488,22 @@ mac_ipv4_gtpu_ipv4_udp_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/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)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/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=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)',
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -438,6 +522,22 @@ mac_ipv4_gtpu_ipv4_udp_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/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)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/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=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)',
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
@@ -541,6 +641,14 @@ mac_ipv4_gtpu_eh_dl_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -575,6 +683,14 @@ mac_ipv4_gtpu_eh_dl_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
             'action': 'save_hash',
@@ -607,6 +723,14 @@ mac_ipv4_gtpu_eh_dl_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'post-test': [
         {
@@ -641,6 +765,14 @@ mac_ipv4_gtpu_eh_dl_ipv4_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP()/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
 }
 mac_ipv4_gtpu_eh_ul_ipv4_symmetric = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_symmetric)
@@ -674,6 +806,22 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)',
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -692,6 +840,22 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)',
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
@@ -701,11 +865,11 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = {
             'action': 'check_hash_different',
         },
         {
-            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)',
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
         },
         {
-            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)',
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)',
             'action': 'check_hash_different',
         },
         {
@@ -722,10 +886,18 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=22, dport=23)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
 }
 mac_ipv4_gtpu_eh_ul_ipv4_udp_symmetric = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_udp_symmetric)
@@ -770,7 +942,11 @@ mac_ipv4_gtpu_eh_ipv6_tcp_symmetric = eval(str(mac_ipv4_gtpu_eh_ipv4_tcp_symmetr
                                         .replace('ipv4_tcp_symmetric', 'ipv6_tcp_symmetric')
                                         )
 
-mac_ipv4_gtpu_ipv4_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/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)'
+mac_ipv4_gtpu_ipv4_udp_basic = {
+        'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/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)',
+        'gtpogre-ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/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)',
+}
+
 mac_ipv4_gtpu_ipv4_udp_unmatch = [
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
     'Ether(dst="68:05:CA:BB:26:E0")/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)',
@@ -782,15 +958,27 @@ mac_ipv4_gtpu_ipv4_udp_l3dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_same',
         },
         {
@@ -800,7 +988,11 @@ mac_ipv4_gtpu_ipv4_udp_l3dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -819,19 +1011,35 @@ mac_ipv4_gtpu_ipv4_udp_l3src_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_same',
         },
         {
@@ -841,7 +1049,7 @@ mac_ipv4_gtpu_ipv4_udp_l3src_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -853,19 +1061,35 @@ mac_ipv4_gtpu_ipv4_udp_l3src_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_same',
         },
         {
@@ -875,7 +1099,7 @@ mac_ipv4_gtpu_ipv4_udp_l3src_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -887,19 +1111,35 @@ mac_ipv4_gtpu_ipv4_udp_l3dst_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_same',
         },
         {
@@ -909,7 +1149,7 @@ mac_ipv4_gtpu_ipv4_udp_l3dst_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -921,19 +1161,35 @@ mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32').replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32').replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_same',
         },
         {
@@ -943,7 +1199,7 @@ mac_ipv4_gtpu_ipv4_udp_l3dst_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -954,15 +1210,28 @@ mac_ipv4_gtpu_ipv4_udp_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32')
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32')
+                                                       .replace('192.168.0', '192.168.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32')
                                                        .replace('192.168.0', '192.168.1'),
             'action': 'check_hash_same',
         },
@@ -973,7 +1242,11 @@ mac_ipv4_gtpu_ipv4_udp_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -984,15 +1257,28 @@ mac_ipv4_gtpu_ipv4_udp_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=32')
+                                                       .replace('192.168.0', '192.168.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=32')
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=32')
                                                        .replace('192.168.0', '192.168.1'),
             'action': 'check_hash_same',
         },
@@ -1003,7 +1289,7 @@ mac_ipv4_gtpu_ipv4_udp_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1015,27 +1301,51 @@ mac_ipv4_gtpu_ipv4_udp_all = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_same',
         },
         {
@@ -1045,7 +1355,11 @@ mac_ipv4_gtpu_ipv4_udp_all = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1057,17 +1371,31 @@ mac_ipv4_gtpu_ipv4_udp_gtpu = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('192.168.0', '192.168.1')
+                                                       .replace('sport=22', 'sport=32')
+                                                       .replace('dport=23', 'dport=33'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('192.168.0', '192.168.1')
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0', '192.168.1')
                                                        .replace('sport=22', 'sport=32')
                                                        .replace('dport=23', 'dport=33'),
             'action': 'check_hash_same',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_different',
         },
         {
@@ -1077,7 +1405,7 @@ mac_ipv4_gtpu_ipv4_udp_gtpu = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1131,6 +1459,7 @@ mac_ipv4_gtpu_ipv6_basic = {
     'ipv6-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment()/("X"*480)',
     'ipv6-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)',
     'ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/("X"*480)',
+    'gtpogre-ipv6-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)',
 }
 
 mac_ipv4_gtpu_ipv6_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_ipv6_basic).replace('ABAB', '1212'))
@@ -1192,6 +1521,18 @@ mac_ipv4_gtpu_ipv6_l3dst_only = {
             'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['ipv6-udp'],
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_ipv6_unmatched_pkt,
             'action': 'check_no_hash',
@@ -1204,6 +1545,7 @@ mac_ipv4_gtpu_ipv6_l3dst_only = {
                 mac_ipv4_gtpu_ipv6_basic['ipv6-frag'],
                 mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'],
                 mac_ipv4_gtpu_ipv6_basic['ipv6-udp'],
+                mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -1269,6 +1611,22 @@ mac_ipv4_gtpu_ipv6_all = {
             'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'].replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_l3dst_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_l3src_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
         {
             'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'],
             'action': 'save_hash',
@@ -1297,6 +1655,7 @@ mac_ipv4_gtpu_ipv6_all = {
                 mac_ipv4_gtpu_ipv6_basic['ipv6-frag'],
                 mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'],
                 mac_ipv4_gtpu_ipv6_basic['ipv6-udp'],
+                mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -1356,6 +1715,18 @@ mac_ipv4_gtpu_ipv6_gtpu = {
             'send_packet': mac_ipv4_gtpu_ipv6_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_ipv6_unmatched_pkt,
             'action': 'check_no_hash',
@@ -1368,6 +1739,7 @@ mac_ipv4_gtpu_ipv6_gtpu = {
                 mac_ipv4_gtpu_ipv6_basic['ipv6-frag'],
                 mac_ipv4_gtpu_ipv6_basic['ipv6-icmp'],
                 mac_ipv4_gtpu_ipv6_basic['ipv6-udp'],
+                mac_ipv4_gtpu_ipv6_basic['gtpogre-ipv6-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -1377,7 +1749,10 @@ mac_ipv4_gtpu_ipv6_gtpu = {
 mac_ipv4_gtpu_ipv6_toeplitz = [mac_ipv4_gtpu_ipv6_l3dst_only, mac_ipv4_gtpu_ipv6_l3src_only,
                                mac_ipv4_gtpu_ipv6_all, mac_ipv4_gtpu_ipv6_gtpu]
 
-mac_ipv4_gtpu_ipv6_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)'
+mac_ipv4_gtpu_ipv6_udp_basic = {
+        'ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+        'gtpogre-ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+}
 mac_ipv4_gtpu_ipv6_udp_unmatch = [
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)',
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
@@ -1389,15 +1764,27 @@ mac_ipv4_gtpu_ipv6_udp_l3dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
             'action': 'check_hash_same',
         },
         {
@@ -1407,7 +1794,11 @@ mac_ipv4_gtpu_ipv6_udp_l3dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1426,19 +1817,35 @@ mac_ipv4_gtpu_ipv6_udp_l3src_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
         {
@@ -1448,7 +1855,11 @@ mac_ipv4_gtpu_ipv6_udp_l3src_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1460,19 +1871,35 @@ mac_ipv4_gtpu_ipv6_udp_l3src_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
         {
@@ -1482,7 +1909,11 @@ mac_ipv4_gtpu_ipv6_udp_l3src_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1494,19 +1925,35 @@ mac_ipv4_gtpu_ipv6_udp_l3dst_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33').replace('ABAB', '1212'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33').replace('ABAB', '1212'),
             'action': 'check_hash_same',
         },
         {
@@ -1516,7 +1963,11 @@ mac_ipv4_gtpu_ipv6_udp_l3dst_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1528,19 +1979,35 @@ mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32').replace('ABAB', '1212'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32').replace('ABAB', '1212'),
             'action': 'check_hash_same',
         },
         {
@@ -1550,7 +2017,11 @@ mac_ipv4_gtpu_ipv6_udp_l3dst_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1561,15 +2032,28 @@ mac_ipv4_gtpu_ipv6_udp_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32')
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32')
+                                                       .replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32')
                                                        .replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
@@ -1580,7 +2064,11 @@ mac_ipv4_gtpu_ipv6_udp_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1591,15 +2079,28 @@ mac_ipv4_gtpu_ipv6_udp_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=32')
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=32')
+                                                       .replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=32')
                                                        .replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
@@ -1610,7 +2111,11 @@ mac_ipv4_gtpu_ipv6_udp_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -1622,27 +2127,51 @@ mac_ipv4_gtpu_ipv6_udp_all = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_same',
         },
         {
@@ -1652,29 +2181,47 @@ mac_ipv4_gtpu_ipv6_udp_all = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
-    ]
-}
-
-mac_ipv4_gtpu_ipv6_udp_gtpu = {
-    'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_gtpu',
-    'port_id': 0,
-    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types gtpu end key_len 0 queues end / end',
-    'test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'check_no_hash',
+        },
+    ]
+}
+
+mac_ipv4_gtpu_ipv6_udp_gtpu = {
+    'sub_casename': 'mac_ipv4_gtpu_ipv6_udp_gtpu',
+    'port_id': 0,
+    'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 / udp / end actions rss types gtpu end key_len 0 queues end / end',
+    'test': [
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434')
+                                                       .replace('sport=22', 'sport=32')
+                                                       .replace('dport=23', 'dport=33'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('ABAB', '1212').replace('CDCD', '3434')
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434')
                                                        .replace('sport=22', 'sport=32')
                                                        .replace('dport=23', 'dport=33'),
             'action': 'check_hash_same',
         },
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_different',
         },
         {
@@ -1684,8 +2231,12 @@ mac_ipv4_gtpu_ipv6_udp_gtpu = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
+        },
+		{
+            'send_packet': mac_ipv4_gtpu_ipv6_udp_basic['gtpogre-ipv6-udp'],
+			'action': 'check_no_hash',
         },
     ]
 }
@@ -1738,7 +2289,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_basic = {
     'ipv4-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)',
     'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)',
     'ipv4-tcp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP()/("X"*480)',
-
+    'gtpogre-ipv4-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
 }
 
 mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_basic).replace('192.168.0.2', '192.168.1.2'))
@@ -1765,6 +2316,18 @@ mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only = {
             'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['ipv4-nonfrag'],
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'],
             'action': 'save_hash',
@@ -1826,6 +2389,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only = {
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'],
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'],
+                mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -1833,7 +2397,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only = {
 }
 
 mac_ipv4_gtpu_eh_dl_ipv4_l3src_only = eval(str(mac_ipv4_gtpu_eh_dl_ipv4_l3dst_only)
-                                           .replace('eh_dl_ipv4_l3dst', 'eh_ul_ipv4_l3src')
+                                           .replace('eh_dl_ipv4_l3dst', 'eh_dl_ipv4_l3src')
                                            .replace('l3-dst-only', 'l3-src-only')
                                            .replace('check_hash_same', 'hash_check_different')
                                            .replace('check_hash_different', 'check_hash_same')
@@ -1863,6 +2427,26 @@ mac_ipv4_gtpu_eh_dl_ipv4_all = {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_ipv4_l3dst_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_ipv4_l3src_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'],
             'action': 'save_hash',
@@ -1956,6 +2540,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_all = {
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'],
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'],
+                mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -1979,6 +2564,18 @@ mac_ipv4_gtpu_eh_dl_ipv4_gtpu = {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-frag'],
             'action': 'save_hash',
@@ -2040,6 +2637,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_gtpu = {
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-udp'],
                 mac_ipv4_gtpu_eh_dl_ipv4_basic['ipv4-tcp'],
+                mac_ipv4_gtpu_eh_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -2063,7 +2661,7 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic = {
     'ipv4-frag': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2", frag=6)/("X"*480)',
     'ipv4-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/ICMP()/("X"*480)',
     'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP()/("X"*480)',
-
+    'gtpogre-ipv4-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
 }
 
 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic).replace('192.168.0.2', '192.168.1.2'))
@@ -2091,6 +2689,18 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only = {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['ipv4-nonfrag'].replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['gtpogre-ipv4-nonfrag'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'],
             'action': 'save_hash',
@@ -2152,6 +2762,7 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_only = {
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'],
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'],
+                mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -2190,6 +2801,26 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all = {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3dst_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_l3src_changed_pkt['gtpogre-ipv4-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'],
             'action': 'save_hash',
@@ -2283,6 +2914,7 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_all = {
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'],
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'],
+                mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -2306,6 +2938,18 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu = {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'].replace('192.168.0.', '192.168.1.'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-nonfrag_ul'],
             'action': 'save_hash',
@@ -2367,6 +3011,7 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_gtpu = {
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-frag'],
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-icmp'],
                 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['ipv4-udp'],
+                mac_ipv4_gtpu_eh_without_ul_dl_ipv4_basic['gtpogre-ipv4-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -2381,6 +3026,8 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_toeplitz = [mac_ipv4_gtpu_eh_without_ul_dl_i
 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic = {
     'dl': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
     'ul': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
+    'gtpogre-dl': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
+    'gtpogre-ul': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
 }
 
 mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt = [
@@ -2411,6 +3058,24 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3dst_only = {
                                                                               .replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-ul'],
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0.2', '192.168.1.2')
+                                                                              .replace('sport=22, dport=23', 'sport=32, dport=33')
+                                                                              .replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt,
             'action': 'check_no_hash',
@@ -2462,6 +3127,30 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l3src_l4src = {
                 .replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-ul'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0.1', '192.168.1.1')
+                .replace('dport=23', 'dport=33')
+                .replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-ul'].replace('192.168.0.1', '192.168.1.1')
+                .replace('dport=23', 'dport=33')
+                .replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt,
             'action': 'check_no_hash',
@@ -2522,6 +3211,26 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_l4src_only = {
             .replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-ul'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0', '192.168.1')
+            .replace('dport=23', 'dport=33')
+            .replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-ul'].replace('192.168.0', '192.168.1')
+            .replace('dport=23', 'dport=33')
+            .replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt,
             'action': 'check_no_hash',
@@ -2573,6 +3282,30 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp = {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt,
             'action': 'check_no_hash',
@@ -2613,6 +3346,26 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_gtpu = {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['dl'].replace('0x123456', '0x12345'),
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl']
+            .replace('192.168.0.', '192.168.1.')
+            .replace('sport=22, dport=23', 'sport=32, dport=33'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-ul']
+            .replace('192.168.0.', '192.168.1.')
+            .replace('sport=22, dport=23', 'sport=32, dport=33'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_basic['gtpogre-dl'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_different',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_without_ul_dl_ipv4_udp_unmatched_pkt,
             'action': 'check_no_hash',
@@ -2719,7 +3472,10 @@ mac_ipv4_gtpu_eh_without_ul_dl_ipv6_tcp_toeplitz = [eval(str(element).replace('g
                                                          .replace('rss types ipv4', 'rss types ipv6'))
                                                     for element in mac_ipv4_gtpu_eh_without_ul_dl_ipv4_tcp_toeplitz]
 
-mac_ipv4_gtpu_eh_dl_ipv4_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)'
+mac_ipv4_gtpu_eh_dl_ipv4_udp_basic = {
+        'ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)',
+        'gtpogre-ipv4-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22,dport=23)/("X"*480)'
+}
 mac_ipv4_gtpu_eh_dl_ipv4_udp_unmatch = [
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1", src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)',
@@ -2730,15 +3486,27 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_same',
         },
         {
@@ -2748,7 +3516,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2767,19 +3535,35 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_same',
         },
         {
@@ -2789,7 +3573,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2801,19 +3585,35 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32').replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_same',
         },
         {
@@ -2823,7 +3623,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3src_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2835,19 +3635,35 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33').replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_same',
         },
         {
@@ -2857,7 +3673,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2869,20 +3685,37 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32')
-                                                             .replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32')
+                                                                         .replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32')
+                                                                                 .replace('192.168.0.2', '192.168.1.2'),
             'action': 'check_hash_same',
         },
         {
@@ -2892,7 +3725,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l3dst_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2903,16 +3736,29 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32')
-                                                             .replace('192.168.0', '192.168.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32')
+                                                                         .replace('192.168.0', '192.168.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32')
+                                                                                 .replace('192.168.0', '192.168.1'),
             'action': 'check_hash_same',
         },
         {
@@ -2922,7 +3768,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2933,16 +3779,29 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=32')
+                                                                         .replace('192.168.0', '192.168.1'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=32')
-                                                             .replace('192.168.0', '192.168.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=32')
+                                                                         .replace('192.168.0', '192.168.1'),
             'action': 'check_hash_same',
         },
         {
@@ -2952,7 +3811,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -2964,27 +3823,51 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_all = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types ipv4-udp end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.1', '192.168.1.1'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0.2', '192.168.1.2'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.1', '192.168.1.1'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0.2', '192.168.1.2'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_same',
         },
         {
@@ -2994,7 +3877,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_all = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3006,17 +3889,31 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 / udp / end actions rss types gtpu end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('192.168.0', '192.168.1')
-                                                             .replace('sport=22', 'sport=32')
-                                                             .replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('192.168.0', '192.168.1')
+                                                                         .replace('sport=22', 'sport=32')
+                                                                         .replace('dport=23', 'dport=33'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('192.168.0', '192.168.1')
+                                                                                 .replace('sport=22', 'sport=32')
+                                                                                 .replace('dport=23', 'dport=33'),
             'action': 'check_hash_same',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['gtpogre-ipv4-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_different',
         },
         {
@@ -3026,7 +3923,7 @@ mac_ipv4_gtpu_eh_dl_ipv4_udp_gtpu = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv4_udp_basic['ipv4-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3088,6 +3985,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_basic = {
     'ipv6-icmp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/("X"*480)',
     'ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/("X"*480)',
     'ipv6-tcp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP()/("X"*480)',
+    'gtpogre-ipv6-nonfrag': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)',
 }
 
 mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt = eval(str(mac_ipv4_gtpu_eh_dl_ipv6_basic).replace('ABAB', '1212'))
@@ -3113,6 +4011,18 @@ mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only = {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['ipv6-nonfrag'],
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'],
             'action': 'save_hash',
@@ -3174,6 +4084,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_l3dst_only = {
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'],
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'],
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'],
+                mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -3211,6 +4122,26 @@ mac_ipv4_gtpu_eh_dl_ipv6_all = {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('0x123456', '0x12345'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3dst_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_l3src_changed_pkt['gtpogre-ipv6-nonfrag'],
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('0x123456', '0x12345'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'],
             'action': 'save_hash',
@@ -3304,6 +4235,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_all = {
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'],
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'],
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'],
+                mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -3327,6 +4259,18 @@ mac_ipv4_gtpu_eh_dl_ipv6_gtpu = {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'].replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-frag'],
             'action': 'save_hash',
@@ -3388,6 +4332,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_gtpu = {
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-icmp'],
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-udp'],
                 mac_ipv4_gtpu_eh_dl_ipv6_basic['ipv6-tcp'],
+                mac_ipv4_gtpu_eh_dl_ipv6_basic['gtpogre-ipv6-nonfrag'],
             ],
             'action': 'check_no_hash',
         },
@@ -3405,7 +4350,10 @@ mac_ipv4_gtpu_eh_ul_ipv6_toeplitz = [eval(str(element).replace('(type=1', '(type
 
 mac_ipv4_gtpu_eh_ipv6_toeplitz = mac_ipv4_gtpu_eh_dl_ipv6_toeplitz + mac_ipv4_gtpu_eh_ul_ipv6_toeplitz
 
-mac_ipv4_gtpu_eh_dl_ipv6_udp_basic = 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)'
+mac_ipv4_gtpu_eh_dl_ipv6_udp_basic = {
+        'ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+        'gtpogre-ipv6-udp': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)'
+}
 mac_ipv4_gtpu_eh_dl_ipv6_udp_unmatch = [
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/("X"*480)',
     'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/("X"*480)',
@@ -3416,15 +4364,27 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
             'action': 'check_hash_same',
         },
         {
@@ -3434,7 +4394,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3453,19 +4413,35 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
         {
@@ -3475,7 +4451,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3487,19 +4463,35 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
         {
@@ -3509,7 +4501,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3src_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3521,19 +4513,35 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33').replace('ABAB', '1212'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33').replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33').replace('ABAB', '1212'),
             'action': 'check_hash_same',
         },
         {
@@ -3543,7 +4551,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3555,19 +4563,35 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32').replace('ABAB', '1212'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32').replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32').replace('ABAB', '1212'),
             'action': 'check_hash_same',
         },
         {
@@ -3577,7 +4601,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l3dst_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3588,15 +4612,28 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32')
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32')
+                                                       .replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32')
                                                        .replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
@@ -3607,7 +4644,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l4dst = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3618,15 +4655,28 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=32')
+                                                       .replace('ABAB', '1212').replace('CDCD', '3434'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=32')
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=32')
                                                        .replace('ABAB', '1212').replace('CDCD', '3434'),
             'action': 'check_hash_same',
         },
@@ -3637,7 +4687,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_l4src = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3649,27 +4699,51 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_all = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('sport=22', 'sport=32'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('sport=22', 'sport=32'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('dport=23', 'dport=33'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('dport=23', 'dport=33'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('CDCD', '3434'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('sport=22', 'sport=32'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('dport=23', 'dport=33'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('CDCD', '3434'),
             'action': 'check_hash_different',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_same',
         },
         {
@@ -3679,7 +4753,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_all = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3691,17 +4765,31 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu = {
     'rule': 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 / udp / end actions rss types gtpu end key_len 0 queues end / end',
     'test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434')
+                                                       .replace('sport=22', 'sport=32')
+                                                       .replace('dport=23', 'dport=33'),
+            'action': 'check_hash_same',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
+            'action': 'check_hash_different',
+        },
+        {
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'],
             'action': 'save_hash',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('ABAB', '1212').replace('CDCD', '3434')
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('ABAB', '1212').replace('CDCD', '3434')
                                                        .replace('sport=22', 'sport=32')
                                                        .replace('dport=23', 'dport=33'),
             'action': 'check_hash_same',
         },
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic.replace('teid=0x123456', 'teid=0x12345'),
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['gtpogre-ipv6-udp'].replace('teid=0x123456', 'teid=0x12345'),
             'action': 'check_hash_different',
         },
         {
@@ -3711,7 +4799,7 @@ mac_ipv4_gtpu_eh_dl_ipv6_udp_gtpu = {
     ],
     'post-test': [
         {
-            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic,
+            'send_packet': mac_ipv4_gtpu_eh_dl_ipv6_udp_basic['ipv6-udp'],
             'action': 'check_no_hash',
         },
     ]
@@ -3973,6 +5061,14 @@ inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp = {
             'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/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)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(proto=0x2F)/GRE(proto=0x0800)/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)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:ca:a3:28:94")/IP(proto=0x2F)/GRE(proto=0x0800)/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)',
+            'action': 'check_hash_different',
+        },
     ],
     'post-test': [
         {
@@ -3990,7 +5086,8 @@ inner_l4_mac_ipv6_gtpu_ipv4_udp_tcp = eval(str(inner_l4_mac_ipv4_gtpu_ipv4_udp_t
                                            .replace('gtpu / ipv4', 'gtpu / gtp_psc / ipv4')
                                            .replace('IP()', 'IPv6()')
                                            .replace('teid=0x123456)', 'teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) ')
-                                           .replace('mac_ipv4', 'mac_ipv6'))
+                                           .replace('mac_ipv4', 'mac_ipv6')
+                                           .replace('IP(proto=0x2F)/GRE(proto=0x0800', 'IPv6(nh=0x2F)/GRE(proto=0x86DD'))
 inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp = {
     'sub_casename': 'mac_ipv4_gtpu_eh_ipv6_udp_tcp',
     'port_id': 0,
@@ -4007,6 +5104,14 @@ inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'post-test': [
         {
@@ -4024,7 +5129,9 @@ inner_l4_mac_ipv6_gtpu_eh_ipv6_udp_tcp = eval(str(inner_l4_mac_ipv4_gtpu_eh_ipv6
                                               .replace('pdu_t is 0', 'pdu_t is 1')
                                               .replace('(type=0', '(type=1')
                                               .replace('IP()', 'IPv6()')
-                                              .replace('mac_ipv4', 'mac_ipv6'))
+                                              .replace('mac_ipv4', 'mac_ipv6')
+                                              .replace('IP(proto=0x2F)/GRE(proto=0x0800', 'IPv6(nh=0x2F)/GRE(proto=0x86DD')
+                                              .replace('GTP_PDUSession_ExtensionHeader(pdu_type=0', 'GTP_PDUSession_ExtensionHeader(pdu_type=1'))
 inner_l4_protocal_hash = [inner_l4_mac_ipv4_gtpu_ipv4_udp_tcp, inner_l4_mac_ipv6_gtpu_ipv4_udp_tcp,
                           inner_l4_mac_ipv4_gtpu_eh_ipv6_udp_tcp, inner_l4_mac_ipv6_gtpu_eh_ipv6_udp_tcp]
 
@@ -4057,6 +5164,14 @@ mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -4083,6 +5198,14 @@ mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': {'save_hash': 'gtpogre-ipv4-nonfrag'},
+        },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)',
             'action': 'save_hash',
@@ -4124,6 +5247,14 @@ mac_ipv4_gtpu_eh_ipv4_without_ul_dl_symmetric = {
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/ICMP()/("X"*480)',
             'action': 'check_hash_different',
+        },
+		{
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/("X"*480)',
+            'action': 'save_hash',
+        },
+		{
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/("X"*480)',
+            'action': 'check_hash_different',
         },
     ],
 }
@@ -4160,6 +5291,10 @@ mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
             'action': {'save_hash', 'udp-ul'},
@@ -4176,6 +5311,10 @@ mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -4194,6 +5333,10 @@ mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
@@ -4210,6 +5353,10 @@ mac_ipv4_gtpu_eh_ipv4_udp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/UDP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
@@ -4285,6 +5432,10 @@ mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_different',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)',
             'action': {'save_hash', 'udp-ul'},
@@ -4301,6 +5452,10 @@ mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_different',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)',
+            'action': 'check_hash_different',
+        },
     ],
     'test': [
         {
@@ -4319,6 +5474,10 @@ mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=23, dport=22)/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/TCP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
@@ -4335,6 +5494,10 @@ mac_ipv4_gtpu_eh_ipv4_tcp_without_ul_dl_symmetric = {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=23, dport=22)/("X"*480)',
             'action': 'check_hash_same',
         },
+        {
+            'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP(proto=0x2F)/GRE(proto=0x0800)/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=1, P=1, QFI=0x34) /IP(dst="192.168.0.2",src="192.168.0.1")/TCP(sport=22, dport=23)/("X"*480)',
+            'action': 'check_hash_same',
+        },
         {
             'send_packet': 'Ether(dst="68:05:CA:BB:26:E0")/IP()/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x123456)/GTPPDUSessionContainer(type=0, P=1, QFI=0x34) /IP(dst="192.168.0.1",src="192.168.0.2")/UDP(sport=22, dport=23)/("X"*480)',
             'action': 'save_hash',
