* [dts] [PATCH V2 0/3] update cvl fdir related scripts
@ 2020-06-02 6:37 Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 1/3]test_plans/cvl_fdir_test_plan: update cvl fdir testplan Xiao Qimai
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Xiao Qimai @ 2020-06-02 6:37 UTC (permalink / raw)
To: dts; +Cc: Xiao Qimai
*. update cvl fdir script, testplan and rte_flow_common
Xiao Qimai (3):
update cvl fdir testplan
update cvl fdir script
update rte_flow_common for cvl fdir
test_plans/cvl_fdir_test_plan.rst | 240 ++--
tests/TestSuite_cvl_fdir.py | 2469 ++++++++++++++++++++++++-------------
tests/rte_flow_common.py | 102 +-
3 files changed, 1780 insertions(+), 1031 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dts] [PATCH V2 1/3]test_plans/cvl_fdir_test_plan: update cvl fdir testplan
2020-06-02 6:37 [dts] [PATCH V2 0/3] update cvl fdir related scripts Xiao Qimai
@ 2020-06-02 6:37 ` Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 2/3]tests/TestSuite_cvl_fdir: update cvl fdir script Xiao Qimai
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Xiao Qimai @ 2020-06-02 6:37 UTC (permalink / raw)
To: dts; +Cc: Xiao Qimai
Signed-off-by: Xiao Qimai <qimaix.xiao@intel.com>
---
test_plans/cvl_fdir_test_plan.rst | 240 +++++++++++++++++++-------------------
1 file changed, 119 insertions(+), 121 deletions(-)
diff --git a/test_plans/cvl_fdir_test_plan.rst b/test_plans/cvl_fdir_test_plan.rst
index a7eee0b..12e5041 100644
--- a/test_plans/cvl_fdir_test_plan.rst
+++ b/test_plans/cvl_fdir_test_plan.rst
@@ -460,6 +460,7 @@ Test case: flow validation
4. validate combined use of actions::
+ flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions count / end
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / count / end
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / mark id 1 / count identifier 0x1234 shared on / end
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 2 / count identifier 0x34 shared off / end
@@ -478,16 +479,9 @@ Test case: flow validation
Test case: negative validation
==============================
+Note: there may be error message change.
-1. only count action::
-
- flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end
-
- get the error message::
-
- Invalid input action: Invalid argument
-
-2. void action::
+1. void action::
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / and actions end
@@ -495,7 +489,7 @@ Test case: negative validation
Invalid argument
-3. conflict action::
+2. conflict action::
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / rss / end
@@ -503,7 +497,7 @@ Test case: negative validation
Unsupported action combination: Invalid argument
-4. invalid mark id::
+3. invalid mark id::
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark id 4294967296 / end
@@ -511,7 +505,7 @@ Test case: negative validation
Bad arguments
-5. invalid input set::
+4. invalid input set::
flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tc is 4 / end actions queue index 1 / end
@@ -519,7 +513,7 @@ Test case: negative validation
Bad arguments
-6. invalid queue index::
+5. invalid queue index::
flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / end
@@ -527,7 +521,7 @@ Test case: negative validation
Invalid input action: Invalid argument
-7. invalid rss queues parameter
+6. invalid rss queues parameter
Invalid number of queues::
@@ -555,7 +549,7 @@ Test case: negative validation
Invalid queue region indexes.: Invalid argument
-8. Invalid value of input set::
+7. Invalid value of input set::
flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x100 / end actions queue index 1 / end
flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / end
@@ -565,7 +559,7 @@ Test case: negative validation
Bad arguments
-9. unsupported pattern,validate GTPU rule with OS default package::
+8. unsupported pattern,validate GTPU rule with OS default package::
flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end
@@ -573,7 +567,7 @@ Test case: negative validation
Bad arguments
-10. invalid port::
+9. invalid port::
flow validate 2 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end
@@ -581,7 +575,7 @@ Test case: negative validation
No such device: No such device
-11. check the flow list::
+10. check the flow list::
testpmd> flow list 0
@@ -599,7 +593,7 @@ Subcase 1: MAC_IPV4_PAY queue index
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end
2. send matched packets, check the packets are distributed to queue 1 without FDIR matched ID.
- send mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -610,7 +604,7 @@ Subcase 1: MAC_IPV4_PAY queue index
testpmd> flow destroy 0 rule 0
-4. verify matched packets are not distributed to queue 1 without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV4_PAY rss queues
@@ -621,11 +615,11 @@ Subcase 2: MAC_IPV4_PAY rss queues
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / end
2. send matched packets, check the packets are distributed to queue 2 or 3 without without FDIR matched ID.
- send mismatched packets, check the packets are not distributed to queue 2 or 3 without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets are not distributed to queue 2 or 3 without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV4_PAY passthru
@@ -710,11 +704,11 @@ Subcase 7: MAC_IPV4_PAY protocal
pkt9 = Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/ Raw('x' * 80)
pkt10 = Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1)/TCP(sport=22,dport=23)/ Raw('x' * 80)
- check the packets received have not FDIR matched ID.
+ check the packets received are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets have not FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
@@ -729,7 +723,7 @@ Subcase 1: MAC_IPV4_UDP queue index
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 63 / mark id 0 / end
2. send matched packets, check the packets is distributed to queue 63 with FDIR matched ID=0x0.
- send mismatched packets, check the packets are received without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -740,7 +734,7 @@ Subcase 1: MAC_IPV4_UDP queue index
testpmd> flow destroy 0 rule 0
-4. verify matched packet is received without FDIR matched ID.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV4_UDP rss queues
@@ -751,11 +745,11 @@ Subcase 2: MAC_IPV4_UDP rss queues
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 4294967294 / end
2. send matched packets, check the packets is distributed to queue 0-3 with FDIR matched ID=0xfffffffe.
- send mismatched packets, check the packets are received without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packet is not received without FDIR matched ID.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV4_UDP passthru
@@ -770,7 +764,7 @@ Subcase 3: MAC_IPV4_UDP passthru
3. repeat step 3 of subcase 1.
-4. verify matched packets are distributed to the same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 4: MAC_IPV4_UDP drop
@@ -801,7 +795,7 @@ Note: This combined action is mark with RSS which is without queues specified.
3. repeat step 3 of subcase 1.
-4. verify matched packets are distributed to the same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV4_UDP mark
@@ -840,7 +834,7 @@ Subcase 1: MAC_IPV6_PAY queue index
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions queue index 1 / mark / end
2. send matched packets, check the packets is distributed to queue 1 with FDIR matched ID=0x0.
- send mismatched packets, check the packets are received without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -851,7 +845,7 @@ Subcase 1: MAC_IPV6_PAY queue index
testpmd> flow destroy 0 rule 0
-4. verify matched packet is received without FDIR matched ID.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV6_PAY rss queues
@@ -863,11 +857,11 @@ Subcase 2: MAC_IPV6_PAY rss queues
actions rss queues 56 57 58 59 60 61 62 63 end / mark / end
2. send matched packets, check the packets is distributed to queue 56-63 with FDIR matched ID=0x0.
- send mismatched packets, check the packets are not distributed to queue 56-63 with FDIR matched ID=0x0.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packet is received without FDIR matched ID=0x0.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV6_PAY passthru
@@ -882,7 +876,7 @@ Subcase 3: MAC_IPV6_PAY passthru
3. repeat step 3 of subcase 1.
-4. verify matched packets are destributed to the same queue without FDIR matched ID .
+4. verify matched packets are destributed by RSS without FDIR matched ID .
check there is no rule listed.
Subcase 4: MAC_IPV6_PAY drop
@@ -913,7 +907,7 @@ Note: This combined action is mark with RSS which is without queues specified.
3. repeat step 3 of subcase 1.
-4. verify matched packets are distributed to the same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV6_PAY mark
@@ -931,15 +925,15 @@ Subcase 7: MAC_IPV6_PAY protocal
1. create filter rules::
- flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is ABAB:910A:2222:5498:8475:1111:3900:1010 proto is 44 / end actions rss queues 5 6 end / mark id 1 / end
+ flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 44 / end actions rss queues 5 6 end / mark id 1 / end
flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 6 / end actions mark id 2 / rss / end
2. send matched packets::
pkt1 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010", nh=44, tc=1, hlim=2)/("X"*480)
- pkt2 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(1000)/("X"*480)
+ pkt2 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(b'1000')/("X"*480)
pkt3 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010", nh=44)/TCP(sport=22,dport=23)/("X"*480)
- pkt4 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(1000)/TCP(sport=22,dport=23)/("X"*480)
+ pkt4 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(b'1000')/TCP(sport=22,dport=23)/("X"*480)
pkt5 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=6)/("X"*480)
pkt6 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)
@@ -947,15 +941,14 @@ Subcase 7: MAC_IPV6_PAY protocal
check pkt5 and pkt6 are distributed by RSS with FDIR matched ID=0x2.
send mismatched packets::
- pkt7 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1011", nh=44)/("X"*480)
pkt8 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)
pkt9 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=17)/("X"*480)
- check the packets received have not FDIR matched ID.
+ check the packets are distributed by RSS have not FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets have not FDIR matched.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
@@ -970,7 +963,7 @@ Subcase 1: MAC_IPV6_UDP queue index
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end
2. send matched packets, check the packets is distributed to queue 1 with FDIR matched ID=0x0.
- send mismatched packets, check the packets are received without FDIR matched ID=0x0.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -981,7 +974,7 @@ Subcase 1: MAC_IPV6_UDP queue index
testpmd> flow destroy 0 rule 0
-4. verify matched packet is received without FDIR matched ID=0x0.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV6_UDP rss queues
@@ -989,14 +982,14 @@ Subcase 2: MAC_IPV6_UDP rss queues
1. create filter rules::
- flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / end
-2. send matched packets, check the packets is distributed by RSS.
- send mismatched packets, check the packets are distributed by RSS too.
+2. send matched packets, check the packets is distributed by RSS without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID too.
3. repeat step 3 of subcase 1.
-4. verify matched packet is destributed to the same queue.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV6_UDP passthru
@@ -1004,14 +997,14 @@ Subcase 3: MAC_IPV6_UDP passthru
1. create filter rules::
- flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions passthru / mark / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions passthru / mark / end
2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0.
send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets are destributed to the same queue without FDIR matched ID .
+4. verify matched packets are destributed by RSS without FDIR matched ID .
check there is no rule listed.
Subcase 4: MAC_IPV6_UDP drop
@@ -1019,7 +1012,7 @@ Subcase 4: MAC_IPV6_UDP drop
1. create filter rules::
- flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions drop / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions drop / end
2. send matched packets, check the packets are dropped.
send mismatched packets, check the packets are not dropped.
@@ -1035,14 +1028,14 @@ Note: This combined action is mark with RSS which is without queues specified.
1. create filter rules::
- flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions mark / rss / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions mark / rss / end
2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0
send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets are distributed to the same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV6_UDP mark
@@ -1050,7 +1043,7 @@ Subcase 6: MAC_IPV6_UDP mark
1. create filter rules::
- flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions mark / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions mark / end
2. repeat the steps of passthru in subcase 3,
get the same result.
@@ -1071,8 +1064,6 @@ Test case: MAC_IPV6_SCTP pattern
3. get the same result.
-
-
Test case: MAC_IPV4_TUN_IPV4_PAY pattern
========================================
@@ -1084,7 +1075,7 @@ Subcase 1: MAC_IPV4_TUN_IPV4_PAY queue index
flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end
2. send matched packets, check the packets are distributed to queue 1 without FDIR matched ID.
- send mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -1095,7 +1086,7 @@ Subcase 1: MAC_IPV4_TUN_IPV4_PAY queue index
testpmd> flow destroy 0 rule 0
- verify the packets hit rule are not distributed to queue 1 without FDIR matched ID.
+ verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV4_TUN_IPV4_PAY rss queues
@@ -1106,11 +1097,11 @@ Subcase 2: MAC_IPV4_TUN_IPV4_PAY rss queues
flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 end / mark / end
2. send matched packets, check the packets are distributed to queue group with FDIR matched ID=0x0.
- send mismatched packets, check the packets are received without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are received without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV4_TUN_IPV4_PAY passthru
@@ -1125,7 +1116,7 @@ Subcase 3: MAC_IPV4_TUN_IPV4_PAY passthru
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are received without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 4: MAC_IPV4_TUN_IPV4_PAY drop
@@ -1155,7 +1146,7 @@ Subcase 5: MAC_IPV4_TUN_IPV4_PAY mark/rss
3. repeat step 3 of subcase 1.
-4. verify matched packet is redirected to the same queue without FDIR matched ID.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV4_TUN_IPV4_PAY mark
@@ -1180,7 +1171,7 @@ Subcase 1: MAC_IPV4_TUN_IPV4_UDP queue index
flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end
2. send matched packets, check the packets are distributed to queue 1 with FDIR matched ID=0x1.
- send mismatched packets, check the packets are received without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -1191,7 +1182,7 @@ Subcase 1: MAC_IPV4_TUN_IPV4_UDP queue index
testpmd> flow destroy 0 rule 0
-4. verify the packets hit rule are received without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV4_TUN_IPV4_UDP rss queues
@@ -1202,11 +1193,11 @@ Subcase 2: MAC_IPV4_TUN_IPV4_UDP rss queues
flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 38 39 40 41 end / mark id 1 / end
2. send matched packets, check the packets are distributed to queue group with FDIR matched ID=0x1.
- send mismatched packets, check the packets are received without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are received without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV4_TUN_IPV4_UDP passthru
@@ -1221,7 +1212,7 @@ Subcase 3: MAC_IPV4_TUN_IPV4_UDP passthru
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are distributed to the same queue without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 4: MAC_IPV4_TUN_IPV4_UDP drop
@@ -1250,7 +1241,7 @@ Subcase 5: MAC_IPV4_TUN_IPV4_UDP mark/rss
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are distributed to the same queue without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV4_TUN_IPV4_UDP mark
@@ -1267,14 +1258,14 @@ Subcase 6: MAC_IPV4_TUN_IPV4_UDP mark
Test case: MAC_IPV4_TUN_IPV4_TCP pattern
========================================
-1. replace "udp" with "tcp" in all the subcases of MAC_IPV4_TUN_IPV4_UDP pattern.
+1. replace inner "udp" with "tcp" in all the subcases of MAC_IPV4_TUN_IPV4_UDP pattern.
2. Then repeat all the steps in all the subcases of MAC_IPV4_TUN_IPV4_UDP pattern.
3. get the same result.
Test case: MAC_IPV4_TUN_IPV4_SCTP pattern
=========================================
-1. replace "udp" with "sctp" in all the subcases of MAC_IPV4_TUN_IPV4_UDP pattern.
+1. replace inner "udp" with "sctp" in all the subcases of MAC_IPV4_TUN_IPV4_UDP pattern.
2. Then repeat all the steps in all the subcases of MAC_IPV4_TUN_IPV4_UDP pattern.
3. get the same result.
@@ -1290,7 +1281,7 @@ Subcase 1: MAC_IPV4_TUN_MAC_IPV4_PAY queue index
flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / end
2. send matched packets, check the packets are distributed to queue 0 without FDIR matched ID.
- send mismatched packets, check the packets are not distributed to queue 0 without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -1301,7 +1292,7 @@ Subcase 1: MAC_IPV4_TUN_MAC_IPV4_PAY queue index
testpmd> flow destroy 0 rule 0
-4. verify the packets hit rule are not distributed to queue 0 without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 2: MAC_IPV4_TUN_MAC_IPV4_PAY rss queues
@@ -1312,11 +1303,11 @@ Subcase 2: MAC_IPV4_TUN_MAC_IPV4_PAY rss queues
flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / end
2. send matched packets, check the packets are distributed to queue group without FDIR matched ID.
- send mismatched packets, check the packets are not distributed to queue group without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are not distributed to queue group without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 3: MAC_IPV4_TUN_MAC_IPV4_PAY passthru
@@ -1331,7 +1322,7 @@ Subcase 3: MAC_IPV4_TUN_MAC_IPV4_PAY passthru
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are distributed to same queue without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 4: MAC_IPV4_TUN_MAC_IPV4_PAY drop
@@ -1361,7 +1352,7 @@ Subcase 5: MAC_IPV4_TUN_MAC_IPV4_PAY mark/rss
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are distributed to same queue without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV4_TUN_MAC_IPV4_PAY mark
@@ -1456,7 +1447,7 @@ Subcase 5: MAC_IPV4_TUN_MAC_IPV4_UDP mark/rss
3. repeat step 3 of subcase 1.
-4. verify the packets hit rule are distributed to same queue without FDIR matched ID.
+4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV4_TUN_MAC_IPV4_UDP mark
@@ -1473,14 +1464,14 @@ Subcase 6: MAC_IPV4_TUN_MAC_IPV4_UDP mark
Test case: MAC_IPV4_TUN_MAC_IPV4_TCP pattern
============================================
-1. replace "udp" with "tcp" in all the subcases of MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
+1. replace inner "udp" with "tcp" in all the subcases of MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
2. Then repeat all the steps in all the subcases of MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
3. get the same result.
Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP pattern
=============================================
-1. replace "udp" with "sctp" in all the subcases of MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
+1. replace inner "udp" with "sctp" in all the subcases of MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
2. Then repeat all the steps in all the subcases of MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
3. get the same result.
@@ -1495,7 +1486,7 @@ Subcase 1: MAC_IPV4_GTPU_EH queue index
flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions queue index 1 / mark id 1 / end
2. send matched packets, check the packets are distributed to queue 1 with FDIR matched ID=0x1.
- send mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -1506,7 +1497,7 @@ Subcase 1: MAC_IPV4_GTPU_EH queue index
testpmd> flow destroy 0 rule 0
-4. verify matched packets are not distributed to queue 1 without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 2: MAC_IPV4_GTPU_EH queue group
@@ -1517,11 +1508,11 @@ Subcase 2: MAC_IPV4_GTPU_EH queue group
flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions rss queues 0 1 2 3 end / mark id 1 / end
2. send matched packets, check the packets are distributed to queue group with FDIR matched ID=0x1.
- send mismatched packets, check the packets are not distributed to queue group without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets are not distributed to queue group without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 3: MAC_IPV4_GTPU_EH passthru
@@ -1536,7 +1527,7 @@ Subcase 3: MAC_IPV4_GTPU_EH passthru
3. repeat step 3 of subcase 1.
-4. verify matched packets are redirected to the same queue without FDIR ID.
+4. verify matched packets are distributed by RSS without FDIR ID.
check there is no rule listed.
Subcase 4: MAC_IPV4_GTPU_EH drop
@@ -1566,7 +1557,7 @@ Subcase 5: MAC_IPV4_GTPU_EH mark/rss
3. repeat step 3 of subcase 1.
-4. verify matched packets are redirected to the same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
check there is no rule listed.
Subcase 6: MAC_IPV4_GTPU_EH mark
@@ -1590,13 +1581,13 @@ Subcase 7: MAC_IPV4_GTPU_EH QFI queue index / mark
p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/TCP()/Raw('x'*20)
- send mismatched packets, check the packet received has not FDIR::
+ send mismatched packets, check the packet is distributed by RSS without FDIR matched ID::
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw('x'*20)
3. repeat step 3 of subcase 1.
-4. verify matched packet received has not FDIR.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 8: MAC_IPV4_GTPU_EH without QFI rss queues / mark
@@ -1610,13 +1601,13 @@ Subcase 8: MAC_IPV4_GTPU_EH without QFI rss queues / mark
p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP()/Raw('x'*20)
- send mismatched packets, check the packet received has no FDIR::
+ send mismatched packets, check the packet are distributed by RSS without FDIR matched ID::
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP()/Raw('x'*20)
3. repeat step 3 of subcase 1.
-4. verify matched packet received has not FDIR.
+4. verify matched packet is distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Test case: MAC_IPV4_GTPU pattern
@@ -1630,7 +1621,7 @@ Subcase 1: MAC_IPV4_GTPU queue index
flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions queue index 1 / mark / end
2. send matched packets, check the packets are distributed to queue 1 with FDIR matched ID=0x0.
- send mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. verify rules can be listed and destroyed::
@@ -1641,7 +1632,7 @@ Subcase 1: MAC_IPV4_GTPU queue index
testpmd> flow destroy 0 rule 0
-4. verify matched packets are not distributed to queue 1 without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 2: MAC_IPV4_GTPU queue group
@@ -1652,11 +1643,11 @@ Subcase 2: MAC_IPV4_GTPU queue group
flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions rss queues 0 1 end / mark / end
2. send matched packets, check the packets are distributed to queue group with FDIR matched ID=0x0.
- send mismatched packets, check the packets are not distributed to queue group without FDIR matched ID.
+ send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.
3. repeat step 3 of subcase 1.
-4. verify matched packets are not distributed to queue group without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 3: MAC_IPV4_GTPU passthru
@@ -1671,7 +1662,7 @@ Subcase 3: MAC_IPV4_GTPU passthru
3. repeat step 3 of subcase 1.
-4. verify matched packets are distributed to same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 4: MAC_IPV4_GTPU drop
@@ -1701,7 +1692,7 @@ Subcase 5: MAC_IPV4_GTPU mark/rss
3. repeat step 3 of subcase 1.
-4. verify matched packets are distributed to same queue without FDIR matched ID.
+4. verify matched packets are distributed by RSS without FDIR matched ID.
Then check there is no rule listed.
Subcase 6: MAC_IPV4_GTPU mark
@@ -1717,6 +1708,7 @@ Subcase 6: MAC_IPV4_GTPU mark
Test case: negative cases
=========================
+Note: the error message may be changed.
Subcase 1: invalid parameters of queue index
--------------------------------------------
@@ -1823,14 +1815,19 @@ Subcase 6: conflicted rules
the rule is created successfully.
-2. Create a rule with same input set but different action::
+2. Create a rule with same input set but different action or with different input set::
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 2 / end
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions drop / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 3 / mark / end
+ flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 3 / mark / end
Failed to create the two flows, report message::
+ first two rules:
Rule already exists!: File exists
+ last two rules:
+ Invalid input action number: Invalid argument
3. check there is only one rule listed.
@@ -1860,20 +1857,7 @@ Subcase 8: void action
2. check there is no rule listed.
-Subcase 9: unsupported action
------------------------------
-
-1. Create a rule with count action only::
-
- flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions count / end
-
- Failed to create flow, report message::
-
- Invalid input action: Invalid argument
-
-2. check there is no rule listed.
-
-Subcase 10: delete a non-existent rule
+Subcase 9: delete a non-existent rule
--------------------------------------
1. show the rule list of port 0::
@@ -1898,7 +1882,7 @@ Subcase 10: delete a non-existent rule
5. check there is no rule listed.
-Subcase 11: unsupported input set field
+Subcase 10: unsupported input set field
---------------------------------------
1. Create a IPV4_PAY rule with TC input set::
@@ -1911,7 +1895,7 @@ Subcase 11: unsupported input set field
2. check there is no rule listed.
-Subcase 12: invalid port
+Subcase 11: invalid port
------------------------
1. Create a rule on port 2::
@@ -1927,7 +1911,7 @@ Subcase 12: invalid port
testpmd> flow list 2
Invalid port 2
-Subcase 13: unsupported pattern
+Subcase 12: unsupported pattern
-------------------------------
1. Create a GTPU rule with OS default package::
@@ -1938,7 +1922,7 @@ Subcase 13: unsupported pattern
2. check there is no rule listed.
-Subcase 14: conflict patterns
+Subcase 13: conflict patterns
-----------------------------
Note: MAC_IPV4_UDP packet can match MAC_IPV4_PAY rule if ip address can match.
@@ -1986,14 +1970,17 @@ set "--log-level=ice,7", then check::
Test case: count/query
======================
-Subcase 1: count for 1 rule of 1 port
--------------------------------------
+Subcase 1: count for 1 rule
+---------------------------
1. create filter rules::
flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / count / end
+ flow create 1 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end
-2. send matched packets, check the packets are redirected to queue 1.
+2. send matched packets to port0 and port1,
+ the packets received by port0 are redirected to queue 1.
+ the packets received by port1 are distributed by RSS.
send mismatched packets, check the packets are redirected by RSS.
check the count number::
@@ -2004,14 +1991,23 @@ Subcase 1: count for 1 rule of 1 port
hits: 2
bytes: 0
+ flow query 1 0 count
+ COUNT:
+ hits_set: 1
+ bytes_set: 0
+ hits: 2
+ bytes: 0
+
3. verify rules can be listed and destroyed::
testpmd> flow list 0
+ testpmd> flow list 1
check the existing rule.
destroy the rule::
testpmd> flow destroy 0 rule 0
+ testpmd> flow destroy 1 rule 0
verify matched packets are redirected by RSS.
check there is no rule listed.
@@ -2020,6 +2016,8 @@ Subcase 1: count for 1 rule of 1 port
testpmd> flow query 0 0 count
Flow rule #0 not found
+ testpmd> flow query 1 0 count
+ Flow rule #0 not found
Subcase 2: count query identifier share
---------------------------------------
@@ -2192,7 +2190,7 @@ Subcase 3: multi patterns mark count query
bytes_set: 0
hits: 10
bytes: 0
- testpmd> flow query 0 7 count
+ testpmd> flow query 1 0 count
COUNT:
hits_set: 1
bytes_set: 0
@@ -2470,7 +2468,7 @@ Subcase 2: add/delete rules
1. create two rules::
- flow create 0 ingress pattern eth / ipv4 proto is 255 / end actions queue index 1 / mark / end
+ flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end
flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark id 1 / end
return the message::
@@ -2482,7 +2480,7 @@ Subcase 2: add/delete rules
testpmd> flow list 0
ID Group Prio Attr Rule
- 0 0 0 i-- ETH IPV4 => QUEUE MARK
+ 0 0 0 i-- ETH IPV4 UDP => QUEUE MARK
1 0 0 i-- ETH IPV4 TCP => RSS MARK
2. delete the rules::
@@ -2495,7 +2493,7 @@ Subcase 2: add/delete rules
5. send matched packet::
- sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255)/Raw('x' * 80)],iface="enp175s0f0")
+ sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp175s0f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp175s0f0")
check packet 1 is redirected to queue 1 with FDIR matched ID=0x0
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dts] [PATCH V2 2/3]tests/TestSuite_cvl_fdir: update cvl fdir script
2020-06-02 6:37 [dts] [PATCH V2 0/3] update cvl fdir related scripts Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 1/3]test_plans/cvl_fdir_test_plan: update cvl fdir testplan Xiao Qimai
@ 2020-06-02 6:37 ` Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 3/3]tests/rte_flow_common: update rte_flow_common for cvl fdir Xiao Qimai
2020-06-03 2:29 ` [dts] [PATCH V2 0/3] update cvl fdir related scripts Tu, Lijuan
3 siblings, 0 replies; 5+ messages in thread
From: Xiao Qimai @ 2020-06-02 6:37 UTC (permalink / raw)
To: dts; +Cc: Xiao Qimai
Signed-off-by: Xiao Qimai <qimaix.xiao@intel.com>
---
tests/TestSuite_cvl_fdir.py | 2469 ++++++++++++++++++++++++++++---------------
1 file changed, 1591 insertions(+), 878 deletions(-)
diff --git a/tests/TestSuite_cvl_fdir.py b/tests/TestSuite_cvl_fdir.py
index a8e3ef8..70aa5e3 100644
--- a/tests/TestSuite_cvl_fdir.py
+++ b/tests/TestSuite_cvl_fdir.py
@@ -32,6 +32,8 @@
import re
import time
+import copy
+import os
from packet import Packet
from pmd_output import PmdOutput
@@ -45,7 +47,7 @@ MAC_IPV4_PAY = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255, ttl=2, tos=4) / Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1, proto=255, ttl=2, tos=4)/Raw("x" * 80)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IP(src="192.168.0.20",dst="192.168.0.22", proto=255, ttl=2, tos=4) / Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.22",dst="192.168.0.21", proto=255, ttl=2, tos=4) / Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.1.21", proto=255, ttl=2, tos=4) / Raw("x" * 80)',
@@ -57,17 +59,24 @@ MAC_IPV4_PAY = {
MAC_IPV4_PAY_SELECTED = {
"match": [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=1) / Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)'],
- "unmatch": [
- 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22") / Raw("x" * 80)'
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=1)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1, proto=1)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1, ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=17, ttl=2, tos=4)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1, proto=17, ttl=2, tos=4)/Raw("x" * 80)'],
+ "unmatched": [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22", proto=1)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=6)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1)/TCP(sport=22,dport=23)/Raw("x" * 80)'
]
}
MAC_IPV4_UDP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.19",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)',
@@ -81,7 +90,7 @@ MAC_IPV4_UDP = {
MAC_IPV4_TCP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw("x" * 80)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.19",dst="192.168.0.21", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw("x" * 80)',
@@ -95,7 +104,7 @@ MAC_IPV4_TCP = {
MAC_IPV4_SCTP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw("x" * 80)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.19",dst="192.168.0.21", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw("x" * 80)',
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw("x" * 80)',
@@ -108,29 +117,33 @@ MAC_IPV4_SCTP = {
MAC_IPV6_PAY = {
"match": [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=1, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=1, hlim=2)/IPv6ExtHdrFragment(1000)/("X"*480)'],
- "unmatch": [
- 'Ether(dst="00:11:22:33:44:56")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=1, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2022", src="2001::2", nh=1, tc=1, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::1", nh=1, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)'],
+ "unmatched": [
+ 'Ether(dst="00:11:22:33:44:56")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2022", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::1", nh=0, tc=1, hlim=2)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=2, tc=1, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=2, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=1, hlim=5)/("X"*480)']
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=2, hlim=2)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=5)/("X"*480)']
}
MAC_IPV6_PAY_SELECTED = {
"match": [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=1, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment(1000)/("X"*480)'],
- "unmatch": [
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/("X"*480)']
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=44, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment(id=1000)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=44)/TCP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrFragment(id=1000)/TCP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=6)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)'],
+ "unmatched": ['Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", nh=44)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=17)/("X"*480)']
}
MAC_IPV6_UDP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="2001::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2002::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)',
@@ -144,7 +157,7 @@ MAC_IPV6_UDP = {
MAC_IPV6_TCP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/TCP(sport=22,dport=23)/("X"*480)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="2001::2",tc=1, hlim=2)/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2002::2",tc=1, hlim=2)/TCP(sport=22,dport=23)/("X"*480)',
@@ -158,7 +171,7 @@ MAC_IPV6_TCP = {
MAC_IPV6_SCTP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:56")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="2001::2",tc=1, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2002::2",tc=1, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)',
@@ -178,7 +191,7 @@ MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY = {
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", src="192.168.0.20")/("X"*480)'
],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.22")',
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.30", dst="192.168.0.21")',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN()/IP(dst="192.168.0.21", src="192.168.0.20")/("X"*480)']
@@ -190,7 +203,7 @@ MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP = {
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/Ether()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", src="192.168.0.20")/UDP(sport=22,dport=23)/("X"*480)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.22")/UDP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.23")/UDP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=21,dport=23)/("X"*480)',
@@ -206,7 +219,7 @@ MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP = {
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/Ether()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", src="192.168.0.20")/TCP(sport=22,dport=23)/("X"*480)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.22")/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", src="192.168.0.23")/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=21,dport=23)/("X"*480)',
@@ -221,7 +234,7 @@ MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP = {
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/Ether()/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", src="192.168.0.20")/SCTP(sport=22,dport=23)/("X"*480)'],
- "unmatch": [
+ "unmatched": [
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.1.15")/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.22")/SCTP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", src="192.168.0.23")/SCTP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=200, dport=4790)/VXLAN(flags=0xc)/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP(sport=21,dport=23)/("X"*480)',
@@ -230,657 +243,1007 @@ MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP = {
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN()/IP(dst="192.168.0.21", src="192.168.0.20")/SCTP(sport=22,dport=23)/("X"*480)']
}
-MAC_IPV4_GTPU_IPV4_PAY = {
+MAC_IPV4_GTPU_EH = {
+ "match": [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP(frag=1)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/UDP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/ICMP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/IPv6ExtHdrFragment(id=1000)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/UDP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/ICMP()/Raw("x"*20)'],
+ "unmatched": [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/SCTP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/SCTP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/Raw("x"*20)']
+}
+
+MAC_IPV4_GTPU = {
"match": [
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP(frag=1)/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/UDP()/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/ICMP()/Raw("x"*20)'],
- "unmatch": [
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/SCTP()/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)',
- 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/Raw("x"*20)']
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP(frag=1)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/UDP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/TCP(sport=22, dport=23)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/ICMP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/IPv6ExtHdrFragment(id=1000)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/UDP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/TCP(sport=22, dport=23)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/ICMP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)'],
+ "unmatched": [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/SCTP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/SCTP()/Raw("x"*20)',
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/IP()/Raw("x"*20)']
}
tv_mac_ipv4_pay_queue_index = {
"name": "test_mac_ipv4_pay_queue_index",
"rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end",
"scapy_str": MAC_IPV4_PAY,
- "check_func": rfc.check_queue,
+ "check_func": rfc.check_mark,
"check_param": {"port_id": 0, "queue": 1}
}
-tv_mac_ipv4_pay_selected_inputset_queue_index = {
- "name": "test_mac_ipv4_pay_selected_inputset_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_PAY_SELECTED,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_pay_rss_queues = {
+ "name": "test_mac_ipv4_pay_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / end",
+ "scapy_str": MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [2, 3]}
}
-tv_mac_ipv4_udp_queue_index = {
- "name": "test_mac_ipv4_upd_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_pay_passthru = {
+ "name": "test_mac_ipv4_pay_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / end",
+ "scapy_str": MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True}
}
-tv_mac_ipv4_tcp_queue_index = {
- "name": "test_mac_ipv4_tcp_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 63 / end",
- "scapy_str": MAC_IPV4_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 63}
+tv_mac_ipv4_pay_drop = {
+ "name": "test_mac_ipv4_pay_drop",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop / end",
+ "scapy_str": MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_sctp_queue_index = {
- "name": "test_mac_ipv4_sctp_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1 / end actions queue index 2 / end",
- "scapy_str": MAC_IPV4_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 2}
+tv_mac_ipv4_pay_mark_rss = {
+ "name": "test_mac_ipv4_pay_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
}
-tv_mac_ipv6_pay_queue_index = {
- "name": "test_mac_ipv6_pay_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2 tc is 1 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV6_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_pay_mark = {
+ "name": "test_mac_ipv4_pay_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv6_pay_selected_inputset_queue_index = {
- "name": "test_mac_ipv6_pay_selected_inputset_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV6_PAY_SELECTED,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+vectors_ipv4_pay = [tv_mac_ipv4_pay_queue_index, tv_mac_ipv4_pay_rss_queues, tv_mac_ipv4_pay_passthru,
+ tv_mac_ipv4_pay_drop, tv_mac_ipv4_pay_mark_rss, tv_mac_ipv4_pay_mark]
+
+tv_mac_ipv4_udp_queue_index = {
+ "name": "test_mac_ipv4_udp_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 63 / mark id 0 / end",
+ "scapy_str": MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 63, "mark_id": 0}
}
-tv_mac_ipv6_udp_queue_index = {
- "name": "test_mac_ipv6_udp_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV6_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_udp_rss_queues = {
+ "name": "test_mac_ipv4_udp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 4294967294 / end",
+ "scapy_str": MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [0, 1, 2, 3], "mark_id": 4294967294}
}
-tv_mac_ipv6_tcp_queue_index = {
- "name": "test_mac_ipv6_tcp_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV6_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_udp_passthru = {
+ "name": "test_mac_ipv4_udp_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv6_sctp_queue_index = {
- "name": "test_mac_ipv6_sctp_queue_index",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV6_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_udp_drop = {
+ "name": "test_mac_ipv4_udp_drop",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions drop / end",
+ "scapy_str": MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_tun_ipv4_pay_queue_index = {
- "name": "test_mac_ipv4_tun_ipv4_pay_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_udp_mark_rss = {
+ "name": "test_mac_ipv4_udp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions mark id 2 / rss / end",
+ "scapy_str": MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 2, "rss": True}
}
-tv_mac_ipv4_tun_ipv4_udp_queue_index = {
- "name": "test_mac_ipv4_tun_ipv4_udp_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_udp_mark = {
+ "name": "test_mac_ipv4_udp_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1}
}
-tv_mac_ipv4_tun_ipv4_tcp_queue_index = {
- "name": "test_mac_ipv4_tun_ipv4_tcp_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+vectors_ipv4_udp = [tv_mac_ipv4_udp_queue_index, tv_mac_ipv4_udp_rss_queues, tv_mac_ipv4_udp_passthru,
+ tv_mac_ipv4_udp_drop, tv_mac_ipv4_udp_mark_rss, tv_mac_ipv4_udp_mark]
+
+tv_mac_ipv4_tcp_queue_index = {
+ "name": "test_mac_ipv4_tcp_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 63 / mark id 0 / end",
+ "scapy_str": MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 63, "mark_id": 0}
}
-tv_mac_ipv4_tun_ipv4_sctp_queue_index = {
- "name": "test_mac_ipv4_tun_ipv4_sctp_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_tcp_rss_queues = {
+ "name": "test_mac_ipv4_tcp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 4294967294 / end",
+ "scapy_str": MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [0, 1, 2, 3], "mark_id": 4294967294}
}
-tv_mac_ipv4_tun_mac_ipv4_pay_queue_index = {
- "name": "test_mac_ipv4_tun_mac_ipv4_pay_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_tcp_passthru = {
+ "name": "test_mac_ipv4_tcp_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_udp_queue_index = {
- "name": "test_mac_ipv4_tun_mac_ipv4_udp_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_tcp_drop = {
+ "name": "test_mac_ipv4_tcp_drop",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions drop / end",
+ "scapy_str": MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_tun_mac_ipv4_tcp_queue_index = {
- "name": "test_mac_ipv4_tun_mac_ipv4_tcp_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_tcp_mark_rss = {
+ "name": "test_mac_ipv4_tcp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions mark id 2 / rss / end",
+ "scapy_str": MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 2, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_sctp_queue_index = {
- "name": "test_mac_ipv4_tun_mac_ipv4_sctp_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_tcp_mark = {
+ "name": "test_mac_ipv4_tcp_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1}
}
-tv_mac_ipv4_pay_drop = {
- "name": "test_mac_ipv4_pay_drop",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop / end",
- "scapy_str": MAC_IPV4_PAY,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+#vectors_ipv4_tcp = [tv_mac_ipv4_tcp_queue_index, tv_mac_ipv4_tcp_rss_queues, tv_mac_ipv4_tcp_passthru,
+# tv_mac_ipv4_tcp_drop, tv_mac_ipv4_tcp_mark_rss, tv_mac_ipv4_tcp_mark]
+vectors_ipv4_tcp = [tv_mac_ipv4_tcp_mark_rss]
+
+tv_mac_ipv4_sctp_queue_index = {
+ "name": "test_mac_ipv4_sctp_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions queue index 63 / mark id 0 / end",
+ "scapy_str": MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 63, "mark_id": 0}
}
-tv_mac_ipv4_udp_drop = {
- "name": "test_mac_ipv4_udp_drop",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions drop / end",
- "scapy_str": MAC_IPV4_UDP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+tv_mac_ipv4_sctp_rss_queues = {
+ "name": "test_mac_ipv4_sctp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 4294967294 / end",
+ "scapy_str": MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [0, 1, 2, 3], "mark_id": 4294967294}
}
-tv_mac_ipv4_tcp_drop = {
- "name": "test_mac_ipv4_tcp_drop",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions drop / end",
- "scapy_str": MAC_IPV4_TCP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+tv_mac_ipv4_sctp_passthru = {
+ "name": "test_mac_ipv4_sctp_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
tv_mac_ipv4_sctp_drop = {
"name": "test_mac_ipv4_sctp_drop",
"rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions drop / end",
"scapy_str": MAC_IPV4_SCTP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv4_sctp_mark_rss = {
+ "name": "test_mac_ipv4_sctp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions mark id 2 / rss / end",
+ "scapy_str": MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 2, "rss": True}
+}
+
+tv_mac_ipv4_sctp_mark = {
+ "name": "test_mac_ipv4_sctp_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1}
+}
+
+vectors_ipv4_sctp = [tv_mac_ipv4_sctp_queue_index, tv_mac_ipv4_sctp_rss_queues, tv_mac_ipv4_sctp_passthru,
+ tv_mac_ipv4_sctp_drop, tv_mac_ipv4_sctp_mark_rss, tv_mac_ipv4_sctp_mark]
+
+tv_mac_ipv6_pay_queue_index = {
+ "name": "test_mac_ipv6_pay_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions queue index 1 / mark / end",
+ "scapy_str": MAC_IPV6_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}
+}
+
+tv_mac_ipv6_pay_rss_queues = {
+ "name": "test_mac_ipv6_pay_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions rss queues 56 57 58 59 60 61 62 63 end / mark / end",
+ "scapy_str": MAC_IPV6_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": list(range(56, 64)), "mark_id": 0}
+}
+
+tv_mac_ipv6_pay_passthru = {
+ "name": "test_mac_ipv6_pay_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV6_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True, "mark_id": 0}
}
tv_mac_ipv6_pay_drop = {
"name": "test_mac_ipv6_pay_drop",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2 tc is 1 / end actions drop / end",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / end",
+ "scapy_str": MAC_IPV6_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv6_pay_mark_rss = {
+ "name": "test_mac_ipv6_pay_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV6_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+tv_mac_ipv6_pay_mark = {
+ "name": "test_mac_ipv6_pay_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / end",
"scapy_str": MAC_IPV6_PAY,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+vectors_ipv6_pay = [tv_mac_ipv6_pay_queue_index, tv_mac_ipv6_pay_rss_queues, tv_mac_ipv6_pay_passthru,
+ tv_mac_ipv6_pay_drop, tv_mac_ipv6_pay_mark_rss, tv_mac_ipv6_pay_mark]
+
+tv_mac_ipv6_udp_queue_index = {
+ "name": "test_mac_ipv6_udp_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end",
+ "scapy_str": MAC_IPV6_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}
+}
+
+tv_mac_ipv6_udp_rss_queues = {
+ "name": "test_mac_ipv6_udp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss / end",
+ "scapy_str": MAC_IPV6_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True}
+}
+
+tv_mac_ipv6_udp_passthru = {
+ "name": "test_mac_ipv6_udp_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV6_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
}
tv_mac_ipv6_udp_drop = {
"name": "test_mac_ipv6_udp_drop",
"rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions drop / end",
"scapy_str": MAC_IPV6_UDP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv6_udp_mark_rss = {
+ "name": "test_mac_ipv6_udp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV6_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+tv_mac_ipv6_udp_mark = {
+ "name": "test_mac_ipv6_udp_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions mark / end",
+ "scapy_str": MAC_IPV6_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+vectors_ipv6_udp = [tv_mac_ipv6_udp_queue_index, tv_mac_ipv6_udp_rss_queues, tv_mac_ipv6_udp_passthru,
+ tv_mac_ipv6_udp_drop, tv_mac_ipv6_udp_mark_rss, tv_mac_ipv6_udp_mark]
+
+tv_mac_ipv6_tcp_queue_index = {
+ "name": "test_mac_ipv6_tcp_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end",
+ "scapy_str": MAC_IPV6_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}
+}
+
+tv_mac_ipv6_tcp_rss_queues = {
+ "name": "test_mac_ipv6_tcp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions rss / end",
+ "scapy_str": MAC_IPV6_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True}
}
+
+tv_mac_ipv6_tcp_passthru = {
+ "name": "test_mac_ipv6_tcp_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV6_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
tv_mac_ipv6_tcp_drop = {
"name": "test_mac_ipv6_tcp_drop",
"rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions drop / end",
"scapy_str": MAC_IPV6_TCP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv6_tcp_mark_rss = {
+ "name": "test_mac_ipv6_tcp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV6_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+tv_mac_ipv6_tcp_mark = {
+ "name": "test_mac_ipv6_tcp_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions mark / end",
+ "scapy_str": MAC_IPV6_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+vectors_ipv6_tcp = [tv_mac_ipv6_tcp_queue_index, tv_mac_ipv6_tcp_rss_queues, tv_mac_ipv6_tcp_passthru,
+ tv_mac_ipv6_tcp_drop, tv_mac_ipv6_tcp_mark_rss, tv_mac_ipv6_tcp_mark]
+
+tv_mac_ipv6_sctp_queue_index = {
+ "name": "test_mac_ipv6_sctp_queue_index",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions queue index 1 / mark / end",
+ "scapy_str": MAC_IPV6_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 0}
+}
+
+tv_mac_ipv6_sctp_rss_queues = {
+ "name": "test_mac_ipv6_sctp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss / end",
+ "scapy_str": MAC_IPV6_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True}
+}
+
+tv_mac_ipv6_sctp_passthru = {
+ "name": "test_mac_ipv6_sctp_passthru",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV6_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
}
tv_mac_ipv6_sctp_drop = {
"name": "test_mac_ipv6_sctp_drop",
"rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions drop / end",
"scapy_str": MAC_IPV6_SCTP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv6_sctp_mark_rss = {
+ "name": "test_mac_ipv6_sctp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV6_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+tv_mac_ipv6_sctp_mark = {
+ "name": "test_mac_ipv6_sctp_mark",
+ "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions mark / end",
+ "scapy_str": MAC_IPV6_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+vectors_ipv6_sctp = [tv_mac_ipv6_sctp_queue_index, tv_mac_ipv6_sctp_rss_queues, tv_mac_ipv6_sctp_passthru,
+ tv_mac_ipv6_sctp_drop, tv_mac_ipv6_sctp_mark_rss, tv_mac_ipv6_sctp_mark]
+
+tv_mac_ipv4_tun_ipv4_pay_queue_index = {
+ "name": "test_mac_ipv4_tun_ipv4_pay_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1}
+}
+
+tv_mac_ipv4_tun_ipv4_pay_rss_queues = {
+ "name": "test_mac_ipv4_tun_ipv4_pay_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 end / mark / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": list(range(9, 25)), "mark_id": 0}
+}
+
+tv_mac_ipv4_tun_ipv4_pay_passthru = {
+ "name": "test_mac_ipv4_tun_ipv4_pay_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
}
tv_mac_ipv4_tun_ipv4_pay_drop = {
"name": "test_mac_ipv4_tun_ipv4_pay_drop",
"rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
"scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv4_tun_ipv4_pay_mark_rss = {
+ "name": "test_mac_ipv4_tun_ipv4_pay_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+tv_mac_ipv4_tun_ipv4_pay_mark = {
+ "name": "test_mac_ipv4_tun_ipv4_pay_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
+
+vectors_ipv4_tun_ipv4_pay = [tv_mac_ipv4_tun_ipv4_pay_queue_index, tv_mac_ipv4_tun_ipv4_pay_rss_queues,
+ tv_mac_ipv4_tun_ipv4_pay_passthru, tv_mac_ipv4_tun_ipv4_pay_drop,
+ tv_mac_ipv4_tun_ipv4_pay_mark_rss, tv_mac_ipv4_tun_ipv4_pay_mark]
+
+tv_mac_ipv4_tun_ipv4_udp_queue_index = {
+ "name": "test_mac_ipv4_tun_ipv4_udp_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_tun_ipv4_udp_rss_queues = {
+ "name": "test_mac_ipv4_tun_ipv4_udp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 38 39 40 41 end / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": list(range(38, 42)), "mark_id": 1}
+}
+
+tv_mac_ipv4_tun_ipv4_udp_passthru = {
+ "name": "test_mac_ipv4_tun_ipv4_udp_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
tv_mac_ipv4_tun_ipv4_udp_drop = {
"name": "test_mac_ipv4_tun_ipv4_udp_drop",
"rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end",
"scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
+}
+
+tv_mac_ipv4_tun_ipv4_udp_mark_rss = {
+ "name": "test_mac_ipv4_tun_ipv4_udp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id 1 / rss / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
+}
+
+tv_mac_ipv4_tun_ipv4_udp_mark = {
+ "name": "test_mac_ipv4_tun_ipv4_udp_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
+}
+
+vectors_ipv4_tun_ipv4_udp = [tv_mac_ipv4_tun_ipv4_udp_queue_index, tv_mac_ipv4_tun_ipv4_udp_rss_queues,
+ tv_mac_ipv4_tun_ipv4_udp_passthru, tv_mac_ipv4_tun_ipv4_udp_drop,
+ tv_mac_ipv4_tun_ipv4_udp_mark_rss, tv_mac_ipv4_tun_ipv4_udp_mark]
+
+tv_mac_ipv4_tun_ipv4_tcp_queue_index = {
+ "name": "test_mac_ipv4_tun_ipv4_tcp_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 1}
+}
+
+tv_mac_ipv4_tun_ipv4_tcp_rss_queues = {
+ "name": "test_mac_ipv4_tun_ipv4_tcp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 38 39 40 41 end / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": list(range(38, 42)), "mark_id": 1}
+}
+
+tv_mac_ipv4_tun_ipv4_tcp_passthru = {
+ "name": "test_mac_ipv4_tun_ipv4_tcp_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
tv_mac_ipv4_tun_ipv4_tcp_drop = {
"name": "test_mac_ipv4_tun_ipv4_tcp_drop",
"rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end",
"scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_tun_ipv4_sctp_drop = {
- "name": "test_mac_ipv4_tun_ipv4_sctp_drop",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+tv_mac_ipv4_tun_ipv4_tcp_mark_rss = {
+ "name": "test_mac_ipv4_tun_ipv4_tcp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions mark id 1 / rss / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_pay_drop = {
- "name": "test_mac_ipv4_tun_mac_ipv4_pay_drop",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+tv_mac_ipv4_tun_ipv4_tcp_mark = {
+ "name": "test_mac_ipv4_tun_ipv4_tcp_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_udp_drop = {
- "name": "test_mac_ipv4_tun_mac_ipv4_udp_drop",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+vectors_ipv4_tun_ipv4_tcp = [tv_mac_ipv4_tun_ipv4_tcp_queue_index, tv_mac_ipv4_tun_ipv4_tcp_rss_queues,
+ tv_mac_ipv4_tun_ipv4_tcp_passthru, tv_mac_ipv4_tun_ipv4_tcp_drop,
+ tv_mac_ipv4_tun_ipv4_tcp_mark_rss, tv_mac_ipv4_tun_ipv4_tcp_mark]
+
+tv_mac_ipv4_tun_ipv4_sctp_queue_index = {
+ "name": "test_mac_ipv4_tun_ipv4_sctp_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 1}
}
-tv_mac_ipv4_tun_mac_ipv4_tcp_drop = {
- "name": "test_mac_ipv4_tun_mac_ipv4_tcp_drop",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+tv_mac_ipv4_tun_ipv4_sctp_rss_queues = {
+ "name": "test_mac_ipv4_tun_ipv4_sctp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 38 39 40 41 end / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": list(range(38, 42)), "mark_id": 1}
}
-tv_mac_ipv4_tun_mac_ipv4_sctp_drop = {
- "name": "test_mac_ipv4_tun_mac_ipv4_sctp_drop",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop / end",
+tv_mac_ipv4_tun_ipv4_sctp_passthru = {
+ "name": "test_mac_ipv4_tun_ipv4_sctp_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
"scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_pay_queue_group = {
- "name": "test_mac_ipv4_pay_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 1 end / end",
- "scapy_str": MAC_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [0, 1]}
+tv_mac_ipv4_tun_ipv4_sctp_drop = {
+ "name": "test_mac_ipv4_tun_ipv4_sctp_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_udp_queue_group = {
- "name": "test_mac_ipv4_udp_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions rss queues 1 2 3 4 end / end",
- "scapy_str": MAC_IPV4_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2, 3, 4]}
+tv_mac_ipv4_tun_ipv4_sctp_mark_rss = {
+ "name": "test_mac_ipv4_tun_ipv4_sctp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions mark id 1 / rss / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tcp_queue_group = {
- "name": "test_mac_ipv4_tcp_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions rss queues 56 57 58 59 60 61 62 63 end / end",
- "scapy_str": MAC_IPV4_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": list(range(56, 64))}
+tv_mac_ipv4_tun_ipv4_sctp_mark = {
+ "name": "test_mac_ipv4_tun_ipv4_sctp_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_sctp_queue_group = {
- "name": "test_mac_ipv4_sctp_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1 / end actions rss queues 0 1 2 3 end / end",
- "scapy_str": MAC_IPV4_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": list(range(4))}
+vectors_ipv4_tun_ipv4_sctp = [tv_mac_ipv4_tun_ipv4_sctp_queue_index, tv_mac_ipv4_tun_ipv4_sctp_rss_queues,
+ tv_mac_ipv4_tun_ipv4_sctp_passthru, tv_mac_ipv4_tun_ipv4_sctp_drop,
+ tv_mac_ipv4_tun_ipv4_sctp_mark_rss, tv_mac_ipv4_tun_ipv4_sctp_mark]
+
+tv_mac_ipv4_tun_mac_ipv4_pay_queue_index = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_pay_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 0}
}
-tv_mac_ipv6_pay_queue_group = {
- "name": "test_mac_ipv6_pay_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2 tc is 1 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV6_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_pay_rss_queues = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_pay_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [0, 1]}
}
-tv_mac_ipv6_udp_queue_group = {
- "name": "test_mac_ipv6_udp_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV6_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_pay_passthru = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_pay_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True}
}
-tv_mac_ipv6_tcp_queue_group = {
- "name": "test_mac_ipv6_tcp_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV6_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_pay_drop = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_pay_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv6_sctp_queue_group = {
- "name": "test_mac_ipv6_sctp_queue_group",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV6_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_pay_mark_rss = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_pay_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
}
-tv_mac_ipv4_tun_ipv4_pay_queue_group = {
- "name": "test_mac_ipv4_tun_ipv4_pay_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 end / end",
+tv_mac_ipv4_tun_mac_ipv4_pay_mark = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_pay_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark / end",
"scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": list(range(9, 25))}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "rss": True, "mark_id": 0}
+}
+
+vectors_mac_ipv4_tun_mac_ipv4_pay = [tv_mac_ipv4_tun_mac_ipv4_pay_queue_index, tv_mac_ipv4_tun_mac_ipv4_pay_rss_queues,
+ tv_mac_ipv4_tun_mac_ipv4_pay_passthru, tv_mac_ipv4_tun_mac_ipv4_pay_drop,
+ tv_mac_ipv4_tun_mac_ipv4_pay_mark_rss, tv_mac_ipv4_tun_mac_ipv4_pay_mark]
+
+tv_mac_ipv4_tun_mac_ipv4_udp_queue_index = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_udp_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 15 / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 15, "mark_id": 1}
}
-tv_mac_ipv4_tun_ipv4_udp_queue_group = {
- "name": "test_mac_ipv4_tun_ipv4_udp_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 38 39 40 41 end / end",
+tv_mac_ipv4_tun_mac_ipv4_udp_rss_queues = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_udp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
"scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [38, 39, 40, 41]}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [0, 1, 2, 3], "mark_id": 1}
}
-tv_mac_ipv4_tun_ipv4_tcp_queue_group = {
- "name": "test_mac_ipv4_tun_ipv4_tcp_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_udp_passthru = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_udp_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_ipv4_sctp_queue_group = {
- "name": "test_mac_ipv4_tun_ipv4_sctp_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_udp_drop = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_udp_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_tun_mac_ipv4_pay_queue_group = {
- "name": "test_mac_ipv4_tun_mac_ipv4_pay_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_udp_mark_rss = {
+ "name": "tv_mac_ipv4_tun_mac_ipv4_udp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_udp_queue_group = {
- "name": "test_mac_ipv4_tun_mac_ipv4_udp_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
+tv_mac_ipv4_tun_mac_ipv4_udp_mark = {
+ "name": "tv_mac_ipv4_tun_mac_ipv4_udp_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id 1 / end",
"scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_tcp_queue_group = {
- "name": "test_mac_ipv4_tun_mac_ipv4_tcp_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
+vectors_mac_ipv4_tun_mac_ipv4_udp = [tv_mac_ipv4_tun_mac_ipv4_udp_queue_index, tv_mac_ipv4_tun_mac_ipv4_udp_rss_queues,
+ tv_mac_ipv4_tun_mac_ipv4_udp_passthru, tv_mac_ipv4_tun_mac_ipv4_udp_drop,
+ tv_mac_ipv4_tun_mac_ipv4_udp_mark_rss, tv_mac_ipv4_tun_mac_ipv4_udp_mark]
+
+tv_mac_ipv4_tun_mac_ipv4_tcp_queue_index = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_tcp_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 15 / mark id 1 / end",
"scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": 15, "mark_id": 1}
}
-tv_mac_ipv4_tun_mac_ipv4_sctp_queue_group = {
- "name": "test_mac_ipv4_tun_mac_ipv4_sctp_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 1 2 end / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [1, 2]}
+tv_mac_ipv4_tun_mac_ipv4_tcp_rss_queues = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_tcp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "queue": [0, 1, 2, 3], "mark_id": 1}
}
-tv_mac_ipv4_gtpu_ipv4_pay_queue_index = {
- "name": "test_mac_ipv4_gtpu_ipv4_pay_queue_index",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 1 / end",
- "scapy_str": MAC_IPV4_GTPU_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": 1}
+tv_mac_ipv4_tun_mac_ipv4_tcp_passthru = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_tcp_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_gtpu_ipv4_pay_drop = {
- "name": "test_mac_ipv4_gtpu_ipv4_pay_drop",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions drop / end",
- "scapy_str": MAC_IPV4_GTPU_IPV4_PAY,
- "check_func": rfc.check_drop,
- "check_param": {"port_id": 0}
+tv_mac_ipv4_tun_mac_ipv4_tcp_drop = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_tcp_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_gtpu_ipv4_pay_queue_group = {
- "name": "test_mac_ipv4_gtpu_ipv4_pay_queue_group",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions rss queues 0 1 end / end",
- "scapy_str": MAC_IPV4_GTPU_IPV4_PAY,
- "check_func": rfc.check_queue,
- "check_param": {"port_id": 0, "queue": [0, 1]}
+tv_mac_ipv4_tun_mac_ipv4_tcp_mark_rss = {
+ "name": "tv_mac_ipv4_tun_mac_ipv4_tcp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_gtpu_ipv4_pay_mark_count_query = {
- "name": "test_mac_ipv4_gtpu_ipv4_pay_mark_count_query",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 2 / mark id 2 / count / end",
- "scapy_str": MAC_IPV4_GTPU_IPV4_PAY,
+tv_mac_ipv4_tun_mac_ipv4_tcp_mark = {
+ "name": "tv_mac_ipv4_tun_mac_ipv4_tcp_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 2, "mark_id": 2,
- "count": {"hits_set": 1, "hits": 5}, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_pay_queue_index_mark = {
- "name": "test_mac_ipv4_pay_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark id 0 / end",
- "scapy_str": MAC_IPV4_PAY,
+vectors_mac_ipv4_tun_mac_ipv4_tcp = [tv_mac_ipv4_tun_mac_ipv4_tcp_queue_index, tv_mac_ipv4_tun_mac_ipv4_tcp_rss_queues,
+ tv_mac_ipv4_tun_mac_ipv4_tcp_passthru, tv_mac_ipv4_tun_mac_ipv4_tcp_drop,
+ tv_mac_ipv4_tun_mac_ipv4_tcp_mark_rss, tv_mac_ipv4_tun_mac_ipv4_tcp_mark]
+
+tv_mac_ipv4_tun_mac_ipv4_sctp_queue_index = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_sctp_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 15 / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 0, "mark": True}
+ "check_param": {"port_id": 0, "queue": 15, "mark_id": 1}
}
-tv_mac_ipv4_udp_queue_index_mark = {
- "name": "test_mac_ipv4_udp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 0 / mark id 1 / end",
- "scapy_str": MAC_IPV4_UDP,
+tv_mac_ipv4_tun_mac_ipv4_sctp_rss_queues = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_sctp_rss_queues",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 0, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "queue": [0, 1, 2, 3], "mark_id": 1}
}
-tv_mac_ipv4_tcp_queue_index_mark = {
- "name": "test_mac_ipv4_tcp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 4294967294 / end",
- "scapy_str": MAC_IPV4_TCP,
+tv_mac_ipv4_tun_mac_ipv4_sctp_passthru = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_sctp_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 4294967294, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_sctp_queue_drop_mark = {
- "name": "test_mac_ipv4_sctp_queue_drop_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1 / end actions drop / mark id 1 / end",
- "scapy_str": MAC_IPV4_SCTP,
+tv_mac_ipv4_tun_mac_ipv4_sctp_drop = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_sctp_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv6_pay_queue_index_mark = {
- "name": "test_mac_ipv6_pay_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2 tc is 1 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV6_PAY,
+tv_mac_ipv4_tun_mac_ipv4_sctp_mark_rss = {
+ "name": "test_mac_ipv4_tun_mac_ipv4_sctp_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss / mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv6_udp_queue_index_mark = {
- "name": "test_mac_ipv6_udp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV6_UDP,
+tv_mac_ipv4_tun_mac_ipv4_sctp_mark = {
+ "name": "tv_mac_ipv4_tun_mac_ipv4_sctp_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv6_tcp_queue_index_mark = {
- "name": "test_mac_ipv6_tcp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV6_TCP,
+vectors_mac_ipv4_tun_mac_ipv4_sctp = [tv_mac_ipv4_tun_mac_ipv4_sctp_queue_index,
+ tv_mac_ipv4_tun_mac_ipv4_sctp_rss_queues,
+ tv_mac_ipv4_tun_mac_ipv4_sctp_passthru, tv_mac_ipv4_tun_mac_ipv4_sctp_drop,
+ tv_mac_ipv4_tun_mac_ipv4_sctp_mark_rss, tv_mac_ipv4_tun_mac_ipv4_sctp_mark]
+
+tv_mac_ipv4_gtpu_eh_queue_index = {
+ "name": "test_mac_ipv4_gtpu_eh_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions queue index 1 / mark id 1 / end",
+ "scapy_str": MAC_IPV4_GTPU_EH,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "queue": 1}
}
-tv_mac_ipv6_sctp_queue_index_mark = {
- "name": "test_mac_ipv6_sctp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV6_SCTP,
+tv_mac_ipv4_gtpu_eh_queue_group = {
+ "name": "test_mac_ipv4_gtpu_eh_queue_group",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions rss queues 0 1 2 3 end / mark id 1 / end",
+ "scapy_str": MAC_IPV4_GTPU_EH,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "queue": [0, 1, 2, 3]}
}
-tv_mac_ipv4_tun_ipv4_pay_queue_index_mark = {
- "name": "test_mac_ipv4_tun_ipv4_pay_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+tv_mac_ipv4_gtpu_eh_passthru = {
+ "name": "test_mac_ipv4_gtpu_eh_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions passthru / mark id 1 / end",
+ "scapy_str": MAC_IPV4_GTPU_EH,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_ipv4_udp_queue_group_mark = {
- "name": "test_mac_ipv4_tun_ipv4_udp_queue_group_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss queues 1 2 end / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+tv_mac_ipv4_gtpu_eh_drop = {
+ "name": "test_mac_ipv4_gtpu_eh_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end",
+ "scapy_str": MAC_IPV4_GTPU_EH,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": [1, 2], "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "drop": True}
}
-tv_mac_ipv4_tun_ipv4_tcp_drop_mark = {
- "name": "test_mac_ipv4_tun_ipv4_tcp_drop_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+tv_mac_ipv4_gtpu_eh_mark_rss = {
+ "name": "test_mac_ipv4_gtpu_eh_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions mark id 1 / rss / end",
+ "scapy_str": MAC_IPV4_GTPU_EH,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
}
-tv_mac_ipv4_tun_ipv4_sctp_queue_index_mark = {
- "name": "test_mac_ipv4_tun_ipv4_sctp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+tv_mac_ipv4_gtpu_eh_mark = {
+ "name": "tv_mac_ipv4_gtpu_eh_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions mark id 1 / end",
+ "scapy_str": MAC_IPV4_GTPU_EH,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 1, "rss": True}
+}
+
+tv_mac_ipv4_gtpu_eh_qfi_queue_index_mark = {
+ "name": "test_mac_ipv4_gtpu_eh_qfi_queue_index_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc qfi is 0x34 / end actions queue index 1 / mark id 3 / end",
+ "scapy_str": {"match":
+ [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/TCP()/Raw("x"*20)'],
+ "unmatched":
+ [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)']},
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 3, "queue": 1}
+}
+
+tv_mac_ipv4_gtpu_eh_qfi_rss_queues_mark = {
+ "name": "test_mac_ipv4_gtpu_eh_qfi_rss_queues_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc / end actions rss queues 2 3 end / mark id 1 / end",
+ "scapy_str": {"match":
+ [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP()/Raw("x"*20)'],
+ "unmatched":
+ [
+ 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP()/Raw("x"*20)']},
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 1, "queue": [2, 3]}
}
-tv_mac_ipv4_tun_mac_ipv4_pay_queue_index_mark = {
- "name": "test_mac_ipv4_tun_mac_ipv4_pay_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_PAY_MAC_IPV4_TUN_MAC_IPV4_PAY,
+vectors_mac_ipv4_gtpu_eh = [tv_mac_ipv4_gtpu_eh_queue_index, tv_mac_ipv4_gtpu_eh_queue_group,
+ tv_mac_ipv4_gtpu_eh_passthru, tv_mac_ipv4_gtpu_eh_drop,
+ tv_mac_ipv4_gtpu_eh_mark_rss, tv_mac_ipv4_gtpu_eh_mark,
+ tv_mac_ipv4_gtpu_eh_qfi_queue_index_mark, tv_mac_ipv4_gtpu_eh_qfi_rss_queues_mark]
+
+tv_mac_ipv4_gtpu_queue_index = {
+ "name": "test_mac_ipv4_gtpu_queue_index",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions queue index 1 / mark / end",
+ "scapy_str": MAC_IPV4_GTPU,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 0, "queue": 1}
}
-tv_mac_ipv4_tun_mac_ipv4_udp_queue_index_mark = {
- "name": "test_mac_ipv4_tun_mac_ipv4_udp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_UDP_MAC_IPV4_TUN_MAC_IPV4_UDP,
+tv_mac_ipv4_gtpu_queue_group = {
+ "name": "test_mac_ipv4_gtpu_queue_group",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions rss queues 0 1 end / mark / end",
+ "scapy_str": MAC_IPV4_GTPU,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 0, "queue": [0, 1]}
}
-tv_mac_ipv4_tun_mac_ipv4_tcp_queue_index_mark = {
- "name": "test_mac_ipv4_tun_mac_ipv4_tcp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_TCP_MAC_IPV4_TUN_MAC_IPV4_TCP,
+tv_mac_ipv4_gtpu_passthru = {
+ "name": "test_mac_ipv4_gtpu_passthru",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV4_GTPU,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
}
-tv_mac_ipv4_tun_mac_ipv4_sctp_queue_index_mark = {
- "name": "test_mac_ipv4_tun_mac_ipv4_sctp_queue_index_mark",
- "rule": "flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "scapy_str": MAC_IPV4_TUN_IPV4_SCTP_MAC_IPV4_TUN_MAC_IPV4_SCTP,
+tv_mac_ipv4_gtpu_drop = {
+ "name": "test_mac_ipv4_gtpu_drop",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions drop / end",
+ "scapy_str": MAC_IPV4_GTPU,
"check_func": rfc.check_mark,
- "check_param": {"port_id": 0, "queue": 1, "mark_id": 1, "mark": True}
+ "check_param": {"port_id": 0, "drop": True}
}
-vectors_ipv4_pay = [tv_mac_ipv4_pay_queue_index, tv_mac_ipv4_pay_selected_inputset_queue_index,
- tv_mac_ipv4_pay_drop, tv_mac_ipv4_pay_queue_group, tv_mac_ipv4_pay_queue_index_mark]
-
-vectors_ipv4_udp = [tv_mac_ipv4_udp_drop, tv_mac_ipv4_udp_queue_group, tv_mac_ipv4_udp_queue_index_mark,
- tv_mac_ipv4_udp_queue_index]
-
-vectors_ipv4_tcp = [tv_mac_ipv4_tcp_drop, tv_mac_ipv4_tcp_queue_group, tv_mac_ipv4_tcp_queue_index,
- tv_mac_ipv4_tcp_queue_index_mark]
-
-vectors_ipv4_sctp = [tv_mac_ipv4_sctp_queue_drop_mark, tv_mac_ipv4_sctp_queue_group, tv_mac_ipv4_sctp_drop,
- tv_mac_ipv4_sctp_queue_index]
-
-vectors_ipv6_pay = [tv_mac_ipv6_pay_drop, tv_mac_ipv6_pay_queue_group, tv_mac_ipv6_pay_queue_index,
- tv_mac_ipv6_pay_queue_index_mark, tv_mac_ipv6_pay_selected_inputset_queue_index]
-
-vectors_ipv6_udp = [tv_mac_ipv6_udp_drop, tv_mac_ipv6_udp_queue_group, tv_mac_ipv6_udp_queue_index,
- tv_mac_ipv6_udp_queue_index_mark]
-
-vectors_ipv6_tcp = [tv_mac_ipv6_tcp_drop, tv_mac_ipv6_tcp_queue_group, tv_mac_ipv6_tcp_queue_index,
- tv_mac_ipv6_tcp_queue_index_mark]
-
-vectors_ipv6_sctp = [tv_mac_ipv6_sctp_queue_index_mark, tv_mac_ipv6_sctp_drop, tv_mac_ipv6_sctp_queue_group,
- tv_mac_ipv6_sctp_queue_index]
-
-vectors_ipv4_tun_ipv4 = [tv_mac_ipv4_tun_ipv4_pay_drop, tv_mac_ipv4_tun_ipv4_pay_queue_group,
- tv_mac_ipv4_tun_ipv4_pay_queue_index, tv_mac_ipv4_tun_ipv4_pay_queue_index_mark,
- tv_mac_ipv4_tun_ipv4_sctp_drop, tv_mac_ipv4_tun_ipv4_sctp_queue_group,
- tv_mac_ipv4_tun_ipv4_sctp_queue_index, tv_mac_ipv4_tun_ipv4_sctp_queue_index_mark,
- tv_mac_ipv4_tun_ipv4_tcp_drop, tv_mac_ipv4_tun_ipv4_tcp_drop_mark,
- tv_mac_ipv4_tun_ipv4_tcp_queue_group, tv_mac_ipv4_tun_ipv4_tcp_queue_index,
- tv_mac_ipv4_tun_ipv4_udp_drop, tv_mac_ipv4_tun_ipv4_udp_queue_group,
- tv_mac_ipv4_tun_ipv4_udp_queue_group_mark, tv_mac_ipv4_tun_ipv4_udp_queue_index]
+tv_mac_ipv4_gtpu_mark_rss = {
+ "name": "test_mac_ipv4_gtpu_mark_rss",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV4_GTPU,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
-vectors_ipv4_tun_mac = [tv_mac_ipv4_tun_mac_ipv4_pay_queue_index_mark, tv_mac_ipv4_tun_mac_ipv4_pay_drop,
- tv_mac_ipv4_tun_mac_ipv4_pay_queue_group, tv_mac_ipv4_tun_mac_ipv4_pay_queue_index,
- tv_mac_ipv4_tun_mac_ipv4_sctp_drop, tv_mac_ipv4_tun_mac_ipv4_sctp_queue_group,
- tv_mac_ipv4_tun_mac_ipv4_sctp_queue_index, tv_mac_ipv4_tun_mac_ipv4_sctp_queue_index_mark,
- tv_mac_ipv4_tun_mac_ipv4_tcp_drop, tv_mac_ipv4_tun_mac_ipv4_tcp_queue_group,
- tv_mac_ipv4_tun_mac_ipv4_tcp_queue_index, tv_mac_ipv4_tun_mac_ipv4_tcp_queue_index_mark,
- tv_mac_ipv4_tun_mac_ipv4_udp_drop, tv_mac_ipv4_tun_mac_ipv4_udp_queue_group,
- tv_mac_ipv4_tun_mac_ipv4_udp_queue_index, tv_mac_ipv4_tun_mac_ipv4_udp_queue_index_mark]
+tv_mac_ipv4_gtpu_mark = {
+ "name": "tv_mac_ipv4_gtpu_mark",
+ "rule": "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions mark / end",
+ "scapy_str": MAC_IPV4_GTPU,
+ "check_func": rfc.check_mark,
+ "check_param": {"port_id": 0, "mark_id": 0, "rss": True}
+}
-test_vectors_gtpu_ipv4_pay = [tv_mac_ipv4_gtpu_ipv4_pay_drop, tv_mac_ipv4_gtpu_ipv4_pay_mark_count_query,
- tv_mac_ipv4_gtpu_ipv4_pay_queue_group, tv_mac_ipv4_gtpu_ipv4_pay_queue_index]
+vectors_mac_ipv4_gtpu = [tv_mac_ipv4_gtpu_queue_index, tv_mac_ipv4_gtpu_queue_group,
+ tv_mac_ipv4_gtpu_passthru, tv_mac_ipv4_gtpu_drop,
+ tv_mac_ipv4_gtpu_mark_rss, tv_mac_ipv4_gtpu_mark]
class TestCVLFdir(TestCase):
- def check_rule(self, port_id=0, stats=True, rule_list=None):
- out = self.dut.send_command("flow list %s" % port_id, timeout=2)
- p = re.compile(r"ID\s+Group\s+Prio\s+Attr\s+Rule")
- m = p.search(out)
- if stats:
- self.verify(m, "flow rule on port %s is not existed" % port_id)
- if rule_list:
- p = re.compile("^(\d+)\s")
- li = out.splitlines()
- res = list(filter(bool, list(map(p.match, li))))
- result = [i.group(1) for i in res]
- self.verify(sorted(result) == sorted(rule_list),
- "check rule list failed. expect %s, result %s" % (rule_list, result))
- else:
- self.verify(not m, "flow rule on port %s is existed" % port_id)
-
- def destroy_rule(self, rule_id, port_id=0):
- if isinstance(rule_id, list):
- for i in rule_id:
- out = self.dut.send_command("flow destroy %s rule %s" % (port_id, i), timeout=1)
- p = re.compile(r"Flow rule #(\d+) destroyed")
- m = p.search(out)
- self.verify(m, "flow rule %s delete failed" % rule_id)
- else:
- out = self.dut.send_command("flow destroy %s rule %s" % (port_id, rule_id), timeout=1)
- p = re.compile(r"Flow rule #(\d+) destroyed")
- m = p.search(out)
- self.verify(m, "flow rule %s delete failed" % rule_id)
-
def query_count(self, hits_set, hits, port_id=0, rule_id=0):
out = self.dut.send_command("flow query %s %s count" % (port_id, rule_id), timeout=1)
p = re.compile("hits_set:\s(\d+).*hits:\s(\d+)", re.DOTALL)
@@ -895,39 +1258,47 @@ class TestCVLFdir(TestCase):
test_results = {}
for tv in vectors:
try:
- count = 1 if not tv["check_param"].get("count") else tv["check_param"]["count"]
- port_id = tv["check_param"]["port_id"]
- mark = tv["check_param"].get("mark")
+ count = 1
+ port_id = tv["check_param"]["port_id"] if tv["check_param"].get("port_id") is not None else 0
+ drop = tv["check_param"].get("drop")
# create rule
rule_li = self.create_fdir_rule(tv["rule"], check_stats=True)
# send and check match packets
out1 = self.send_pkts_getouput(pkts=tv["scapy_str"]["match"], port_id=port_id,
- count=count, mark=mark)
- tv["check_func"](out1, pkt_num=len(tv["scapy_str"]["match"]), check_param=tv["check_param"])
- # send and check unmatch packets
- out2 = self.send_pkts_getouput(pkts=tv["scapy_str"]["unmatch"], port_id=port_id,
- count=count, mark=mark)
- tv["check_func"](out2, pkt_num=len(tv["scapy_str"]["unmatch"]), check_param=tv["check_param"],
+ count=count, drop=drop)
+ matched_queue = tv["check_func"](out1, pkt_num=len(tv["scapy_str"]["match"]),
+ check_param=tv["check_param"])
+ # send and check unmatched packets
+ out2 = self.send_pkts_getouput(pkts=tv["scapy_str"]["unmatched"], port_id=port_id,
+ count=count, drop=drop)
+ tv["check_func"](out2, pkt_num=len(tv["scapy_str"]["unmatched"]), check_param=tv["check_param"],
stats=False)
if tv["check_param"].get("count"):
self.query_count(tv["check_param"]["count"]["hits_set"], tv["check_param"]["count"]["hits"],
port_id=port_id,
rule_id=rule_li[0])
# list and destroy rule
- self.check_rule(port_id=tv["check_param"]["port_id"], rule_list=rule_li)
- self.destroy_rule(rule_id=rule_li, port_id=port_id)
+ self.check_fdir_rule(port_id=tv["check_param"]["port_id"], rule_list=rule_li)
+ self.destroy_fdir_rule(rule_id=rule_li, port_id=port_id)
# send matched packet
out3 = self.send_pkts_getouput(pkts=tv["scapy_str"]["match"], port_id=port_id,
- count=count, mark=mark)
- tv["check_func"](out3, pkt_num=len(tv["scapy_str"]["match"]), check_param=tv["check_param"],
- stats=False)
+ count=count, drop=drop)
+ matched_queue2 = tv["check_func"](out3, pkt_num=len(tv["scapy_str"]["match"]),
+ check_param=tv["check_param"],
+ stats=False)
+ if tv["check_param"].get("rss"):
+ self.verify(matched_queue == matched_queue2 and None not in matched_queue,
+ "send twice matched packet, received in deferent queues")
# check not rule exists
- self.check_rule(port_id=port_id, stats=False)
+ self.check_fdir_rule(port_id=port_id, stats=False)
test_results[tv["name"]] = True
- print((GREEN("case passed: %s" % tv["name"])))
+ self.logger.info((GREEN("case passed: %s" % tv["name"])))
except Exception as e:
- print((RED(e)))
+ self.logger.warning((RED(e)))
+ self.dut.send_command("flow flush 0", timeout=1)
+ self.dut.send_command("flow flush 1", timeout=1)
test_results[tv["name"]] = False
+ self.logger.info((GREEN("case failed: %s" % tv["name"])))
continue
failed_cases = []
for k, v in list(test_results.items()):
@@ -973,13 +1344,16 @@ class TestCVLFdir(TestCase):
# specify a fixed rss-hash-key for cvl ether
self.pmd_output.execute_cmd(
"port config 0 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd")
+ self.pmd_output.execute_cmd(
+ "port config 1 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd")
res = self.pmd_output.wait_link_status_up('all', timeout=15)
self.verify(res is True, 'there have port link is down')
- def launch_testpmd_with_mark(self):
+ def launch_testpmd_with_mark(self, rxq=64, txq=64):
self.pmd_output.start_testpmd(cores="1S/4C/1T",
- param="--portmask=%s --rxq=64 --txq=64 --port-topology=loop" % self.portMask,
- eal_param="-w %s,flow-mark-support=1 -w %s,flow-mark-support=1" % (
+ param="--portmask=%s --rxq=%d --txq=%d --port-topology=loop" % (
+ self.portMask, rxq, txq),
+ eal_param="-w %s,flow-mark-support=1 -w %s,flow-mark-support=1 --log-level=ice,7" % (
self.pci0, self.pci1), socket=self.ports_socket)
self.config_testpmd()
@@ -988,32 +1362,44 @@ class TestCVLFdir(TestCase):
tx_port = self.tester_iface0 if not tx_port else tx_port
self.pkt.send_pkt(crb=self.tester, tx_port=tx_port, count=count)
- def send_pkts_getouput(self, pkts, port_id=0, count=1, mark=None):
+ def send_pkts_getouput(self, pkts, port_id=0, count=1, drop=False):
tx_port = self.tester_iface0 if port_id == 0 else self.tester_iface1
- self.send_packets(pkts, tx_port=tx_port, count=count)
+
time.sleep(1)
- if mark:
- out = (self.pmd_output.get_output(), self.pmd_output.execute_cmd("stop"))
- else:
+ if drop:
+ self.pmd_output.execute_cmd("clear port stats all")
+ time.sleep(0.5)
+ self.send_packets(pkts, tx_port=tx_port, count=count)
out = self.pmd_output.execute_cmd("stop")
- self.pmd_output.execute_cmd("start")
+ self.pmd_output.execute_cmd("start")
+ else:
+ self.send_packets(pkts, tx_port=tx_port, count=count)
+ out = self.pmd_output.get_output()
return out
- def create_fdir_rule(self, rule, check_stats=None):
- # dpdk get a warning message(ice_interrupt_handler), it'll mess up output stream, testpmd> probably not be
- # print completely.
+ def create_fdir_rule(self, rule: (list, str), check_stats=None, msg=None, validate=True):
+ if validate:
+ if isinstance(rule, list):
+ validate_rule = [i.replace('create', 'validate') for i in rule]
+ else:
+ validate_rule = rule.replace('create', 'validate')
+ self.validate_fdir_rule(validate_rule, check_stats=check_stats)
p = re.compile(r"Flow rule #(\d+) created")
rule_list = []
if isinstance(rule, list):
for i in rule:
- out = self.dut.send_command(i, timeout=1)
+ out = self.pmd_output.execute_cmd(i, timeout=1)
+ if msg:
+ self.verify(msg in out, "failed: expect %s in %s" % (msg, out))
m = p.search(out)
if m:
rule_list.append(m.group(1))
else:
rule_list.append(False)
elif isinstance(rule, str):
- out = self.dut.send_command(rule, timeout=1)
+ out = self.pmd_output.execute_cmd(rule, timeout=1)
+ if msg:
+ self.verify(msg in out, "failed: expect %s in %s" % (msg, out))
m = p.search(out)
if m:
rule_list.append(m.group(1))
@@ -1027,11 +1413,37 @@ class TestCVLFdir(TestCase):
self.verify(not any(rule_list), "all rules should create failed, result %s" % rule_list)
return rule_list
+ def validate_fdir_rule(self, rule, check_stats=True, check_msg=None):
+ flag = 'Flow rule validated'
+ if isinstance(rule, str):
+ out = self.pmd_output.execute_cmd(rule, timeout=1)
+ if check_stats:
+ self.verify(flag in out.strip(), "rule %s validated failed, result %s" % (rule, out))
+ else:
+ if check_msg:
+ self.verify(flag not in out.strip() and check_msg in out.strip(),
+ "rule %s validate should failed with msg: %s, but result %s" % (rule, check_msg, out))
+ else:
+ self.verify(flag not in out.strip(), "rule %s validate should failed, result %s" % (rule, out))
+ elif isinstance(rule, list):
+ for r in rule:
+ out = self.pmd_output.execute_cmd(r, timeout=1)
+ if check_stats:
+ self.verify(flag in out.strip(), "rule %s validated failed, result %s" % (r, out))
+ else:
+ if not check_msg:
+ self.verify(flag not in out.strip(), "rule %s validate should failed, result %s" % (r, out))
+ else:
+ self.verify(flag not in out.strip() and check_msg in out.strip(),
+ "rule %s should validate failed with msg: %s, but result %s" % (
+ r, check_msg, out))
+
def check_fdir_rule(self, port_id=0, stats=True, rule_list=None):
- out = self.dut.send_command("flow list %s" % port_id, timeout=2)
+ out = self.pmd_output.execute_cmd("flow list %s" % port_id)
p = re.compile(r"ID\s+Group\s+Prio\s+Attr\s+Rule")
+ matched = p.search(out)
if stats:
- self.verify(p.search(out), "flow rule on port %s is not existed" % port_id)
+ self.verify(matched, "flow rule on port %s is not existed" % port_id)
if rule_list:
p = re.compile("^(\d+)\s")
li = out.splitlines()
@@ -1040,10 +1452,10 @@ class TestCVLFdir(TestCase):
self.verify(sorted(result) == sorted(rule_list),
"check rule list failed. expect %s, result %s" % (rule_list, result))
else:
- self.verify(not p.search(out), "flow rule on port %s is existed" % port_id)
+ self.verify(not matched, "flow rule on port %s is existed" % port_id)
def destroy_fdir_rule(self, port_id=0, rule_id=None):
- if rule_id == None:
+ if rule_id is None:
rule_id = 0
if isinstance(rule_id, list):
for i in rule_id:
@@ -1057,228 +1469,368 @@ class TestCVLFdir(TestCase):
m = p.search(out)
self.verify(m, "flow rule %s delete failed" % rule_id)
- def test_mac_ipv4_pay(self):
- self._rte_flow_validate(vectors_ipv4_pay)
-
- def test_mac_ipv4_udp(self):
- self._rte_flow_validate(vectors_ipv4_udp)
-
- def test_mac_ipv4_tcp(self):
- self._rte_flow_validate(vectors_ipv4_tcp)
-
- def test_mac_ipv4_sctp(self):
- self._rte_flow_validate((vectors_ipv4_sctp))
-
- def test_mac_ipv6_pay(self):
- self._rte_flow_validate(vectors_ipv6_pay)
-
- def test_mac_ipv6_udp(self):
- self._rte_flow_validate(vectors_ipv6_udp)
-
- def test_mac_ipv6_tcp(self):
- self._rte_flow_validate(vectors_ipv6_tcp)
+ def test_flow_validation(self):
+ rule = "flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end"
+ self.validate_fdir_rule(rule)
+ rules3 = [
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / count / end',
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / mark id 1 / count identifier 0x1234 shared on / end',
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 2 / count identifier 0x34 shared off / end',
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark id 3 / rss / count shared on / end',
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / count shared off / end']
+ self.validate_fdir_rule(rules3)
+ self.check_fdir_rule(stats=False)
- def test_mac_ipv6_sctp(self):
- self._rte_flow_validate(vectors_ipv6_sctp)
+ def test_negative_validation(self):
+ # dpdk now supoort only count action
+ # self.validate_fdir_rule(
+ # 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end',
+ # check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / and actions end',
+ check_stats=False, check_msg='Bad arguments')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / rss / end',
+ check_stats=False, check_msg='Invalid input action number: Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark id 4294967296 / end',
+ check_stats=False, check_msg='Bad arguments')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tc is 4 / end actions queue index 1 / end',
+ check_stats=False, check_msg='Bad arguments')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / end',
+ check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / end',
+ check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / end',
+ check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues end / end',
+ check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end',
+ check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / end',
+ check_stats=False, check_msg='Invalid argument')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x100 / end actions queue index 1 / end',
+ check_stats=False, check_msg='Bad arguments')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / end',
+ check_stats=False, check_msg='Bad arguments')
+ self.validate_fdir_rule(
+ 'flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / end',
+ check_stats=False, check_msg='Bad arguments')
+ # need run for os default pkg
+ # self.validate_fdir_rule(
+ # 'flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end',
+ # check_stats=False, check_msg='Bad arguments')
+ self.validate_fdir_rule(
+ 'flow validate 2 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end',
+ check_stats=False, check_msg='No such device')
+ self.check_fdir_rule(stats=False)
- def test_mac_ipv4_tun_ipv4(self):
- self._rte_flow_validate(vectors_ipv4_tun_ipv4)
+ def test_mac_ipv4_pay_protocal(self):
+ rules = [
+ "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 1 / end actions queue index 1 / mark id 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 17 / end actions passthru / mark id 3 / end"]
+ rule_li = self.create_fdir_rule(rules, check_stats=True)
+ pkt1 = 'Ether(dst="00:11:22:33:44:55") / IP(src="192.168.0.20", dst="192.168.0.21", proto=1) / Raw("x" * 80)'
+ pkt2 = 'Ether(dst="00:11:22:33:44:55") / IP(src="192.168.0.20", dst="192.168.0.21", frag=1, proto=1) / Raw("x" * 80)'
+ pkt3 = 'Ether(dst="00:11:22:33:44:55") / IP(src="192.168.0.20", dst="192.168.0.21", ttl=2, tos=4) / UDP(sport=22, dport=23) / Raw("x" * 80)'
+ pkt4 = 'Ether(dst="00:11:22:33:44:55") / IP(src="192.168.0.20", dst="192.168.0.21", frag=1, ttl=2, tos=4) / UDP(sport=22, dport=23) / Raw("x" * 80)'
+ pkt5 = 'Ether(dst="00:11:22:33:44:55") / IP(src="192.168.0.20", dst="192.168.0.21", proto=17, ttl=2, tos=4) / Raw("x" * 80)'
+ pkt6 = 'Ether(dst="00:11:22:33:44:55") / IP(src="192.168.0.20", dst="192.168.0.21", frag=1, proto=17, ttl=2, tos=4) / Raw("x" * 80)'
+
+ out = self.send_pkts_getouput([pkt1, pkt2])
+ port_id = 0
+ p = re.compile(r'port\s+%s/queue(.+?):\s+received\s+(\d+)\s+packets.*?FDIR matched ID=(\S+)' % port_id, re.S)
+ res = p.findall(out)
+ pkt_num = sum([int(i[1]) for i in res])
+ pkt_queue = set([int(i[0]) for i in res])
+ pkt_mark_id = set([i[2] for i in res])
+ self.verify(pkt_num == 2, "received pkts %s, expect 2" % pkt_num)
+ self.verify(all([i == 1 for i in pkt_queue]), "wrong received queue %s, expect 1" % pkt_queue)
+ self.verify(all([i == '0x1' for i in pkt_mark_id]), "wrong received mark id %s, expect 0x1" % pkt_mark_id)
+
+ out2 = self.send_pkts_getouput([pkt3, pkt4, pkt5, pkt6])
+ res = p.findall(out2)
+ pkt_num = sum([int(i[1]) for i in res])
+ pkt_mark_id = set([i[2] for i in res])
+ self.verify(pkt_num == 4, "received pkts %s, expect 4" % pkt_num)
+ rfc.verify_directed_by_rss(out2)
+ self.verify(all([i == '0x3' for i in pkt_mark_id]), "wrong received mark id %s, expect 0x1" % pkt_mark_id)
+
+ pkt7 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22", proto=1) / Raw("x" * 80)'
+ pkt8 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=6) / Raw("x" * 80)'
+ pkt9 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/ Raw("x" * 80)'
+ pkt10 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", frag=1)/TCP(sport=22,dport=23)/ Raw("x" * 80)'
+
+ out3 = self.send_pkts_getouput([pkt7, pkt8, pkt9, pkt10])
+ fdir_scanner = re.compile("FDIR matched ID=(0x\w+)")
+ p2 = re.compile(r"port\s+%s/queue\s+(\d+):\s+received\s+(\d+)\s+packets" % port_id)
+ res = p2.findall(out3)
+ pkt_num = sum([int(i[1]) for i in res])
+ self.verify(pkt_num == 4, "received pkts %s, expect 4" % pkt_num)
+ self.verify(not fdir_scanner.search(out3), "should not FDIR matched ID included in output: %s" % out3)
+
+ self.check_fdir_rule(port_id=port_id, rule_list=rule_li)
+ self.destroy_fdir_rule(rule_id=rule_li)
+
+ out = self.send_pkts_getouput([pkt1, pkt2, pkt3, pkt4, pkt5, pkt6])
+ res = p2.findall(out)
+ pkt_num = sum([int(i[1]) for i in res])
+ self.verify(pkt_num == 6, "received pkts %s, expect 6" % pkt_num)
+ self.verify(not fdir_scanner.search(out3), "should not FDIR matched ID included in output: %s" % out3)
+ self.check_fdir_rule(stats=False)
- def test_mac_ipv4_tun_mac(self):
- self._rte_flow_validate(vectors_ipv4_tun_mac)
+ def test_mac_ipv6_pay_protocal(self):
+ rules = [
+ "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 44 / end actions rss queues 5 6 end / mark id 1 / end",
+ "flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 6 / end actions mark id 2 / rss / end"]
+ rule_li = self.create_fdir_rule(rules, check_stats=True)
+ pkt1 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010", nh=44, tc=1, hlim=2)/("X"*480)'
+ pkt2 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(b"1000")/("X"*480)'
+ pkt3 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010", nh=44)/TCP(sport=22,dport=23)/("X"*480)'
+ pkt4 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(b"1000")/TCP(sport=22,dport=23)/("X"*480)'
+ pkt5 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=6)/("X"*480)'
+ pkt6 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)'
+
+ out = self.send_pkts_getouput([pkt1, pkt2, pkt3, pkt4])
+ port_id = 0
+ p = re.compile(r'port\s+%s/queue(.+?):\s+received\s+(\d+)\s+packets.*?FDIR matched ID=(\S+)' % port_id, re.S)
+ res = p.findall(out)
+ pkt_num = sum([int(i[1]) for i in res])
+ pkt_queue = set([int(i[0]) for i in res])
+ pkt_mark_id = set([i[2] for i in res])
+ self.verify(pkt_num == 4, "received pkts %s, expect 4" % pkt_num)
+ self.verify(all([i in [5, 6] for i in pkt_queue]), "wrong received queue %s, expect 5 or 6]" % pkt_queue)
+ self.verify(all([i == '0x1' for i in pkt_mark_id]), "wrong received mark id %s, expect 0x1" % pkt_mark_id)
+
+ out2 = self.send_pkts_getouput([pkt5, pkt6])
+ res = p.findall(out2)
+ pkt_num = sum([int(i[1]) for i in res])
+ pkt_mark_id = set([i[2] for i in res])
+ self.verify(pkt_num == 2, "received pkts %s, expect 2" % pkt_num)
+ rfc.verify_directed_by_rss(out2)
+ self.verify(all([i == '0x2' for i in pkt_mark_id]), "wrong received mark id %s, expect 0x2" % pkt_mark_id)
+
+ pkt8 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)'
+ pkt9 = 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=17)/("X"*480)'
+
+ out3 = self.send_pkts_getouput([pkt8, pkt9])
+ fdir_scanner = re.compile("FDIR matched ID=(0x\w+)")
+ p2 = re.compile(r"port\s+%s/queue\s+(\d+):\s+received\s+(\d+)\s+packets" % port_id)
+ res = p2.findall(out3)
+ pkt_num = sum([int(i[1]) for i in res])
+ self.verify(pkt_num == 2, "received pkts %s, expect 3" % pkt_num)
+ self.verify(not fdir_scanner.search(out3), "should not FDIR matched ID included in output: %s" % out3)
+
+ self.check_fdir_rule(port_id=port_id, rule_list=rule_li)
+ self.destroy_fdir_rule(rule_id=rule_li)
+
+ out = self.send_pkts_getouput([pkt1, pkt2, pkt3, pkt4, pkt5, pkt6])
+ res = p2.findall(out)
+ pkt_num = sum([int(i[1]) for i in res])
+ self.verify(pkt_num == 6, "received pkts %s, expect 6" % pkt_num)
+ self.verify(not fdir_scanner.search(out3), "should not FDIR matched ID included in output: %s" % out3)
+ self.check_fdir_rule(stats=False)
- def test_queue_index_wrong_parameters(self):
- rule1 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / end"
- self.create_fdir_rule(rule1, check_stats=False)
- rule2 = [
- "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end",
- "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 2 / end",
- "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop / end"]
- res = self.create_fdir_rule(rule2)
- self.verify(res[0], "create fdir rule failed, result %s" % res)
- self.verify(not any(res[1:]), "created wrong fdir rule %s should fail" % rule2[1:])
-
- def test_queue_group_wrong_parameters(self):
- rule1 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 1 2 end / end"
- rule2 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / end"
- rule3 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end"
- rule4 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / end"
- rule5 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 end / end"
- res = self.create_fdir_rule([rule1, rule2, rule3, rule4], check_stats=False)
- self.dut.send_command("stop", timeout=1)
- self.dut.send_command("port stop all", timeout=1)
- self.dut.send_command("port config all rxq 32", timeout=1)
- self.dut.send_command("port config all txq 32", timeout=2)
- self.dut.send_command("port start all", timeout=1)
- self.pmd_output.execute_cmd("start")
- res = self.create_fdir_rule(rule5, check_stats=False)
- self.dut.send_command("stop", timeout=1)
- self.dut.send_command("port stop all", timeout=1)
- self.dut.send_command("port config all rxq 64", timeout=1)
- self.dut.send_command("port config all txq 64", timeout=2)
- self.dut.send_command("port start all", timeout=1)
- self.pmd_output.execute_cmd("start")
- result = True
+ def test_invalid_parameters_of_queue_index(self):
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 64 / end"
+ out = self.dut.send_command(rule, timeout=1)
+ self.verify("Invalid input action: Invalid argument" in out, "failed with output: %s" % out)
+ self.check_fdir_rule(port_id=0, stats=False)
+
+ def test_invalid_parameters_of_rss_queues(self):
+ rule1 = [
+ "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 end / end",
+ "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 0 end / end",
+ "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues end / end"]
+ self.create_fdir_rule(rule=rule1, check_stats=False, msg='Invalid input action: Invalid argument')
+ rule2 = 'flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 1 2 3 5 end / end'
+ self.create_fdir_rule(rule2, check_stats=False, msg='Invalid input action: Invalid argument')
+ rule3 = 'flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 63 64 end / end'
+ self.create_fdir_rule(rule3, check_stats=False, msg='Invalid input action: Invalid argument')
try:
- self.create_fdir_rule(rule5, check_stats=True)
- out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY["match"])
- rfc.check_queue(out, pkt_num=len(MAC_IPV4_PAY["match"]), check_param={"port_id": 0, "queue": list(range(64))})
- out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY["unmatch"])
- rfc.check_queue(out, pkt_num=len(MAC_IPV4_PAY["unmatch"]), check_param={"port_id": 0, "queue": list(range(64))})
+ # restart testpmd
+ self.dut.send_expect("quit", "# ")
+ self.dut.kill_all()
+ self.launch_testpmd_with_mark(rxq=7, txq=7)
+ self.pmd_output.execute_cmd("start")
+ rule4 = 'flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 proto is 255 / end actions rss queues 0 1 2 3 4 5 6 7 end / end'
+ self.create_fdir_rule(rule4, check_stats=False)
+ self.check_fdir_rule(port_id=0, stats=False)
+ # restart testpmd
+ self.dut.send_expect("quit", "# ")
+ self.dut.kill_all()
+ self.launch_testpmd_with_mark(rxq=8, txq=8)
+ self.pmd_output.execute_cmd("start")
+ self.create_fdir_rule(rule4, check_stats=True)
+ out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY['match'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['match']), check_param={"port_id": 0, "queue": list(range(8))},
+ stats=True)
+ out2 = self.send_pkts_getouput(pkts=MAC_IPV4_PAY['unmatched'])
+ rfc.check_mark(out2, pkt_num=len(MAC_IPV4_PAY['unmatched']),
+ check_param={"port_id": 0, "queue": list(range(8))}, stats=True)
except Exception as e:
- result = False
- print((RED("failed:" + str(e))))
+ raise Exception(e)
finally:
- # restore testpmd config to default, then verify results
- self.config_testpmd()
- self.verify(result, "check failed")
+ self.dut.kill_all()
+ self.launch_testpmd_with_mark()
+
+ def test_invalid_parameters_of_input_set(self):
+ rule = [
+ "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x100 / end actions queue index 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / end",
+ "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / end"
+ ]
+ self.create_fdir_rule(rule, check_stats=False, msg="Bad arguments")
+ self.check_fdir_rule(stats=False)
- def test_mac_ipv4_gtpu_ipv4_pay_teid_mark_count_query(self):
- rule = "flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc / ipv4 / end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 end / mark id 100 / count / end"
- p_gtpu1 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03") / IP(src="192.168.0.20", dst="192.168.0.21") / UDP(dport=2152) / GTP_U_Header(gtp_type=255, teid=0x12345678) / GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35) / IP() / Raw("x" * 20)'
- p_gtpu2 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/UDP()/Raw("x"*20)'
- # create fdir rule
+ def test_invalid_parameters_of_mark_id(self):
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 4294967296 / end"
+ self.create_fdir_rule(rule, check_stats=False, msg="Bad arguments")
+ self.check_fdir_rule(stats=False)
+
+ def test_duplicated_rules(self):
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
rule_li = self.create_fdir_rule(rule, check_stats=True)
- out = self.send_pkts_getouput(pkts=p_gtpu1, port_id=1, mark=True)
- check_param = {"port_id": 1, "queue": list(range(64)), "mark_id": 100}
- rfc.check_mark(out, pkt_num=1, check_param=check_param)
-
- out = self.send_pkts_getouput(pkts=p_gtpu2, port_id=1, mark=True)
- rfc.check_queue(out[1], pkt_num=1, check_param=check_param)
- mark_scanner = "FDIR matched ID=(0x\w+)"
- res = re.search(mark_scanner, out[0])
- self.verify(not res, "FDIR should not in %s" % out[0])
- self.query_count(1, 1, 1, 0)
-
- self.check_fdir_rule(port_id=1, stats=True)
- self.destroy_fdir_rule(port_id=1, rule_id=rule_li[0])
- # send matched packets
- out = self.send_pkts_getouput(pkts=p_gtpu1, port_id=1, mark=True)
- rfc.check_queue(out[1], pkt_num=1, check_param=check_param, stats=True)
- res = re.search(mark_scanner, out[0])
- self.verify(not res, "FDIR should not in %s" % out[0])
- self.check_fdir_rule(port_id=1, stats=False)
+ self.create_fdir_rule(rule, check_stats=False, msg="Rule already exists!: File exists", validate=False)
+ self.check_fdir_rule(stats=True, rule_list=rule_li)
- def test_mac_ipv4_gtpu_ipv4_pay_qfi_mark_count_query(self):
- rule = "flow create 1 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc qfi is 0x34 / ipv4 / end actions drop / mark id 3 / count / end"
- p_gtpu1 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/TCP()/Raw("x"*20)'
- p_gtpu2 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)'
- # create fdir rule
- res = self.create_fdir_rule(rule, check_stats=True)
- check_param = {"port_id": 1, "mark": True, "mark_id": 3}
- # send matched packet
- out = self.send_pkts_getouput(pkts=p_gtpu1, port_id=1, mark=True)
- rfc.check_mark(out, pkt_num=1, check_param=check_param, stats=True)
- # send unmatched packet
- out1 = self.send_pkts_getouput(pkts=p_gtpu2, port_id=1, mark=True)
- rfc.check_mark(out1, pkt_num=1, check_param=check_param, stats=False)
- self.query_count(1, 1, 1, 0)
- self.check_fdir_rule(port_id=1, stats=True, rule_list=res)
- self.destroy_fdir_rule(port_id=1, rule_id=0)
- # send matched packets
- out = self.send_pkts_getouput(p_gtpu1, port_id=1, mark=True)
- rfc.check_mark(out, pkt_num=1, check_param={"port_id": 1}, stats=False)
- self.check_fdir_rule(port_id=1, stats=False)
+ def test_conflicted_rules(self):
+ rule1 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / end"
+ rule_li = self.create_fdir_rule(rule1, check_stats=True)
+ rule2 = [
+ "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 2 / end",
+ "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions drop / end",
+ 'flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 3 / mark / end',
+ 'flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 3 / mark / end']
+ self.create_fdir_rule(rule2[0:2], check_stats=False, msg="Rule already exists!: File exists", validate=False)
+ self.create_fdir_rule(rule2[2:], check_stats=False, msg="Invalid input action number: Invalid argument", validate=False)
+ self.check_fdir_rule(stats=True, rule_list=rule_li)
+
+ def test_conflicted_actions(self):
+ rule1 = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 / rss queues 2 3 end / end"
+ self.create_fdir_rule(rule1, check_stats=False, msg="Invalid input action number: Invalid argument")
+ self.check_fdir_rule(stats=False)
- def test_mac_ipv4_gtpu_ipv4_pay_multirules(self):
- rule1 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 1 / end"
- rule2 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x35 / ipv4 / end actions queue index 2 / end"
- rule3 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 / gtp_psc qfi is 0x35 / ipv4 / end actions queue index 3 / end"
- res = self.create_fdir_rule(rule=[rule1, rule2, rule3], check_stats=True)
- rule4 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 / gtp_psc qfi is 0x35 / ipv4 / end actions queue index 3 / end"
- rule5 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 / gtp_psc qfi is 0x35 / ipv4 / end actions queue index 4 / end"
- rule6 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 / gtp_psc qfi is 0x75 / ipv4 / end actions queue index 4 / end"
- res2 = self.create_fdir_rule(rule=[rule4, rule5, rule6], check_stats=False)
- rule7 = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 3 / end"
- res3 = self.create_fdir_rule(rule7, check_stats=True)
- p_gtpu1 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)'
- p_gtpu2 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)'
- p_gtpu3 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)'
- p_gtpu4 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)'
- p_gtpu5 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x36)/IP()/Raw("x"*20)'
- out1 = self.send_pkts_getouput(p_gtpu1)
- rfc.check_queue(out1, pkt_num=1, check_param={"queue": 1})
- out2 = self.send_pkts_getouput(p_gtpu2)
- rfc.check_queue(out2, pkt_num=1, check_param={"queue": 3})
- out3 = self.send_pkts_getouput(p_gtpu3)
- rfc.check_queue(out3, pkt_num=1, check_param={"queue": 2})
- out4 = self.send_pkts_getouput(p_gtpu4)
- rfc.check_queue(out4, pkt_num=1, check_param={"queue": 3})
- out5 = self.send_pkts_getouput(p_gtpu5)
- rfc.check_queue(out5, pkt_num=1, check_param={"queue": [1, 2, 3]}, stats=False)
- res.extend(res3)
- self.check_fdir_rule(port_id=0, stats=True, rule_list=res)
- self.dut.send_command("flow flush 0", timeout=1)
- out1 = self.send_pkts_getouput(p_gtpu1)
- rfc.check_queue(out1, pkt_num=1, check_param={"queue": 1}, stats=False)
- out2 = self.send_pkts_getouput(p_gtpu2)
- rfc.check_queue(out2, pkt_num=1, check_param={"queue": 3}, stats=False)
- out3 = self.send_pkts_getouput(p_gtpu3)
- rfc.check_queue(out3, pkt_num=1, check_param={"queue": 2}, stats=False)
- out4 = self.send_pkts_getouput(p_gtpu4)
- rfc.check_queue(out4, pkt_num=1, check_param={"queue": 3}, stats=False)
-
- def test_mac_ipv4_gtpu_ipv4_pay_two_ports(self):
- rule1 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 1 / end'
- rule2 = 'flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 1 / end'
- rule3 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x35 / ipv4 / end actions queue index 2 / end'
- rule4 = 'flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x35 / ipv4 / end actions queue index 3 / end'
- rule5 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / ipv4 / end actions queue index 1 / end'
- rule6 = 'flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc / ipv4 / end actions queue index 2 / end'
-
- p_gtpu1 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)'
- p_gtpu2 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)'
- p_gtpu3 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:00:00:00:01:03")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw("x"*20)'
- res1 = self.create_fdir_rule([rule1, rule2], check_stats=True)
- out1 = self.send_pkts_getouput(p_gtpu1)
- rfc.check_queue(out1, pkt_num=1, check_param={"queue": 1})
- out2 = self.send_pkts_getouput(p_gtpu1, port_id=1)
- rfc.check_queue(out2, pkt_num=1, check_param={"port_id": 1, "queue": 1})
-
- res2 = self.create_fdir_rule([rule3, rule4], check_stats=True)
- out1 = self.send_pkts_getouput(p_gtpu2)
- rfc.check_queue(out1, pkt_num=1, check_param={"queue": 2})
- out2 = self.send_pkts_getouput(p_gtpu2, port_id=1)
- rfc.check_queue(out2, pkt_num=1, check_param={"port_id": 1, "queue": 3})
+ def test_void_action(self):
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions end"
+ self.create_fdir_rule(rule, check_stats=False, msg="Invalid input action: Invalid argument")
+ self.check_fdir_rule(stats=False)
- self.dut.send_command("flow flush 0", timeout=1)
- self.dut.send_command("flow flush 1", timeout=1)
+ def _test_unsupported_action(self):
+ # now dpdk has already support only count action, so this case need update or abandon
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions count / end"
+ self.create_fdir_rule(rule, check_stats=False, msg="Invalid input action: Invalid argument")
+ self.check_fdir_rule(stats=False)
- res3 = self.create_fdir_rule([rule5, rule6])
- self.verify(all(res3), "rules should be create seccess, result is %s" % res3)
- out1 = self.send_pkts_getouput(p_gtpu3)
- rfc.check_queue(out1, pkt_num=1, check_param={"queue": 1}, stats=False)
- out2 = self.send_pkts_getouput(p_gtpu3, port_id=1)
- rfc.check_queue(out2, pkt_num=1, check_param={"port_id": 1, "queue": 2}, stats=True)
+ def test_delete_a_nonexistent_rule(self):
+ self.check_fdir_rule(stats=False)
+ out = self.pmd_output.execute_cmd("flow destroy 0 rule 0")
+ self.verify(not "error" in out, "failed, destroy non-existent rule should not raise error")
+ self.check_fdir_rule(stats=False)
+ out = self.pmd_output.execute_cmd("flow flush 0")
+ self.verify(not "error" in out, "failed, flush non-existent rule should not raise error")
+ self.check_fdir_rule(stats=False)
- self.check_fdir_rule(port_id=0, rule_list=res3[0])
- self.check_fdir_rule(port_id=1, rule_list=res3[1])
+ def test_unsupported_input_set_field(self):
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / end"
+ self.create_fdir_rule(rule, check_stats=False, msg="Bad arguments")
+ self.check_fdir_rule(stats=False)
- self.destroy_fdir_rule(0, 0)
- self.destroy_fdir_rule(1, 0)
+ def test_invalid_port(self):
+ rule = "flow create 2 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end"
+ self.create_fdir_rule(rule, check_stats=False, msg="No such device: No such device")
+ out = self.pmd_output.execute_cmd("flow list 2")
+ self.verify("Invalid port 2" in out, "expect Invalid port 2 in %s" % out)
- out1 = self.send_pkts_getouput([p_gtpu1, p_gtpu2])
- rfc.check_queue(out1, pkt_num=2, check_param={"port_id": 0, "queue": [1, 2]}, stats=False)
- out2 = self.send_pkts_getouput([p_gtpu1, p_gtpu2, p_gtpu3], port_id=1)
- rfc.check_queue(out2, pkt_num=3, check_param={"port_id": 1, "queue": [1, 2, 3]}, stats=False)
+ def _test_unsupported_pattern(self):
+ # only test with OS default package
+ rule = "flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end"
+ self.create_fdir_rule(rule, check_stats=False)
+ self.check_fdir_rule(stats=False)
- self.check_fdir_rule(0, stats=False)
- self.check_fdir_rule(1, stats=False)
+ def test_conflict_patterns(self):
+ fdir_flag = "ice_flow_create(): Succeeded to create (1) flow"
+ switch_flag = "ice_flow_create(): Succeeded to create (2) flow"
+ pkts = ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21") /UDP(sport=22, dport=23)/ Raw("x" * 80)']
+ rule1 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions queue index 1 / end'
+ out = self.pmd_output.execute_cmd(rule1)
+ self.verify(fdir_flag in out, "fdir rule should be created")
+ out = self.send_pkts_getouput(pkts=pkts)
+ rfc.check_mark(out, pkt_num=2, check_param={"port_id": 0, "queue": 1}, stats=True)
- def test_mac_ipv4_gtpu_ipv4_pay_wrong_parameters(self):
- rule1 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x100 / ipv4 / end actions queue index 1 / end'
- rule2 = 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / ipv4 / end actions queue index 2 / end'
- self.create_fdir_rule([rule1, rule2], check_stats=False)
- self.check_fdir_rule(0, stats=False)
+ rule2 = "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 2 / end"
+ out = self.pmd_output.execute_cmd(rule2)
+ self.verify(switch_flag in out, "switch rule should be created")
+ out = self.send_pkts_getouput(pkts=pkts[0])
+ rfc.check_mark(out, pkt_num=1, check_param={"port_id": 0, "queue": 1}, stats=True)
+ out = self.send_pkts_getouput(pkts=pkts[1])
+ rfc.check_mark(out, pkt_num=1, check_param={"port_id": 0, "queue": 2}, stats=True)
+
+ self.pmd_output.execute_cmd('flow flush 0')
+ out = self.pmd_output.execute_cmd(rule2)
+ self.verify(fdir_flag in out, "fdir rule should be created")
+ out = self.send_pkts_getouput(pkts=pkts[1])
+ rfc.check_mark(out, pkt_num=1, check_param={"port_id": 0, "queue": 2}, stats=True)
+ out = self.pmd_output.execute_cmd(rule1)
+ self.verify(switch_flag in out, "switch rule should be created")
+ out = self.send_pkts_getouput(pkts=pkts[1])
+ rfc.check_mark(out, pkt_num=1, check_param={"port_id": 0, "queue": 1}, stats=True)
+
+ def test_count_for_1_rule(self):
+ rule = ["flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / count / end",
+ "flow create 1 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end"]
+ rule_li = self.create_fdir_rule(rule, check_stats=True)
+ out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY['match'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['match']), check_param={"port_id": 0, "queue": 1},
+ stats=True)
+ out = self.send_pkts_getouput(port_id=1, pkts=MAC_IPV4_PAY['match'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['match']), check_param={"port_id": 1, "rss": True},
+ stats=True)
+
+ out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY['unmatched'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['unmatched']), check_param={"port_id": 0, "rss": True},
+ stats=False)
+ out = self.send_pkts_getouput(port_id=1, pkts=MAC_IPV4_PAY['unmatched'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['unmatched']), check_param={"port_id": 1, "rss": True},
+ stats=False)
+ self.query_count(1, 2, 0, 0)
+ self.query_count(1, 2, 1, 0)
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=['0'])
+ self.check_fdir_rule(port_id=1, stats=True, rule_list=['0'])
+ self.destroy_fdir_rule(0, ['0'])
+ self.destroy_fdir_rule(1, ['0'])
+ out = self.send_pkts_getouput(pkts=MAC_IPV4_PAY['match'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['match']), check_param={"port_id": 0, "rss": True},
+ stats=False)
+ out = self.send_pkts_getouput(port_id=1, pkts=MAC_IPV4_PAY['match'])
+ rfc.check_mark(out, pkt_num=len(MAC_IPV4_PAY['match']), check_param={"port_id": 0, "rss": True},
+ stats=False)
+ self.check_fdir_rule(stats=False)
+ self.check_fdir_rule(port_id=1, stats=False)
+ out = self.pmd_output.execute_cmd("flow query 0 0 count")
+ self.verify("Flow rule #0 not found" in out, "query should failed")
+ out = self.pmd_output.execute_cmd("flow query 1 0 count")
+ self.verify("Flow rule #0 not found" in out, "query should failed")
def test_count_query_identifier_share(self):
rule1 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions queue index 1 / count identifier 0x1234 shared on / end'
- rule2 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions queue index 2 / count identifier 0x1234 shared on / end'
- rule3 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions queue index 3 / count identifier 0x1234 shared off / end'
- rule4 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions queue index 4 / count identifier 0x1234 / end'
+ rule2 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions rss queues 2 3 end / count identifier 0x1234 shared on / end'
+ rule3 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions passthru / mark / count identifier 0x1234 shared off / end'
+ rule4 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions mark id 1 / rss / count identifier 0x1234 / end'
rule5 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.5 / end actions queue index 5 / count shared on / end'
rule6 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.6 / end actions drop / count shared on / end'
rule7 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.7 / end actions drop / count identifier 0x1235 shared on / end'
+ rule8 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.8 / end actions rss / count / end'
pkt1 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.1",dst="192.168.0.21") / Raw("x" * 80)'
pkt2 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.2",dst="192.168.0.21") / Raw("x" * 80)'
@@ -1287,23 +1839,26 @@ class TestCVLFdir(TestCase):
pkt5 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.5",dst="192.168.0.21") / Raw("x" * 80)'
pkt6 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.6",dst="192.168.0.21") / Raw("x" * 80)'
pkt7 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.21") / Raw("x" * 80)'
+ pkt8 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.8",dst="192.168.0.21") / Raw("x" * 80)'
- res = self.create_fdir_rule([rule1, rule2, rule3, rule4, rule5, rule6, rule7])
+ res = self.create_fdir_rule([rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8], check_stats=True)
self.verify(all(res), "create rules failed, result: %s" % res)
out1 = self.send_pkts_getouput(pkt1, count=10)
- rfc.check_queue(out1, pkt_num=10, check_param={"queue": 1}, stats=True)
+ rfc.check_mark(out1, pkt_num=10, check_param={"queue": 1}, stats=True)
out2 = self.send_pkts_getouput(pkt2, count=10)
- rfc.check_queue(out2, pkt_num=10, check_param={"queue": 2}, stats=True)
+ rfc.check_mark(out2, pkt_num=10, check_param={"queue": [2, 3]}, stats=True)
out3 = self.send_pkts_getouput(pkt3, count=10)
- rfc.check_queue(out3, pkt_num=10, check_param={"queue": 3}, stats=True)
+ rfc.check_mark(out3, pkt_num=10, check_param={"mark_id": 0, "rss": True}, stats=True)
out4 = self.send_pkts_getouput(pkt4, count=10)
- rfc.check_queue(out4, pkt_num=10, check_param={"queue": 4}, stats=True)
+ rfc.check_mark(out4, pkt_num=10, check_param={"mark_id": 1, "rss": True}, stats=True)
out5 = self.send_pkts_getouput(pkt5, count=10)
- rfc.check_queue(out5, pkt_num=10, check_param={"queue": 5}, stats=True)
- out6 = self.send_pkts_getouput(pkt6, count=10)
+ rfc.check_mark(out5, pkt_num=10, check_param={"queue": 5}, stats=True)
+ out6 = self.send_pkts_getouput(pkt6, count=10, drop=True)
rfc.check_drop(out6, pkt_num=10, check_param={"port_id": 0})
- out7 = self.send_pkts_getouput(pkt7, count=10)
+ out7 = self.send_pkts_getouput(pkt7, count=10, drop=True)
rfc.check_drop(out7, pkt_num=10, check_param={"port_id": 0})
+ out8 = self.send_pkts_getouput(pkt8, count=10)
+ rfc.check_mark(out8, pkt_num=10, check_param={"rss": True}, stats=True)
self.query_count(1, 20, 0, 0)
self.query_count(1, 20, 0, 1)
@@ -1312,26 +1867,26 @@ class TestCVLFdir(TestCase):
self.query_count(1, 20, 0, 4)
self.query_count(1, 20, 0, 5)
self.query_count(1, 10, 0, 6)
+ self.query_count(1, 10, 0, 7)
self.check_fdir_rule(0, stats=True, rule_list=res)
self.dut.send_command("flow flush 0", timeout=1)
- out = self.send_pkts_getouput(pkts=[pkt1, pkt2, pkt3, pkt4, pkt5])
- rfc.check_queue(out, pkt_num=5, check_param={"port_id": 0, "queue": list(range(1, 6))}, stats=False)
- out6 = self.send_pkts_getouput(pkt6, count=10)
- rfc.check_drop(out6, pkt_num=10, check_param={"port_id": 0}, stats=False)
- out7 = self.send_pkts_getouput(pkt7, count=10)
- rfc.check_drop(out7, pkt_num=10, check_param={"port_id": 0}, stats=False)
-
self.check_fdir_rule(stats=False)
- def test_multi_patterns_count_query(self):
- rule1 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / count / end'
- rule2 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / count / end'
- rule3 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 62 63 end / count / end'
- rule4 = 'flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / count / end'
- rule5 = 'flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 3 / count / end'
- rule6 = 'flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 / tcp dst is 23 / end actions queue index 4 / count / end'
- rule7 = 'flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 5 / count / end'
+ self.send_pkts_getouput(pkts=[pkt1, pkt2, pkt3, pkt4, pkt5, pkt6, pkt7, pkt8])
+ out = self.pmd_output.execute_cmd("flow query 0 0 count")
+ self.verify("Flow rule #0 not found" in out, "query should failed")
+
+ def test_multi_patterns_mark_count_query(self):
+ rule1 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 0 / count / end'
+ rule2 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop / mark id 1 / count / end'
+ rule3 = 'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss queues 62 63 end / mark id 2 / count / end'
+ rule4 = 'flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / mark id 3 / count / end'
+ rule5 = 'flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 3 / mark id 4 / count / end'
+ rule6 = 'flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is 192.168.0.20 / tcp dst is 23 / end actions queue index 4 / count / mark id 5 / end'
+ rule7 = 'flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 5 / mark id 6 / count / end'
+ rule8 = 'flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \
+ 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 end / mark id 100 / count / end'
pkt1 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21") /TCP(sport=22, dport=23)/ Raw("x" * 80)'
pkt2 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21") /UDP(sport=22, dport=23)/ Raw("x" * 80)'
@@ -1340,203 +1895,361 @@ class TestCVLFdir(TestCase):
pkt5 = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=4790)/VXLAN(flags=0xc)/IP(dst="192.168.0.21", src="192.168.0.20")/UDP(sport=22,dport=23)/("X"*480)'
pkt6 = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20")/TCP(dport=23)/("X"*480)'
pkt7 = 'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether()/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP(sport=22,dport=23)/("X"*480)'
+ pkt8 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/Raw("x"*20)'
- res = self.create_fdir_rule(rule=[rule1, rule2, rule3, rule4, rule5, rule6, rule7], check_stats=True)
+ res = self.create_fdir_rule(rule=[rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8], check_stats=True)
self.verify(all(res), "create rules failed, result %s" % res)
out = self.send_pkts_getouput(pkts=pkt1, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": 1}, stats=True)
- out = self.send_pkts_getouput(pkts=pkt2, count=10)
+ rfc.check_mark(out, pkt_num=10, check_param={"queue": 1, "mark_id": 0}, stats=True)
+ out = self.send_pkts_getouput(pkts=pkt2, count=10, drop=True)
rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0})
out = self.send_pkts_getouput(pkts=pkt3, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": [62, 63]}, stats=True)
+ rfc.check_mark(out, pkt_num=10, check_param={"queue": [62, 63], "mark_id": 2}, stats=True)
out = self.send_pkts_getouput(pkts=pkt4, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": 1}, stats=True)
+ rfc.check_mark(out, pkt_num=10, check_param={"queue": 1, "mark_id": 3}, stats=True)
out = self.send_pkts_getouput(pkts=pkt5, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": 3}, stats=True)
+ rfc.check_mark(out, pkt_num=10, check_param={"queue": 3, "mark_id": 4}, stats=True)
out = self.send_pkts_getouput(pkts=pkt6, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": 4}, stats=True)
+ rfc.check_mark(out, pkt_num=10, check_param={"queue": 4, "mark_id": 5}, stats=True)
out = self.send_pkts_getouput(pkts=pkt7, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": 5}, stats=True)
+ rfc.check_mark(out, pkt_num=10, check_param={"queue": 5, "mark_id": 6}, stats=True)
+ out = self.send_pkts_getouput(port_id=1, pkts=pkt8, count=10)
+ rfc.check_mark(out, pkt_num=10, check_param={"port_id": 1, "rss": True, "mark_id": 100}, stats=True)
for i in range(7):
self.query_count(1, 10, port_id=0, rule_id=i)
- self.check_fdir_rule(port_id=0, stats=True, rule_list=res)
+ self.query_count(1, 10, port_id=1, rule_id=0)
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=res[:-1])
+ self.dut.send_command("flow flush 0", timeout=1)
+ self.check_fdir_rule(stats=False)
+
+ self.send_pkts_getouput(pkts=[pkt1, pkt2, pkt3, pkt4, pkt5, pkt6, pkt7, pkt8])
+ out = self.pmd_output.execute_cmd("flow query 0 0 count")
+ self.verify("Flow rule #0 not found" in out, "query should failed")
+
+ def test_max_count_number(self):
+ pattern = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.{} / end actions drop / count / end"
+ rules = [pattern.format(i) for i in range(1, 256)] + [
+ "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions drop / count / end"]
+ res = self.create_fdir_rule(rules, check_stats=True)
+
+ rule2 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions drop / count / end'
+ self.create_fdir_rule(rule2, check_stats=False, msg="No free counter found", validate=False)
+ pkt = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1",dst="192.168.0.21") / Raw("x" * 80)'
+ out = self.send_pkts_getouput(pkt, count=10, drop=True)
+ rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0}, stats=True)
+ self.query_count(1, 10, port_id=0, rule_id=255)
+ self.check_fdir_rule(0, stats=True, rule_list=res)
self.dut.send_command("flow flush 0", timeout=1)
- out = self.send_pkts_getouput(pkts=pkt1, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"queue": 1}, stats=False)
- out = self.send_pkts_getouput(pkts=pkt2, count=10)
+ out = self.send_pkts_getouput(pkt, count=10, drop=True)
rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0}, stats=False)
- out = self.send_pkts_getouput(pkts=pkt3, count=1)
- rfc.check_queue(out, pkt_num=1, check_param={"queue": [62, 63]}, stats=False)
- out = self.send_pkts_getouput(pkts=[pkt4, pkt5, pkt6, pkt7], count=1)
- rfc.check_queue(out, pkt_num=4, check_param={"queue": [1, 3, 4, 5]}, stats=False)
self.check_fdir_rule(stats=False)
+ self.dut.send_command("stop", timeout=2)
+ self.dut.send_command("quit", timeout=2)
+ self.launch_testpmd_with_mark()
+
+ def test_same_rule_on_two_ports(self):
+ rule = [
+ 'flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions queue index 1 / mark / end',
+ 'flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions queue index 1 / mark / end']
+ self.create_fdir_rule(rule=rule, check_stats=True)
+ p_gtpu1 = 'Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/Raw("x"*20)'
+ out1 = self.send_pkts_getouput(pkts=p_gtpu1, port_id=0)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True)
+ out2 = self.send_pkts_getouput(pkts=p_gtpu1, port_id=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 1, "queue": 1, "mark_id": 0}, stats=True)
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=['0'])
+ self.check_fdir_rule(port_id=1, stats=True, rule_list=['0'])
+ self.destroy_fdir_rule(port_id=0)
+ self.check_fdir_rule(port_id=0, stats=False)
+ self.check_fdir_rule(port_id=1, stats=True, rule_list=['0'])
+ out1 = self.send_pkts_getouput(pkts=p_gtpu1, port_id=0)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "rss": True}, stats=False)
+ out2 = self.send_pkts_getouput(pkts=p_gtpu1, port_id=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 1, "queue": 1, "mark_id": 0}, stats=True)
+ self.destroy_fdir_rule(port_id=1)
+ self.check_fdir_rule(port_id=0, stats=False)
+ self.check_fdir_rule(port_id=1, stats=False)
+ out1 = self.send_pkts_getouput(pkts=p_gtpu1, port_id=0)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "rss": True}, stats=False)
+ out2 = self.send_pkts_getouput(pkts=p_gtpu1, port_id=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 1, "queue": 1, "rss": True}, stats=False)
+
+ def test_same_intput_set_different_actions_on_two_ports(self):
+ rule = [
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end',
+ 'flow create 1 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark id 1 / end']
+ self.create_fdir_rule(rule=rule, check_stats=True)
+ pkt = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw("x" * 80)'
+ out1 = self.send_pkts_getouput(pkts=pkt, port_id=0)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 1}, stats=True)
+ out2 = self.send_pkts_getouput(pkts=pkt, port_id=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 1, "queue": [2, 3], "mark_id": 1}, stats=True)
+ self.pmd_output.execute_cmd('flow flush 0')
+ self.pmd_output.execute_cmd('flow flush 1')
+ self.check_fdir_rule(0, False)
+ self.check_fdir_rule(1, False)
+ out1 = self.send_pkts_getouput(pkts=pkt, port_id=0)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "rss": True}, stats=False)
+ out2 = self.send_pkts_getouput(pkts=pkt, port_id=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 1, "queue": [2, 3], "rss": True}, stats=False)
def test_two_ports_multi_patterns_count_query(self):
rules = [
- 'flow create 1 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 255 tos is 4 / end actions queue index 1 / count / end',
- 'flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss queues 6 7 end / count / end',
- 'flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss queues 6 7 end / count / end',
- 'flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 2 / count / end',
+ 'flow create 1 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 255 tos is 4 / end actions queue index 1 / mark id 1 / count identifier 0x1234 shared on / end',
+ 'flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / sctp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 2 / count identifier 0x1234 shared on / end',
+ 'flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / udp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 1 / count / end',
+ 'flow create 1 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 2 / mark / count / end',
'flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / count / end',
'flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions drop / count / end',
- 'flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / count / end'
- ]
+ 'flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 1 / mark id 1 / count identifier 0x1234 shared on / end']
pkts = [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255, ttl=2, tos=4) / Raw("x" * 80)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/TCP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1, hlim=2)/TCP(sport=22,dport=23)/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(src="192.168.0.20", dst="192.168.0.21")/("X"*480)',
'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2, tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=1, tc=1, hlim=2)/("X"*480)',
- 'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2, tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)'
- ]
- res = self.create_fdir_rule(rule=rules, check_stats=True)
- out = self.send_pkts_getouput(pkts[0], port_id=1, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"port_id": 1, "queue": 1}, stats=True)
- out = self.send_pkts_getouput(pkts[1:3], port_id=1, count=10)
- rfc.check_queue(out, pkt_num=20, check_param={"port_id": 1, "queue": [6, 7]}, stats=True)
- out = self.send_pkts_getouput(pkts[3], port_id=1, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"port_id": 1, "queue": 2}, stats=True)
- out = self.send_pkts_getouput(pkts[4], port_id=1, count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 1})
- out = self.send_pkts_getouput(pkts[5], count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0})
- out = self.send_pkts_getouput(pkts[6], count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"port_id": 0, "queue": 1}, stats=True)
- out = self.send_pkts_getouput(pkts[7], port_id=1, count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 1}, stats=False)
-
+ 'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2, tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)']
+
+ self.create_fdir_rule(rule=rules, check_stats=True)
+
+ out1 = self.send_pkts_getouput(pkts[0], port_id=1, count=10)
+ rfc.check_mark(out1, pkt_num=10, check_param={"port_id": 1, "queue": 1, "mark_id": 1})
+ out2 = self.send_pkts_getouput(pkts[1], port_id=1, count=10)
+ rfc.check_mark(out2, pkt_num=10, check_param={"port_id": 1, "queue": [6, 7], "mark_id": 2})
+ out3 = self.send_pkts_getouput(pkts[2], port_id=1, count=10)
+ rfc.check_mark(out3, pkt_num=10, check_param={"port_id": 1, "queue": [6, 7], "mark_id": 1})
+ out4 = self.send_pkts_getouput(pkts[3], port_id=1, count=10)
+ rfc.check_mark(out4, pkt_num=10, check_param={"port_id": 1, "queue": 2, "mark_id": 0})
+ out5 = self.send_pkts_getouput(pkts[4], port_id=1, count=10, drop=True)
+ rfc.check_mark(out5, pkt_num=10, check_param={"port_id": 1, "drop": True})
+ out6 = self.send_pkts_getouput(pkts[5], port_id=0, count=10, drop=True)
+ rfc.check_mark(out6, pkt_num=10, check_param={"port_id": 0, "drop": True})
+ out7 = self.send_pkts_getouput(pkts[6], port_id=0, count=10)
+ rfc.check_mark(out7, pkt_num=10, check_param={"port_id": 0, "queue": 1, "mark_id": 1})
+ out8 = self.send_pkts_getouput(pkts[7], port_id=1, count=10)
+ rfc.check_mark(out8, pkt_num=10, check_param={"port_id": 1, "mark_id": 0})
+ self.query_count(1, 20, 1, 0)
+ self.query_count(1, 20, 1, 1)
+ self.query_count(1, 10, 1, 2)
+ self.query_count(1, 10, 1, 3)
+ self.query_count(1, 10, 1, 4)
+ self.query_count(1, 10, 0, 0)
+ self.query_count(1, 10, 0, 1)
+ self.check_fdir_rule(port_id=1, stats=True, rule_list=list(map(str, range(5))))
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=list(map(str, range(2))))
+ self.pmd_output.execute_cmd("flow flush 0")
+ self.pmd_output.execute_cmd("flow flush 1")
+ out1 = self.send_pkts_getouput(pkts=pkts[:5].append(pkts[7]), port_id=1, count=10)
+ rfc.check_mark(out1, pkt_num=60, check_param={"port_id": 1}, stats=False)
+ out2 = self.send_pkts_getouput(pkts=pkts[5:7], port_id=0, count=10)
+ rfc.check_mark(out2, pkt_num=20, check_param={"port_id": 0}, stats=False)
+ self.check_fdir_rule(port_id=0, stats=False)
+ self.check_fdir_rule(port_id=1, stats=False)
for i in range(5):
- self.query_count(1, 10, 1, i)
+ out = self.pmd_output.execute_cmd("flow query %s %s count" % (1, i))
+ self.verify("Flow rule #%s not found" % i in out, "expect not rule found, result %s" % out)
for i in range(2):
- self.query_count(1, 10, 0, i)
- self.check_fdir_rule(port_id=0, stats=True, rule_list=res[0:2])
- self.check_fdir_rule(port_id=1, stats=True, rule_list=res[2:])
-
- self.dut.send_command("flow flush 0", timeout=1)
- self.dut.send_command("flow flush 1", timeout=1)
-
- out = self.send_pkts_getouput(pkts[0], port_id=1, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"port_id": 1, "queue": 1}, stats=False)
- out = self.send_pkts_getouput(pkts[1:3], port_id=1, count=10)
- rfc.check_queue(out, pkt_num=20, check_param={"port_id": 1, "queue": [6, 7]}, stats=False)
- out = self.send_pkts_getouput(pkts[3], port_id=1, count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"port_id": 1, "queue": 2}, stats=False)
- out = self.send_pkts_getouput(pkts[4], port_id=1, count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 1}, stats=False)
- out = self.send_pkts_getouput(pkts[5], count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0}, stats=False)
- out = self.send_pkts_getouput(pkts[6], count=10)
- rfc.check_queue(out, pkt_num=10, check_param={"port_id": 0, "queue": 1}, stats=False)
- out = self.send_pkts_getouput(pkts[7], port_id=0, count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0}, stats=False)
- self.check_fdir_rule(0, stats=False)
- self.check_fdir_rule(1, stats=False)
+ out = self.pmd_output.execute_cmd("flow query %s %s count" % (0, i))
+ self.verify("Flow rule #%s not found" % i in out, "expect not rule found, result %s" % out)
+
+ def test_port_stop_start_reset(self):
+ rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end"
+ rule_li = self.create_fdir_rule(rule=rule, check_stats=True)
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=rule_li)
+ pkt = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21") / Raw("x" * 80)'
+ out1 = self.send_pkts_getouput(pkts=pkt, port_id=0, count=1)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True)
+ self.pmd_output.execute_cmd("port stop 0")
+ self.pmd_output.execute_cmd("port start 0")
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=rule_li)
+ out2 = self.send_pkts_getouput(pkts=pkt, port_id=0, count=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True)
+
+ def test_add_delete_rules(self):
+ self.pmd_output.execute_cmd("stop")
+ self.dut.send_command("quit", timeout=2)
+ cmd_path = '/tmp/add_delete_rules'
+ cmds = [
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end',
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark id 1 / end',
+ 'flow list 0', 'flow flush 0'] * 15360
+ cmds_li = map(lambda x: x + os.linesep, cmds)
+ with open(cmd_path, 'w') as f:
+ f.writelines(cmds_li)
+ self.dut.session.copy_file_to(cmd_path, cmd_path)
+ try:
+ eal_param = self.dut.create_eal_parameters(cores="1S/4C/1T", ports=[self.pci0 + ",flow-mark-support=1",
+ self.pci1 + ",flow-mark-support=1"],
+ socket=self.ports_socket)
+ param = " -- -i --portmask=%s --rxq=%d --txq=%d --port-topology=loop --cmdline-file=%s" % (
+ self.portMask, 64, 64, cmd_path)
+ command_line = self.dut.target + "/app/testpmd " + eal_param + param
+ out = self.dut.send_expect(command_line, 'testpmd>', timeout=600)
+ self.verify('Failed to create file' not in out, "create some rule failed: %s" % out)
+ self.config_testpmd()
+ self.pmd_output.execute_cmd('start')
+ rules = [
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end',
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark id 1 / end']
+ rule_li = self.create_fdir_rule(rule=rules, check_stats=True)
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=rule_li)
+ pkts = [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw("x" * 80)']
+ out1 = self.send_pkts_getouput(pkts=pkts[0], port_id=0, count=1)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True)
+ out2 = self.send_pkts_getouput(pkts=pkts[1], port_id=0, count=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "queue": [2, 3], "mark_id": 1}, stats=True)
+ except Exception as e:
+ raise Exception(e)
+ finally:
+ self.dut.kill_all()
+ self.launch_testpmd_with_mark()
- def test_multirules_mark(self):
+ def test_delete_rules(self):
rules = [
- "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end",
- "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 2 / mark id 1 / end",
- "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end actions queue index 1 / mark id 2 / count / end"]
-
- pkt1 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)'
- pkt2 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw("x" * 80)'
- pkt3 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw("x" * 80)'
-
- res = self.create_fdir_rule(rules, check_stats=True)
-
- out1 = self.send_pkts_getouput(pkt1, mark=True)
- rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "mark_id": 1, "queue": 1}, stats=True)
-
- out2 = self.send_pkts_getouput(pkt2, mark=True)
- rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "mark_id": 1, "queue": 2}, stats=True)
-
- out3 = self.send_pkts_getouput(pkt3, mark=True)
- rfc.check_mark(out3, pkt_num=1, check_param={"port_id": 0, "mark_id": 2, "queue": 1}, stats=True)
-
- self.query_count(1, 1, port_id=0, rule_id=2)
- self.check_fdir_rule(0, stats=True, rule_list=res)
- self.destroy_fdir_rule(port_id=0, rule_id=0)
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end',
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 24 / end actions queue index 2 / mark / end',
+ 'flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 25 / end actions queue index 3 / mark / end']
+ pkts = [
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.56.0",dst="192.1.0.0",tos=4)/TCP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.56.0",dst="192.1.0.0",tos=4)/TCP(sport=22,dport=24)/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.56.0",dst="192.1.0.0",tos=4)/TCP(sport=22,dport=25)/Raw("x" * 80)']
+ queues = [1, 2, 3]
+
+ for i in range(3):
+ rule_li = self.create_fdir_rule(rule=rules, check_stats=True)
+ rule_li2 = copy.copy(rule_li)
+ pkts2 = copy.copy(pkts)
+ queues2 = copy.copy(queues)
+ self.check_fdir_rule(rule_list=rule_li)
+ out1 = self.send_pkts_getouput(pkts=pkts[0], port_id=0, count=1)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True)
+ out2 = self.send_pkts_getouput(pkts=pkts[1], port_id=0, count=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "queue": 2, "mark_id": 0}, stats=True)
+ out3 = self.send_pkts_getouput(pkts=pkts[2], port_id=0, count=1)
+ rfc.check_mark(out3, pkt_num=1, check_param={"port_id": 0, "queue": 3, "mark_id": 0}, stats=True)
+ self.destroy_fdir_rule(port_id=0, rule_id=i)
+ rule_li2.pop(i)
+ pkts2.pop(i)
+ queues2.pop(i)
+ self.check_fdir_rule(rule_list=rule_li2)
+ out1 = self.send_pkts_getouput(pkts=pkts[i], port_id=0, count=1)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": queues[i], "mark_id": 0}, stats=False)
+ out2 = self.send_pkts_getouput(pkts=pkts2[0], port_id=0, count=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "queue": queues2[0], "mark_id": 0}, stats=True)
+ out3 = self.send_pkts_getouput(pkts=pkts2[1], port_id=0, count=1)
+ rfc.check_mark(out3, pkt_num=1, check_param={"port_id": 0, "queue": queues2[1], "mark_id": 0}, stats=True)
+ self.pmd_output.execute_cmd("flow flush 0")
+ out1 = self.send_pkts_getouput(pkts=pkts[0], port_id=0, count=1)
+ rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=False)
+ out2 = self.send_pkts_getouput(pkts=pkts[1], port_id=0, count=1)
+ rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "queue": 2, "mark_id": 0}, stats=False)
+ out3 = self.send_pkts_getouput(pkts=pkts[2], port_id=0, count=1)
+ rfc.check_mark(out3, pkt_num=1, check_param={"port_id": 0, "queue": 3, "mark_id": 0}, stats=False)
+
+ def test_max_rules(self):
+ rule_pattern = "flow create 0 ingress pattern eth / ipv4 src is 192.168.100.20 dst is 192.168.%d.%d / end actions queue index 1 / mark / end"
+ rules = list()
+ pkt_pattern = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.100.20",dst="192.168.%d.%d")/Raw("x" * 80)'
+ pkts2 = list()
+ for i in range(60):
+ for j in range(256):
+ rules.append(rule_pattern % (i, j))
+ pkts2.append(pkt_pattern % (i, j))
+ cmd_path = '/tmp/test_max_rules'
+ cmd_li = map(lambda x: x + os.linesep, rules)
+ with open(cmd_path, 'w') as f:
+ f.writelines(cmd_li)
+ self.pmd_output.execute_cmd("stop")
+ self.dut.send_command("quit", timeout=2)
+ self.dut.session.copy_file_to(cmd_path, cmd_path)
+ try:
+ out = self.pmd_output.start_testpmd(cores="1S/4C/1T",
+ param="--portmask=%s --rxq=%d --txq=%d --port-topology=loop --cmdline-file=%s" % (
+ self.portMask, 64, 64, cmd_path),
+ eal_param="-w %s,flow-mark-support=1 -w %s,flow-mark-support=1" % (
+ self.pci0, self.pci1), socket=self.ports_socket)
+ self.verify('Failed to create file' not in out, "create some rule failed: %s" % out)
+ self.config_testpmd()
+ self.pmd_output.execute_cmd('start')
+ rule = "flow create 0 ingress pattern eth / ipv4 src is 192.168.100.20 dst is 192.168.60.0 / end actions queue index 1 / mark / end"
+ self.create_fdir_rule(rule=rule, check_stats=False, msg='Failed to create flow', validate=False)
+ rule_li = list(map(str, range(15360)))
+ self.check_fdir_rule(port_id=0, stats=True, rule_list=rule_li)
+ pkts = ['Ether(dst="00:11:22:33:44:55")/IP(src="192.168.100.20",dst="192.168.0.0")/Raw("x" * 80)',
+ 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.100.20",dst="192.168.59.255")/Raw("x" * 80)']
+ out1 = self.send_pkts_getouput(pkts=pkts, port_id=0, count=1)
+ rfc.check_mark(out1, pkt_num=2, check_param={"port_id": 0, "queue": 1, "mark_id": 0}, stats=True)
+ self.pmd_output.execute_cmd("flow flush 0")
+ self.check_fdir_rule(port_id=0, stats=False)
+ out = self.send_pkts_getouput(pkts=pkts2, port_id=0, count=1)
+ rfc.check_mark(out, pkt_num=len(pkts2), check_param={"port_id": 0, "mark_id": 0}, stats=False)
+ except Exception as e:
+ raise Exception(e)
+ finally:
+ self.dut.kill_all()
+ self.launch_testpmd_with_mark()
- out1 = self.send_pkts_getouput(pkt1, mark=True)
- rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "mark_id": 1, "queue": 1}, stats=False)
+ def test_mac_ipv4_pay(self):
+ self._rte_flow_validate(vectors_ipv4_pay)
- self.check_fdir_rule(0, stats=True, rule_list=res[1:])
- out2 = self.send_pkts_getouput(pkt2, mark=True)
- rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "mark_id": 1, "queue": 2}, stats=True)
+ def test_mac_ipv4_udp(self):
+ self._rte_flow_validate(vectors_ipv4_udp)
- out3 = self.send_pkts_getouput(pkt3, mark=True)
- rfc.check_mark(out3, pkt_num=1, check_param={"port_id": 0, "mark_id": 2, "queue": 1}, stats=True)
+ def test_mac_ipv4_tcp(self):
+ import pudb
+ pudb.set_trace()
+ self._rte_flow_validate(vectors_ipv4_tcp)
- self.query_count(1, 2, port_id=0, rule_id=2)
- self.dut.send_command("flow flush 0", timeout=1)
+ def test_mac_ipv4_sctp(self):
+ self._rte_flow_validate((vectors_ipv4_sctp))
- out1 = self.send_pkts_getouput(pkt1, mark=True)
- rfc.check_mark(out1, pkt_num=1, check_param={"port_id": 0, "mark_id": 1, "queue": 1}, stats=False)
+ def test_mac_ipv6_pay(self):
+ self._rte_flow_validate(vectors_ipv6_pay)
- out2 = self.send_pkts_getouput(pkt2, mark=True)
- rfc.check_mark(out2, pkt_num=1, check_param={"port_id": 0, "mark_id": 1, "queue": 2}, stats=False)
+ def test_mac_ipv6_udp(self):
+ self._rte_flow_validate(vectors_ipv6_udp)
- out3 = self.send_pkts_getouput(pkt3, mark=True)
- rfc.check_mark(out3, pkt_num=1, check_param={"port_id": 0, "mark_id": 2, "queue": 1}, stats=False)
+ def test_mac_ipv6_tcp(self):
+ self._rte_flow_validate(vectors_ipv6_tcp)
- self.check_fdir_rule(stats=False)
+ def test_mac_ipv6_sctp(self):
+ self._rte_flow_validate(vectors_ipv6_sctp)
- def test_mark_wrong_parameters(self):
- rule = "flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 4294967296 / end"
- self.create_fdir_rule(rule=rule, check_stats=False)
- self.check_fdir_rule(stats=False)
+ def test_mac_ipv4_tun_ipv4_pay(self):
+ self._rte_flow_validate(vectors_ipv4_tun_ipv4_pay)
- def test_pattern_conflict_flow(self):
- rule1 = "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions queue index 1 / end"
- self.create_fdir_rule(rule=rule1, check_stats=True)
- pkt1 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw("x" * 80)'
- pkt2 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21") /UDP(sport=22, dport=23)/ Raw("x" * 80)'
- out1 = self.send_pkts_getouput(pkts=[pkt1, pkt2])
- rfc.check_queue(out1, pkt_num=2, check_param={"port_id": 0, "queue": 1}, stats=True)
+ def test_mac_ipv4_tun_ipv4_udp(self):
+ self._rte_flow_validate(vectors_ipv4_tun_ipv4_udp)
- rule2 = "flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 2 / end"
- self.create_fdir_rule(rule=rule2, check_stats=True)
- out2 = self.send_pkts_getouput(pkt1)
- rfc.check_queue(out2, pkt_num=1, check_param={"port_id": 0, "queue": 1}, stats=True)
+ def test_mac_ipv4_tun_ipv4_tcp(self):
+ self._rte_flow_validate(vectors_ipv4_tun_ipv4_tcp)
- out3 = self.send_pkts_getouput(pkt2)
- rfc.check_queue(out3, pkt_num=1, check_param={"port_id": 0, "queue": 2}, stats=True)
+ def test_mac_ipv4_tun_ipv4_sctp(self):
+ self._rte_flow_validate(vectors_ipv4_tun_ipv4_sctp)
- self.dut.send_command("flow flush 0", timeout=1)
+ def test_mac_ipv4_tun_mac_ipv4_pay(self):
+ self._rte_flow_validate(vectors_mac_ipv4_tun_mac_ipv4_pay)
- self.create_fdir_rule(rule=rule2, check_stats=True)
- out4 = self.send_pkts_getouput(pkt2)
- rfc.check_queue(out4, pkt_num=1, check_param={"port_id": 0, "queue": 2}, stats=True)
+ def test_mac_ipv4_tun_mac_ipv4_udp(self):
+ self._rte_flow_validate(vectors_mac_ipv4_tun_mac_ipv4_udp)
- self.create_fdir_rule(rule=rule1, check_stats=True)
- out5 = self.send_pkts_getouput(pkt2)
- rfc.check_queue(out5, pkt_num=1, check_param={"port_id": 0, "queue": 1}, stats=True)
+ def test_mac_ipv4_tun_mac_ipv4_tcp(self):
+ self._rte_flow_validate(vectors_mac_ipv4_tun_mac_ipv4_tcp)
- def test_max_count(self):
- pattern = "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.{} / end actions drop / count / end"
- rules = [pattern.format(i) for i in range(1, 256)] + [
- "flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions drop / count / end"]
- res = self.create_fdir_rule(rules, check_stats=True)
+ def test_mac_ipv4_tun_mac_ipv4_sctp(self):
+ self._rte_flow_validate(vectors_mac_ipv4_tun_mac_ipv4_sctp)
- rule2 = 'flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions drop / count / end'
- res2 = self.create_fdir_rule(rule2, check_stats=False)
+ def test_mac_ipv4_gtpu_eh(self):
+ self._rte_flow_validate(vectors_mac_ipv4_gtpu_eh)
- pkt = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1",dst="192.168.0.21") / Raw("x" * 80)'
- out = self.send_pkts_getouput(pkt, count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0}, stats=True)
- self.query_count(1, 10, port_id=0, rule_id=255)
- self.check_fdir_rule(0, stats=True, rule_list=res)
- self.dut.send_command("flow flush 0", timeout=1)
- out = self.send_pkts_getouput(pkt, count=10)
- rfc.check_drop(out, pkt_num=10, check_param={"port_id": 0}, stats=False)
- self.check_fdir_rule(stats=False)
- self.dut.send_command("stop", timeout=2)
- self.dut.send_command("quit", timeout=2)
- self.launch_testpmd_with_mark()
+ def test_mac_ipv4_gtpu(self):
+ self._rte_flow_validate(vectors_mac_ipv4_gtpu)
def tear_down(self):
# destroy all flow rule on port 0
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [dts] [PATCH V2 3/3]tests/rte_flow_common: update rte_flow_common for cvl fdir
2020-06-02 6:37 [dts] [PATCH V2 0/3] update cvl fdir related scripts Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 1/3]test_plans/cvl_fdir_test_plan: update cvl fdir testplan Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 2/3]tests/TestSuite_cvl_fdir: update cvl fdir script Xiao Qimai
@ 2020-06-02 6:37 ` Xiao Qimai
2020-06-03 2:29 ` [dts] [PATCH V2 0/3] update cvl fdir related scripts Tu, Lijuan
3 siblings, 0 replies; 5+ messages in thread
From: Xiao Qimai @ 2020-06-02 6:37 UTC (permalink / raw)
To: dts; +Cc: Xiao Qimai
Signed-off-by: Xiao Qimai <qimaix.xiao@intel.com>
---
tests/rte_flow_common.py | 102 ++++++++++++++++++++++++++++++++---------------
1 file changed, 70 insertions(+), 32 deletions(-)
diff --git a/tests/rte_flow_common.py b/tests/rte_flow_common.py
index fb1a245..5a45a7d 100644
--- a/tests/rte_flow_common.py
+++ b/tests/rte_flow_common.py
@@ -324,35 +324,37 @@ def verify(passed, description):
if not passed:
raise AssertionError(description)
-def check_queue(out, pkt_num, check_param, stats=True):
+
+def check_queue(out, check_param, stats=True):
port_id = check_param["port_id"] if check_param.get("port_id") is not None else 0
queue = check_param["queue"]
- p = re.compile(
- r"Forward Stats for RX Port= %s/Queue=(\s?\d+)\s.*\n.*RX-packets:(\s?\d+)\s+TX-packets" % port_id)
+ p = re.compile(r"port\s+%s/queue(.+?):\s+received\s+(\d+)\s+packets" % port_id)
res = p.findall(out)
if res:
- res_queue = [int(i[0]) for i in res]
- pkt_li = [int(i[1]) for i in res]
- res_num = sum(pkt_li)
- verify(res_num == pkt_num, "fail: got wrong number of packets, expect pakcet number %s, got %s." % (pkt_num, res_num))
+ pkt_queue = set([int(i[0]) for i in res])
if stats:
if isinstance(queue, int):
- verify(all(q == queue for q in res_queue), "fail: queue id not matched, expect queue %s, got %s" % (queue, res_queue))
- print((GREEN("pass: queue id %s matched" % res_queue)))
+ verify(all(q == queue for q in pkt_queue),
+ "fail: queue id not matched, expect queue %s, got %s" % (queue, pkt_queue))
+ print((GREEN("pass: queue id %s matched" % pkt_queue)))
elif isinstance(queue, list):
- verify(all(q in queue for q in res_queue), "fail: queue id not matched, expect queue %s, got %s" % (queue, res_queue))
- print((GREEN("pass: queue id %s matched" % res_queue)))
+ verify(all(q in queue for q in pkt_queue),
+ "fail: queue id not matched, expect queue %s, got %s" % (queue, pkt_queue))
+ print((GREEN("pass: queue id %s matched" % pkt_queue)))
else:
raise Exception("wrong queue value, expect int or list")
else:
if isinstance(queue, int):
- verify(not any(q == queue for q in res_queue), "fail: queue id should not matched, expect queue %s, got %s" % (queue, res_queue))
- print((GREEN("pass: queue id %s not matched" % res_queue)))
+ verify(not any(q == queue for q in pkt_queue),
+ "fail: queue id should not matched, expect queue %s, got %s" % (queue, pkt_queue))
+ print((GREEN("pass: queue id %s not matched" % pkt_queue)))
elif isinstance(queue, list):
- verify(not any(q in queue for q in res_queue), "fail: each queue in %s should not in queue %s" % (res_queue, queue))
- print((GREEN("pass: queue id %s not matched" % res_queue)))
+ verify(not any(q in queue for q in pkt_queue),
+ "fail: each queue in %s should not in queue %s" % (pkt_queue, queue))
+ print((GREEN("pass: queue id %s not matched" % pkt_queue)))
else:
raise Exception("wrong action value, expect queue_index or queue_group")
+ return pkt_queue
else:
raise Exception("got wrong output, not match pattern %s" % p.pattern)
@@ -365,34 +367,70 @@ def check_drop(out, pkt_num, check_param, stats=True):
pkt_li = p.findall(out)
if pkt_li:
res = {k: v for k, v in zip(title_li, list(map(int, list(pkt_li[0]))))}
- verify(pkt_num == res["rx-total"], "failed: get wrong amount of packet %d, expected %d" % (res["rx-total"], pkt_num))
+ verify(pkt_num == res["rx-total"],
+ "failed: get wrong amount of packet %d, expected %d" % (res["rx-total"], pkt_num))
if stats:
verify(res["rx-dropped"] == pkt_num, "failed: dropped packets number %s not match" % res["rx-dropped"])
else:
- verify(res["rx-dropped"] == 0 and res["rx-packets"] == pkt_num, "failed: dropped packets number should be 0")
+ verify(res["rx-dropped"] == 0 and res["rx-packets"] == pkt_num,
+ "failed: dropped packets number should be 0")
else:
raise Exception("got wrong output, not match pattern %s" % p.pattern)
def check_mark(out, pkt_num, check_param, stats=True):
- mark_scanner = "FDIR matched ID=(0x\w+)"
- res = re.findall(mark_scanner, out[0])
+ mark_id = check_param.get("mark_id")
+ queue = check_param.get("queue")
+ rss_flag = check_param.get("rss")
+ rxq = check_param['rxq'] if check_param.get("rxq") is not None else 64
+ drop_flag = check_param.get("drop")
+ port_id = check_param["port_id"] if check_param.get("port_id") is not None else 0
+ fdir_scanner = re.compile("FDIR matched ID=(0x\w+)")
+ fdir_flag = fdir_scanner.search(out)
+ pkt_queue = None
if stats:
- if check_param.get("queue") is not None:
- check_queue(out[1], pkt_num, check_param, stats)
- mark_list = [i[0] for i in res]
- verify(len(res) == pkt_num, "get wrong number of packet with mark_id")
- verify(all([int(i, 16) == check_param["mark_id"] for i in res]),
- "failed: some packet mark id of %s not match" % mark_list)
+ if drop_flag is None:
+ p = re.compile(r"port\s+%s/queue(.+?):\s+received\s+(\d+)\s+packets" % port_id)
+ res = p.findall(out)
+ if res:
+ pkt_li = [int(i[1]) for i in res]
+ res_num = sum(pkt_li)
+ verify(res_num == pkt_num,
+ "fail: got wrong number of packets, expect pakcet number %s, got %s." % (pkt_num, res_num))
+ else:
+ raise Exception("got wrong output, not match pattern %s" % p.pattern)
+ if mark_id is not None:
+ mark_list = set(int(i, 16) for i in fdir_scanner.findall(out))
+ verify(all([i == check_param["mark_id"] for i in mark_list]),
+ "failed: some packet mark id of %s not match" % mark_list)
+ else:
+ verify(not fdir_flag, "output should not include mark id")
+ if queue is not None:
+ check_queue(out, check_param, stats)
+ if rss_flag:
+ pkt_queue = verify_directed_by_rss(out, rxq, stats=True)
else:
- check_drop(out[1], pkt_num, check_param, stats)
- verify(not res, "should has no mark_id in %s" % res)
+ check_drop(out, pkt_num, check_param, stats)
+ verify(not fdir_flag, "should has no mark_id in %s" % out)
else:
- if check_param.get("queue") is not None:
- check_queue(out[1], pkt_num, check_param, stats)
+ if drop_flag is None:
+ pkt_queue = verify_directed_by_rss(out, rxq, stats=True)
else:
- check_drop(out[1], pkt_num, check_param, stats)
- verify(not res, "should has no mark_id in %s" % res)
+ check_drop(out, pkt_num, check_param, stats)
+ verify(not fdir_flag, "should has no mark_id in %s" % out)
+ return pkt_queue
+
+
+def verify_directed_by_rss(out, rxq=64, stats=True):
+ p = re.compile('RSS\shash=(\w+)\s-\sRSS\squeue=(\w+)')
+ pkt_info = p.findall(out)
+ pkt_queue = set([int(i[1], 16) for i in pkt_info])
+ if stats:
+ verify(all([int(i[0], 16) % rxq == int(i[1], 16) for i in pkt_info]), 'some pkt not directed by rss.')
+ else:
+ verify(not any([int(i[0], 16) % rxq == int(i[1], 16) for i in pkt_info]), 'some pkt directed by rss')
+ return pkt_queue
+
# IAVF fdir common functions
def check_iavf_fdir_queue(out, pkt_num, check_param, stats=True):
@@ -632,4 +670,4 @@ def check_pf_rss_queue(out, count):
if packet_sumnum == count and len(queue_num) == 10:
return True
else:
- return False
\ No newline at end of file
+ return False
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [dts] [PATCH V2 0/3] update cvl fdir related scripts
2020-06-02 6:37 [dts] [PATCH V2 0/3] update cvl fdir related scripts Xiao Qimai
` (2 preceding siblings ...)
2020-06-02 6:37 ` [dts] [PATCH V2 3/3]tests/rte_flow_common: update rte_flow_common for cvl fdir Xiao Qimai
@ 2020-06-03 2:29 ` Tu, Lijuan
3 siblings, 0 replies; 5+ messages in thread
From: Tu, Lijuan @ 2020-06-03 2:29 UTC (permalink / raw)
To: Xiao, QimaiX, dts; +Cc: Xiao, QimaiX
Applied the series, thanks
> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Xiao Qimai
> Sent: Tuesday, June 2, 2020 2:37 PM
> To: dts@dpdk.org
> Cc: Xiao, QimaiX <qimaix.xiao@intel.com>
> Subject: [dts] [PATCH V2 0/3] update cvl fdir related scripts
>
> *. update cvl fdir script, testplan and rte_flow_common
>
> Xiao Qimai (3):
> update cvl fdir testplan
> update cvl fdir script
> update rte_flow_common for cvl fdir
>
> test_plans/cvl_fdir_test_plan.rst | 240 ++--
> tests/TestSuite_cvl_fdir.py | 2469 ++++++++++++++++++++++++-------------
> tests/rte_flow_common.py | 102 +-
> 3 files changed, 1780 insertions(+), 1031 deletions(-)
>
> --
> 1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-06-03 2:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02 6:37 [dts] [PATCH V2 0/3] update cvl fdir related scripts Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 1/3]test_plans/cvl_fdir_test_plan: update cvl fdir testplan Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 2/3]tests/TestSuite_cvl_fdir: update cvl fdir script Xiao Qimai
2020-06-02 6:37 ` [dts] [PATCH V2 3/3]tests/rte_flow_common: update rte_flow_common for cvl fdir Xiao Qimai
2020-06-03 2:29 ` [dts] [PATCH V2 0/3] update cvl fdir related scripts Tu, Lijuan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).