17. ICE: Advanced RSS FOR VLAN/ESP/AH/L2TP/PFCP¶
17.1. Description¶
- Enable RSS for VLAN/ESP/AH/L2TP/PFCP packets.
17.1.1. Pattern and input set¶
Hash function: toeplitz | ||
---|---|---|
Packet Type | Pattern | All the Input Set options in combination |
VLAN | MAC_VLAN_IPV4_PAY | c-vlan |
MAC_VLAN_IPV4_UDP_PAY | c-vlan | |
MAC_VLAN_IPV4_TCP_PAY | c-vlan | |
MAC_VLAN_IPV4_SCTP_PAY | c-vlan | |
MAC_VLAN_IPV6_PAY | c-vlan | |
MAC_VLAN_IPV6_UDP_PAY | c-vlan | |
MAC_VLAN_IPV6_TCP_PAY | c-vlan | |
MAC_VLAN_IPV6_SCTP_PAY | c-vlan | |
ESP | MAC_IPV4_ESP | esp |
MAC_IPV4_UDP_ESP | esp | |
MAC_IPV6_ESP | esp | |
MAC_IPV6_UDP_ESP | esp | |
AH | MAC_IPV4_AH | ah |
MAC_IPV6_AH | ah | |
L2TP | MAC_IPV4_L2TPv3 | l2tpv3 |
MAC_IPV6_L2TPv3 | l2tpv3 | |
PFCP | MAC_IPV4_PFCP_SESSION | pfcp |
MAC_IPV6_PFCP_SESSION | pfcp |
17.2. Prerequisites¶
- Hardware:
- Intel® Ethernet 800 Series: E810-XXVDA4/E810-CQ
- Software:
- DDP Package Preparation
- copy correct
ice.pkg
into/lib/firmware/updates/intel/ice/ddp/
. - unbind, then bind device back to ice.ko to update ddp package in the NIC.
- copy correct
Warning
Need unbind all ports in NIC, then bind device back to ice.ko
Note
comms/wireless package not support l2tp/pfcp cases, as default(os) package not support esp/ah cases.
Bind pf to dpdk driver:
./usertools/dpdk-devbind.py -b vfio-pci 0000:18:00.0
Launch the testpmd in DUT for cases with toeplitz hash function:
./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:18:00.0 -- -i --rxq=16 --txq=16 --disable-rss testpmd> port config 0 rss-hash-key ipv4 1b9d58a4b961d9cd1c56ad1621c3ad51632c16a5d16c21c3513d132c135d132c13ad1531c23a51d6ac49879c499d798a7d949c8a testpmd> set fwd rxonly testpmd> set verbose 1 testpmd> start
Launch testpmd for cases with symmetric_toeplitz and simple_xor hash function:
./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a 0000:18:00.0 -- -i --rxq=16 --txq=16
on tester side, copy the layer python file to /root:
cp pfcp.py to /root then import layers when start scapy:: >>> import sys >>> sys.path.append('/root') >>> from pfcp import PFCP
17.3. Test case: MAC_IPV4_PFCP_SESSION¶
validate a rule for RSS type of MAC_IPV4_PFCP_SESSION:
testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV4_PFCP_SESSION:
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_IPV4_PFCP_SESSION packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)],iface="ens786f0")
change the field [SEID], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw("x"*80)],iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:54")/IP(src="192.168.0.25",dst="192.168.0.23")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)],iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)],iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)],iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.4. Test case: MAC_IPV6_PFCP_SESSION¶
validate a rule for RSS type of MAC_IPV6_PFCP_SESSION:
testpmd> flow validate 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV6_PFCP_SESSION:
testpmd> flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_IPV6_PFCP_SESSION packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)],iface="ens786f0")
change the field [SEID], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=2)/Raw("x"*80)],iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)],iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=8805)/PFCP(Sfield=1, SEID=1)/Raw("x"*80)],iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)],iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.5. Test case: MAC_IPV4_L2TPv3¶
validate a rule for RSS type of MAC_IPV4_L2TPv3:
testpmd> flow validate 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV4_L2TPv3:
testpmd> flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_IPV4_L2TPv3 packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0")
change the field [session_id], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.4", proto=115)/L2TP('\x00\x00\x00\x12')/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.5",dst="192.168.0.7", proto=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22,dport=25)/Raw("x"*80)],iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.6. Test case: MAC_IPV6_L2TPv3¶
validate a rule for RSS type of MAC_IPV6_L2TPv3:
testpmd> flow validate 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV6_L2TPv3:
testpmd> flow create 0 ingress pattern eth / ipv6 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_IPV6_L2TPv3 packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0")
change the field [session_id], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=115)/L2TP('\x00\x00\x00\x12')/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=22,dport=25)/Raw("x"*80)],iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.7. Test case: MAC_IPV4_ESP¶
validate a rule for RSS type of MAC_IPV4_ESP:
testpmd> flow validate 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV4_ESP:
testpmd> flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list
send matched packets
MAC_IPV4_ESP packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
change the field [spi], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7",proto=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5", proto=115)/L2TP('\x00\x00\x00\x11')/Raw("x"*480)], iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.8. Test case: MAC_IPV4_UDP_ESP¶
validate a rule for RSS type of MAC_IPV4_UDP_ESP:
testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV4_UDP_ESP:
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / esp / end actions rss types esp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list
send matched packets
MAC_IPV4_UDP_ESP packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
change the field [spi], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.7")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0") sendp([Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)],iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.9. Test case: MAC_IPV6_ESP¶
validate a rule for RSS type of MAC_IPV6_ESP:
testpmd> flow validate 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV6_ESP:
testpmd> flow create 0 ingress pattern eth / ipv6 / esp / end actions rss types esp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list
send matched packets
MAC_IPV6_ESP packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
change the field [spi], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0") sendp([Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)],iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.10. Test case: MAC_IPV6_UDP_ESP¶
validate a rule for RSS type of MAC_IPV6_UDP_ESP:
testpmd> flow validate 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV6_UDP_ESP:
testpmd> flow create 0 ingress pattern eth / ipv6 / udp / esp / end actions rss types esp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list
send matched packets
MAC_IPV6_UDP_ESP packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
change the field [spi], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(dport=4500)/ESP(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(dport=4500)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0") sendp([Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)],iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=50)/ESP(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.11. Test case: MAC_IPV4_AH¶
validate a rule for RSS type of MAC_IPV4_AH:
testpmd> flow validate 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV4_AH:
testpmd> flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_IPV4_AH packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)], iface="ens786f0")
change the field [spi], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IP(src="192.168.0.4",dst="192.168.0.8",proto=51)/AH(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IP(src="192.168.0.3",dst="192.168.0.5")/UDP(sport=25,dport=23)/Raw("x"*80)],iface="ens786f0") sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.12. Test case: MAC_IPV6_AH¶
validate a rule for RSS type of MAC_IPV6_AH:
testpmd> flow validate 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_IPV6_AH:
testpmd> flow create 0 ingress pattern eth / ipv6 / ah / end actions rss types ah end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_IPV6_AH packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=11)/Raw("x"*480)], iface="ens786f0")
change the field [spi], send a packet:
sendp([Ether(dst="00:11:22:33:44:55")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022", nh=51)/AH(spi=12)/Raw("x"*480)], iface="ens786f0")
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(dst="00:11:22:33:44:53")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023", nh=51)/AH(spi=11)/Raw("x"*480)], iface="ens786f0")
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.3",dst="192.168.0.5",proto=51)/AH(spi=11)/Raw("x"*480)], iface="ens786f0") sendp([Ether(src="00:11:22:33:44:55", dst="10:22:33:44:55:66")/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x"*80)],iface="ens786f0")
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists in the list. send the matched packets, check the hash values of the packets are not exist.
17.13. Test case: MAC_VLAN_IPV4_PAY¶
17.13.1. Subcase: MAC_VLAN_IPV4_PAY_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV4_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.13.2. Subcase: MAC_VLAN_IPV4_PAY_L3DST¶
validate a rule for RSS type of MAC_VLAN_IPV4_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l3 dst address], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.3")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash value is different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.14. Test case: MAC_VLAN_IPV4_UDP_PAY¶
17.14.1. Subcase: MAC_VLAN_IPV4_UDP_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_UDP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.14.2. Subcase: MAC_VLAN_IPV4_UDP_L3SRC¶
validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_UDP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l3 src address], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.14.3. Subcase: MAC_VLAN_IPV4_UDP_L4DST¶
validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_UDP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l4 dst address], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=24)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.15. Test case: MAC_VLAN_IPV4_TCP_PAY¶
17.15.1. Subcase: MAC_VLAN_IPV4_TCP_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_TCP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/TCP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.15.2. Subcase: MAC_VLAN_IPV4_TCP_l3SRC_L4SRC¶
validate a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_TCP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l3 src address and l4 sport], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=22,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.16. Test case: MAC_VLAN_IPV4_SCTP_PAY¶
17.16.1. Subcase: MAC_VLAN_IPV4_SCTP_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_SCTP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.5")/SCTP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.16.2. Subcase: MAC_VLAN_IPV4_SCTP_ALL¶
validate a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV4_SCTP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [ipv4-sctp], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.4")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values of the packets not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.17. Test case: MAC_VLAN_IPV6_PAY¶
17.17.1. Subcase: MAC_VLAN_IPV6_PAY_vlan¶
validate a rule for RSS type of MAC_VLAN_IPV6_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.17.2. Subcase: MAC_VLAN_IPV6_PAY_L3SRC¶
validate a rule for RSS type of MAC_VLAN_IPV6_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l3 src address], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.18. Test case: MAC_VLAN_IPV6_UDP_PAY¶
17.18.1. Subcase: MAC_VLAN_IPV6_UDP_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_UDP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=23,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.18.2. Subcase: MAC_VLAN_IPV6_UDP_L4SRC¶
validate a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_UDP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l4 src address], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.19. Test case: MAC_VLAN_IPV6_TCP_PAY¶
17.19.1. Subcase: MAC_VLAN_IPV6_TCP_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_TCP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.19.2. Subcase: MAC_VLAN_IPV6_TCP_L3DST¶
validate a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_TCP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l3 dst address], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values of the packets are not exist.
17.20. Test case: MAC_VLAN_IPV6_SCTP_PAY¶
17.20.1. Subcase: MAC_VLAN_IPV6_SCTP_VLAN¶
validate a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types c-vlan end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_SCTP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [VLAN ID], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values the packets are not exist.
17.20.2. Subcase: MAC_VLAN_IPV6_SCTP_L3DST_L4DST¶
validate a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY:
testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end
get the message:
Flow rule validated
check the flow list:
testpmd> flow list 0
check the rule not exists in the list.
create a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY:
testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end testpmd> flow list 0
check the rule exists in the list.
send matched packets
MAC_VLAN_IPV6_SCTP_PAY packet:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
change the field [l3 dst address and l4 dport], send packets:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are different from the first packet. change other fields, send packets:
sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values are the same as the first packet.
send packets mismatched the pattern:
sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1) sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
check the hash values not exist.
destroy the rule:
testpmd> flow destroy 0 rule 0 testpmd> flow list 0
check the rule not exists. send the matched packets, check the hash values the packets are not exist.
17.21. Test case: negative cases¶
17.21.1. Subcase 1: wrong hash input set¶
validate a rule with wrong input set:
testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end
get the error message:
Invalid input set: Invalid argument
create a rule with wrong hash input set:
testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / end actions rss types l2-src-only l2-dst-only end key_len 0 queues end / end
Failed to create flow, report error message:
Invalid input set: Invalid argument
validate a rule with wrong hash type:
testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end
get the error message:
Invalid input set: Invalid argument
create a rule with wrong hash type:
testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss types ipv4-tcp end key_len 0 queues end / end
Failed to create flow, report error message:
Invalid input set: Invalid argument
validate a rule with wrong symmetric hash input set:
testpmd> flow validate 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end
get the error message:
Invalid input set: Invalid argument
create a rule with wrong symmetric hash input set:
testpmd> flow create 0 ingress pattern eth / pppoes / ipv4 / udp / end actions rss func symmetric_toeplitz types ipv4-udp l3-src-only end key_len 0 queues end / end
Failed to create flow, report error message:
Invalid input set: Invalid argument
check the rule list:
testpmd> flow list 0
there is no listed.
17.21.2. Subcase 2: void action¶
validate a rule with void action:
testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end
get the error message:
NULL action.: Invalid argument
create a rule with void action:
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions end
Failed to create flow, report message:
NULL action.: Invalid argument
check the rule list:
testpmd> flow list 0
there is no rule listed.
17.21.3. Subcase 3: delete a non-existing rule¶
show the rule list of port 0:
testpmd> flow list 0
There is no rule listed.
destroy rule 0 of port 0:
testpmd> flow destroy 0 rule 0
There is no error message reported.
flush rules of port 0:
testpmd> flow flush 0
There is no error message reported.
17.21.4. Subcase 4: unsupported pattern with OS default package¶
load os default package and launch testpmd as step 3-5 in Prerequisites.
validate unsupported patterns in OS default package:
testpmd> flow validate 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end testpmd> flow validate 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end testpmd> flow validate 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end testpmd> flow validate 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end
get the error message:
Invalid input pattern: Invalid argument
create unsupported patterns in OS default package:
testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end testpmd> flow create 0 ingress pattern eth / ipv4 / l2tpv3oip / end actions rss types l2tpv3 end key_len 0 queues end / end testpmd> flow create 0 ingress pattern eth / ipv4 / esp / end actions rss types esp end key_len 0 queues end / end testpmd> flow create 0 ingress pattern eth / ipv4 / ah / end actions rss types ah end key_len 0 queues end / end
check the rule list:
testpmd> flow list 0
there is no rule listed.
17.21.5. Subcase 5: invalid port¶
create a rule with invalid port:
testpmd> flow create 1 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end
Failed to create flow, report message:
No such device: No such device
check the rule list on port 0:
testpmd> flow list 0
there is no rule listed. check on port 1:
testpmd> flow list 1
get the error message:
Invalid port 1