test suite reviews and discussions
 help / color / mirror / Atom feed
From: Yaqi Tang <yaqi.tang@intel.com>
To: dts@dpdk.org
Cc: Yaqi Tang <yaqi.tang@intel.com>
Subject: [dts][PATCH V1] test_plans/cvl_advanced_iavf_rss_pppol2tpoudp: add test plan for l2tpv2 control and data
Date: Tue, 15 Mar 2022 12:03:29 +0800	[thread overview]
Message-ID: <20220315040329.397792-1-yaqi.tang@intel.com> (raw)

Support IAVF PPPoL2TPv2oUDP RSS Hash, and required to distribute packets based on inner IP src+dest address and TCP/UDP src+dest port.

Signed-off-by: Yaqi Tang <yaqi.tang@intel.com>
Tested-by: Yaqi Tang < yaqi.tang@intel.com>
---
 ...vanced_iavf_rss_pppol2tpoudp_test_plan.rst | 1718 +++++++++++++++++
 1 file changed, 1718 insertions(+)

diff --git a/test_plans/cvl_advanced_iavf_rss_pppol2tpoudp_test_plan.rst b/test_plans/cvl_advanced_iavf_rss_pppol2tpoudp_test_plan.rst
index 151621b6..7de39295 100644
--- a/test_plans/cvl_advanced_iavf_rss_pppol2tpoudp_test_plan.rst
+++ b/test_plans/cvl_advanced_iavf_rss_pppol2tpoudp_test_plan.rst
@@ -2741,3 +2741,1721 @@ Test case: eth_ipv4_udp_l2tpv2_ppp_ipv6_tcp_ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_TCP
    check the packet rss hash value is 0.
 
 7. distroy the rule and and check there is no rule listed.
+
+#l2tpv2 control + data
+Test case 1: l2tpv2_session_id_MAC_IPV4_L2TPV2_CONTROL
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)],iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)],iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 2: eth_l2_src_only_MAC_IPV4_L2TPV2_CONTROL
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77)/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)],iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)],iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 3: l2tpv2_session_id_MAC_IPV6_L2TPV2_CONTROL
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)],iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)],iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 4: eth_l2_src_only_MAC_IPV6_L2TPV2_CONTROL
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)],iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)],iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 5: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA
+===================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 6: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA
+=================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 7: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L
+=====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 8: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L
+===================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 9: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_S
+=====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 10: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_S
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully. 
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 11: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_O
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 12: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_O
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 13: l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L_S
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 14: eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L_S
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 15: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 16: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA
+==================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 17: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 18: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 19: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_S
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 20: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_S
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 21: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_O
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 22: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_O
+====================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 23: l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L_S
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 24: eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L_S
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 25: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 26: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 27: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 28: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 29: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_S
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 30: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_S
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 31: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_O
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 32: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_O
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 33: l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L_S
+============================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 34: eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L_S
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 35: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 36: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA
+======================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 37: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 38: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 39: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_S
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 40: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_S
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 41: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_O
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 42: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_O
+========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw('\x00\x00\x00\x00')/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 43: l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L_S
+============================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
+Test case 44: eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L_S
+==========================================================
+1. validate the rule, and check there is not rule listed.
+
+2. create a rss rule::
+
+    flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+   check there is a rss rule listed successfully.
+
+3. send a basic hit pattern packet,record the hash value::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet distributed to queue by rss.
+
+4. send hit pattern packets with changed input set in the rule::
+
+    sendp([Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packets have different hash value with basic packet.
+   check all the packets are distributed to queues by rss.
+
+5. send hit pattern packets with changed input set not in the rule::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the received packet have same hash value with the basic packet.
+   check all the packets are distributed to queues by rss.
+   note: if there is not this type packet in the case, omit this step.
+
+6. send not hit pattern packet::
+
+    sendp([Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw('\x00\x00')], iface="ens260f0")
+
+   check the packet rss hash value is 0.
+
+7. distroy the rule and check there is no rule listed.
+
-- 
2.25.1


             reply	other threads:[~2022-03-15  4:04 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-15  4:03 Yaqi Tang [this message]
2022-03-23  7:23 ` lijuan.tu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220315040329.397792-1-yaqi.tang@intel.com \
    --to=yaqi.tang@intel.com \
    --cc=dts@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).