70. ICE:advanced iavf with FDIR capability

Support flow director to steering packets to queue/queue group in iavf Enable fdir filter for IPv4/IPv6 + TCP/UDP/SCTP (OS default package) Enable fdir filter for GTP (comm #1 package) Enable fdir filter for L2 Ethertype (comm #1 package) Enable fdir filter for PFCP (comm #1 package) Enable fdir filter for IPv4/IPv6 + GRE + IPV4/IPV6 + TCP/UDP

70.1. Description

70.1.1. Pattern and input set

Packet Type Pattern Input Set
IPv4/IPv6 + TCP/UDP/SCTP MAC_IPV4_PAY [Source IP], [Dest IP], [IP protocol], [TTL], [DSCP]
  MAC_IPV4_UDP [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port]
  MAC_IPV4_TCP [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port]
  MAC_IPV4_SCTP [Source IP], [Dest IP], [TTL], [DSCP], [Source Port], [Dest Port]
  MAC_IPV6_PAY [Source IP], [Dest IP], [IP protocol], [TTL], [TC]
  MAC_IPV6_UDP [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]
  MAC_IPV6_TCP [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]
  MAC_IPV6_SCTP [Source IP], [Dest IP], [TTL], [TC], [Source Port], [Dest Port]
L2 Ethertype L2 Ethertype [Ethertype]
PFCP MAC_IPV4_PFCP_NODE [Dest Port], [S-field]
  MAC_IPV4_PFCP_SESSION [Dest Port], [S-field]
  MAC_IPV6_PFCP_NODE [Dest Port], [S-field]
  MAC_IPV6_PFCP_SESSION [Dest Port], [S-field]
L2TPv3 MAC_IPV4_L2TPv3 [Session ID]
  MAC_IPV6_L2TPv3 [Session ID]
ESP MAC_IPV4_ESP [Source IP], [Dest IP], [SPI]
  MAC_IPV6_ESP [Source IP], [Dest IP], [SPI]
  MAC_IPV4_AH [SPI]
  MAC_IPV6_AH [SPI]
  MAC_IPV4_NAT-T-ESP [Source IP], [Dest IP], [SPI]
  MAC_IPV6_NAT-T-ESP [Source IP], [Dest IP], [SPI]
IPv4 + GTP-U outer MAC_IPV4_GTPU outer:[Source IP], [Dest IP], [TEID]
  MAC_IPV4_GTPU_EH outer:[Source IP], [Dest IP], [TEID], [QFI]
IPv6 + GTP-U outer MAC_IPV6_GTPU outer:[Source IPV6], [Dest IPV6], [TEID]
  MAC_IPV6_GTPU_EH outer:[Source IPV6], [Dest IPV6], [TEID], [QFI]
IPv4 + GTP-U + inner IPv4 MAC_IPV4_GTPU_IPV4 inner:[Source IP], [Dest IP]
  MAC_IPV4_GTPU_IPV4_UDP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_IPV4_TCP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_IPV4 inner:[Source IP], [Dest IP]
  MAC_IPV4_GTPU_EH_IPV4_UDP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_IPV4_TCP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_DL_IPV4 inner:[Source IP], [Dest IP]
  MAC_IPV4_GTPU_EH_DL_IPV4_UDP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_DL_IPV4_TCP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_UL_IPV4 inner:[Source IP], [Dest IP]
  MAC_IPV4_GTPU_EH_UL_IPV4_UDP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_UL_IPV4_TCP inner:[Source IP], [Dest IP], [Source Port], [Dest Port]
IPv4 + GTP-U + inner IPv6 MAC_IPV4_GTPU_IPV6 inner:[Source IPv6], [Dest IPv6]
  MAC_IPV4_GTPU_IPV6_UDP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_IPV6_TCP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_IPV6 inner:[Source IPv6], [Dest IPv6]
  MAC_IPV4_GTPU_EH_IPV6_UDP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_IPV6_TCP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_UL_IPV6 inner:[Source IPv6], [Dest IPv6]
  MAC_IPV4_GTPU_EH_UL_IPV6_UDP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_UL_IPV6_TCP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_UL_IPV6 inner:[Source IPv6], [Dest IPv6]
  MAC_IPV4_GTPU_EH_UL_IPV6_UDP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
  MAC_IPV4_GTPU_EH_UL_IPV6_TCP inner:[Source IPv6], [Dest IPv6], [Source Port], [Dest Port]
IPV4/IPV6+GRE+IPV4/IPV6 MAC_IPV4_GRE_IPV4 [Inner Source IP], [Inner Dest IP], [Inner DSCP]
  MAC_IPV6_GRE_IPV4 [Inner Source IP], [Inner Dest IP], [Inner DSCP]
  MAC_IPV4_GRE_IPV6 [Inner Source IP], [Inner Dest IP], [Inner TC]
  MAC_IPV6_GRE_IPV6 [Inner Source IP], [Inner Dest IP], [Inner TC]
IPV4/IPV6+GRE+IPV4/IPV6+TCP MAC_IPV4_GRE_IPV4_TCP [Inner Source IP], [Inner Dest IP], [Inner DSCP], [Inner Source Port], [Inner Dest Port]
  MAC_IPV6_GRE_IPV4_TCP [Inner Source IP], [Inner Dest IP], [Inner DSCP], [Inner Source Port], [Inner Dest Port]
  MAC_IPV4_GRE_IPV6_TCP [Inner Source IP], [Inner Dest IP], [Inner TC], [Inner Source Port], [Inner Dest Port]
  MAC_IPV6_GRE_IPV6_TCP [Inner Source IP], [Inner Dest IP], [Inner TC], [Inner Source Port], [Inner Dest Port]
IPV4/IPV6+GRE+IPV4/IPV6+UDP MAC_IPV4_GRE_IPV4_UDP [Inner Source IP], [Inner Dest IP], [Inner DSCP], [Inner Source Port], [Inner Dest Port]
  MAC_IPV6_GRE_IPV4_UDP [Inner Source IP], [Inner Dest IP], [Inner DSCP], [Inner Source Port], [Inner Dest Port]
  MAC_IPV4_GRE_IPV6_UDP [Inner Source IP], [Inner Dest IP], [Inner TC], [Inner Source Port], [Inner Dest Port]
  MAC_IPV6_GRE_IPV6_UDP [Inner Source IP], [Inner Dest IP], [Inner TC], [Inner Source Port], [Inner Dest Port]

70.1.2. Supported function type

validate create destroy flush list

70.1.3. Supported action type

queue index drop rss queues passthru mark mark/rss

70.2. Prerequisites

  1. Hardware: Intel® Ethernet Network Adapter E810-XXVDA4/Intel® Ethernet Network Adapter E810-CQDA2

  2. Software: DPDK: http://dpdk.org/git/dpdk scapy: http://www.secdev.org/projects/scapy/

  3. Copy specific ice package to /lib/firmware/intel/ice/ddp/ice.pkg Then reboot server, and compile DPDK

  4. Generate 2 VFs on each PF and set mac address for each VF:

    echo 2 > /sys/bus/pci/devices/0000:86:00.0/sriov_numvfs
    echo 2 > /sys/bus/pci/devices/0000:86:00.1/sriov_numvfs
    ip link set enp134s0f0 vf 0 mac 00:11:22:33:44:55
    ip link set enp134s0f0 vf 1 mac 00:11:22:33:44:66
    ip link set enp134s0f1 vf 0 mac 00:11:22:33:44:77
    ip link set enp134s0f1 vf 1 mac 00:11:22:33:44:88
    
    If test set HW checksum and SW checksum:
    ip link set enp24s0f0 vf 0 trust on
    ip link set enp24s0f0 vf 0 spoofchk off
    ip link set enp24s0f0 vf 1 trust on
    ip link set enp24s0f0 vf 1 spoofchk off
    

    0000:86:00.0 generate 0000:86:01.0 and 0000:86:01.1 0000:86:00.1 generate 0000:86:11.0 and 0000:86:11.1 define 86:01.0 as vf00, 86:01.1 as vf01, 86:11.0 as vf10, 86:11.1 as vf11. assign mac address of pf0 is 68:05:ca:a3:1a:60, assign mac address of pf1 is 68:05:ca:a3:1a:61.

  5. Bind VFs to dpdk driver:

    ./usertools/dpdk-devbind.py -b vfio-pci 86:01.0 86:01.1 86:11.0 86:11.1
    
  1. Launch the app testpmd with the following arguments:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 -a 86:01.1 --file-prefix=vf -- -i --rxq=16 --txq=16
    testpmd> set fwd rxonly
    testpmd> set verbose 1
    
  2. 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
    >>> from scapy.contrib.gtp import *
    >>> from scapy.contrib.mpls import *
    

70.2.1. Default parameters

VF00 MAC:

[Dest MAC]: 00:11:22:33:44:55
[Multicast Dest MAC]: 11:22:33:44:55:66

Note

The LSB of the first byte “11” is 1, it says it to be multicast MAC address.

VF01 MAC:

[Dest MAC]: 00:11:22:33:44:66

VF10 MAC:

[Dest MAC]: 00:11:22:33:44:77

VF11 MAC:

[Dest MAC]: 00:11:22:33:44:88

outer/inner IPv4:

[Source IP]: 192.168.0.20
[Dest IP]: 192.168.0.21
[Multicast Dest IPv4]: 224.0.0.1
[IP protocol]: 255
[TTL]: 2
[DSCP]: 4

outer/inner IPv6:

[Source IPv6]: 2001::2
[Dest IPv6]: CDCD:910A:2222:5498:8475:1111:3900:2020
[Multicast Dest IPv6]: ff01::2
[IP protocol]: 0
[TTL]: 2
[TC]: 1

UDP/TCP/SCTP:

[Source Port]: 22
[Dest Port]: 23

GTP-U data packet:

[TEID]: 0x12345678
[QFI]: 0x34

L2 Ethertype:

[Ethertype]: 0x8863 0x8864 0x0806 0x8100 0x88f7

PFCP:

[Dest Port]: 8805
[S-field]: 0/1

70.2.2. Send packets

  • MAC_IPV4_PAY

    matched packets:

    sendp([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)],iface="enp134s0f1")
    sendp([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)/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([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)],iface="enp134s0f1")
    sendp([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)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=1, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255, ttl=3, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=255, ttl=2, tos=9) / Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV4_PAY multicast

    matched packets:

    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.22",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1, ttl=2, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=3, tos=4) / Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=9) / Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV4_UDP

    matched packets:

    sendp([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)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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)],iface="enp134s0f1")
    sendp([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=21,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=64, tos=4) /UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=1) /UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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)],iface="enp134s0f1")
    
  • MAC_IPV4_TCP

    matched packets:

    sendp([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)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.20",dst="192.168.0.21", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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)],iface="enp134s0f1")
    sendp([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=21,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=64, tos=4) /TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=1) /TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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)],iface="enp134s0f1")
    
  • MAC_IPV4_SCTP

    matched packets:

    sendp([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)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.20",dst="192.168.0.21", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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)],iface="enp134s0f1")
    sendp([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=21,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=64, tos=4) /SCTP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=1) /SCTP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV6_PAY

    matched packets:

    sendp([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)], iface="enp134s0f1")
    sendp([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)/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    

    mismatched packets:

    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    
  • MAC_IPV6_PAY multicast

    matched packets:

    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::1", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::1", nh=0, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=2, tc=1, hlim=2)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=2, hlim=2)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=5)/("X"*480)], iface="enp134s0f1")
    
  • MAC_IPV6_UDP

    matched packets:

    sendp([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)], iface="enp134s0f1")
    

    mismatched packets:

    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=3, hlim=2)/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=1)/UDP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([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=21,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([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=24)/("X"*480)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    
  • MAC_IPV6_TCP

    matched packets:

    sendp([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)], iface="enp134s0f1")
    

    mismatched packets:

    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=3, hlim=2)/TCP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=1)/TCP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([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=21,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([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=24)/("X"*480)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    
  • MAC_IPV6_SCTP

    matched packets:

    sendp([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)], iface="enp134s0f1")
    

    mismatched packets:

    sendp([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)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=3, hlim=2)/SCTP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=1)/SCTP(sport=22,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([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=21,dport=23)/("X"*480)], iface="enp134s0f1")
    sendp([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=24)/("X"*480)], iface="enp134s0f1")
    sendp([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)], iface="enp134s0f1")
    sendp([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)/("X"*480)], iface="enp134s0f1")
    
  • MAC_IPV4_GTPU_EH

    matched packets:

    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=1, qos_flow=0x34)/IP()/Raw('x'*20)
    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=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x34)/IP(frag=1)/Raw('x'*20)
    p_gtpu3 = 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=1, qos_flow=0x34)/IP()/UDP()/Raw('x'*20)
    p_gtpu4 = 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=1, qos_flow=0x34)/IP()/TCP(sport=22,dport=23)/Raw('x'*20)
    p_gtpu5 = 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=1, qos_flow=0x34)/IP()/ICMP()/Raw('x'*20)
    p_gtpu6 = 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=1, qos_flow=0x34)/IPv6()/Raw('x'*20)
    p_gtpu7 = 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=1, qos_flow=0x34)/IPv6(nh=44)/Raw('x'*20)
    p_gtpu8 = 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=1, qos_flow=0x34)/IPv6()/UDP()/Raw('x'*20)
    p_gtpu9 = 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=1, qos_flow=0x34)/IPv6()/TCP(sport=22,dport=23)/Raw('x'*20)
    p_gtpu10 = 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=1, qos_flow=0x34)/IPv6()/ICMP()/Raw('x'*20)
    p_gtpu11 = 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=1, qos_flow=0x34)/Raw('x'*20)
    p_gtpu12 = 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=1, qos_flow=0x34)/IP()/SCTP(sport=22,dport=23)/Raw('x'*20)
    p_gtpu13 = 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=1, qos_flow=0x34)/IPv6()/SCTP(sport=22,dport=23)/Raw('x'*20)
    

    mismatched packets:

    p_gtpu12 = 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=1, qos_flow=0x34)/IP()/Raw('x'*20)
    p_gtpu13 = 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=1, qos_flow=0x35)/IP()/Raw('x'*20)
    p_gtpu14 = 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)
    
  • MAC_IPV4_GTPU

    matched packets:

    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)/IP()/Raw('x'*20)
    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=0x12345678)/IP(frag=1)/Raw('x'*20)
    p_gtpu3 = 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)
    p_gtpu4 = 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)
    p_gtpu5 = 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)
    p_gtpu6 = 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)
    p_gtpu7 = 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(nh=44)/Raw('x'*20)
    p_gtpu8 = 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)
    p_gtpu9 = 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)
    p_gtpu10 = 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)
    p_gtpu11 = 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)
    p_gtpu12 = 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(sport=22, dport=23)/Raw('x'*20)
    p_gtpu13 = 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(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    p_gtpu15 = 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)
    
  • MAC_IPV6_GTPU_EH

    matched packets:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/Raw('x'*20)
    p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
    p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu9 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu10 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x34)/IP()/SCTP(sport=22, dport=23)/Raw('x'*20)
    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    

    mismatched packets:

    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/Raw('x'*20)
    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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_gtpu13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/ICMP()/Raw('x'*20)
    p_gtpu14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::3", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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_gtpu15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/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)
    
  • MAC_IPV6_GTPU

    matched packets:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/Raw('x'*20)
    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP(frag=1)/Raw('x'*20)
    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/UDP()/Raw('x'*20)
    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/ICMP()/Raw('x'*20)
    p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/Raw('x'*20)
    p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
    p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/UDP()/Raw('x'*20)
    p_gtpu9 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
    p_gtpu10 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/ICMP()/Raw('x'*20)
    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/SCTP(sport=22, dport=23)/Raw('x'*20)
    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP( dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IPv6()/SCTP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x1234567)/IP()/Raw('x'*20)
    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::3", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/TCP()/Raw('x'*20)
    p_gtpu13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/UDP()/Raw('x'*20)
    
  • L2 Ethertype

    PPPoED packets:

    sendp([Ether(dst="00:11:22:33:44:55")/PPPoED()/PPP()/IP()/Raw('x' *80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55", type=0x8863)/IP()/Raw('x' * 80)],iface="enp134s0f1")
    

    PPPoE packets:

    sendp([Ether(dst="00:11:22:33:44:55")/PPPoE()/PPP(proto=0x0021)/IP()/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55", type=0x8864)/IP()/Raw('x' * 80)],iface="enp134s0f1")
    

    ARP packets:

    sendp([Ether(dst="00:11:22:33:44:55")/ARP(pdst="192.168.1.1")],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55", type=0x0806)/Raw('x' *80)],iface="enp134s0f1")
    

    EAPS packets:

    sendp([Ether(dst="00:11:22:33:44:55",type=0x8100)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)],iface="enp134s0f1")
    

    ieee1588 packet:

    sendp([Ether(dst="00:11:22:33:44:55",type=0x88f7)/"\\x00\\x02"], iface="enp134s0f1")
    
  • PFCP

    MAC_IPV4_PFCP_NODE:

    sendp(Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface="enp134s0f1")
    

    MAC_IPV4_PFCP_SESSION:

    sendp(Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=123),iface="enp134s0f1")
    

    MAC_IPV6_PFCP_NODE:

    sendp(Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface="enp134s0f1")
    

    MAC_IPV6_PFCP_NODE:

    sendp(Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=1, SEID=256),iface="enp134s0f1")
    
  • MAC_IPV4_L2TPv3

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.3', proto=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IP(src='192.168.1.3', proto=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src='192.168.0.3', proto=115)/L2TP('\\x00\\x00\\x00\\x12')/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV6_L2TPv3

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:8888',nh=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:9999',nh=115)/L2TP('\\x00\\x00\\x00\\x11')/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src='1111:2222:3333:4444:5555:6666:7777:8888',nh=115)/L2TP('\\x00\\x00\\x00\\x12')/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV4_ESP

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.20",dst="192.168.0.21",proto=50)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.22",dst="192.168.0.21",proto=50)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.20",dst="192.168.0.11",proto=50)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.20",dst="192.168.0.21",proto=50)/ESP(spi=17)/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV6_ESP

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::1",dst="2001::2",nh=50)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::8",dst="2001::2",nh=50)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::1",dst="2001::9",nh=50)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::1",dst="2001::2",nh=50)/ESP(spi=17)/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV4_AH

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.3",proto=51)/AH(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.1.3",proto=51)/AH(spi=7)/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.3",proto=51)/AH(spi=17)/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV6_AH

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888",nh=51)/AH(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="1111:2222:3333:4444:5555:6666:7777:9999",nh=51)/AH(spi=7)/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="1111:2222:3333:4444:5555:6666:7777:8888",nh=51)/AH(spi=17)/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV4_NAT-T-ESP

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.22",dst="192.168.0.21")/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.20",dst="192.168.0.11")/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(dport=4500)/ESP(spi=17)/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV6_NAT-T-ESP

    matched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::1",dst="2001::2")/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    

    mismatched packets:

    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::8",dst="2001::2")/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::1",dst="2001::9")/UDP(dport=4500)/ESP(spi=7)/Raw('x'*480),iface="enp134s0f1")
    sendp(Ether(dst='00:11:22:33:44:55')/IPv6(src="2001::1",dst="2001::2")/UDP(dport=4500)/ESP(spi=17)/Raw('x'*480),iface="enp134s0f1")
    
  • MAC_IPV4_GTPU_IPV4

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP()/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_IPV4_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=24, dport=25)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_IPV4_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=24, dport=25)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_IPV4

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_IPV4_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_IPV4_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_DL_IPV4

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_DL_IPV4_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_DL_IPV4_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_UL_IPV4

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21", frag=1)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP()/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/SCTP()/Raw('x'*20)
    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/Raw('x'*20)
    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_UL_IPV4_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/TCP(sport=25, dport=24)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/Raw('x'*20)
    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_UL_IPV4_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.22", dst="192.168.0.23")/UDP(sport=25, dport=24)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/Raw('x'*20)
    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_IPV6

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_IPV6_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_IPV6_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_IPV6

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_IPV6_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_IPV6_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_DL_IPV6

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
    pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_DL_IPV6_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_DL_IPV6_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt15 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_UL_IPV6

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP()/Raw('x'*20)
    pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/ICMP()/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/Raw('x'*20)
    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_UL_IPV6_TCP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/TCP(sport=24, dport=25)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/Raw('x'*20)
    
  • MAC_IPV4_GTPU_EH_UL_IPV6_UDP

    matched packets:

    pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    

    mismatched packets:

    pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
    pkt13 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::4", dst="CDCD:910A:2222:5498:8475:1111:3900:2024")/UDP(sport=24, dport=25)/Raw('x'*20)
    pkt14 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
    pkt16 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
    pkt17 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP(sport=22, dport=23)/Raw('x'*20)
    
  • MAC_IPV4_GRE_IPV4

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.22",dst="192.168.0.21", tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.23", tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=8)/Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV6_GRE_IPV4

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/GRE()/IP(src="192.168.0.22",dst="192.168.0.21", tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/GRE()/IP(src="192.168.0.20",dst="192.168.0.23", tos=4)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=8)/Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV4_GRE_IPV6

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="2001::2", tc=1)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::3", tc=1)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=2)/Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV4_GRE_IPV4_TCP

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.22",dst="192.168.0.21", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.23", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=8)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=4)/TCP(sport=21,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IP(src="192.168.0.20",dst="192.168.0.21", tos=4)/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    
  • MAC_IPV4_GRE_IPV6_TCP

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="2001::2", tc=1)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::3", tc=1)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=2))/TCP(sport=22,dport=23)Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1)/TCP(sport=21,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/GRE()/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", tc=1)/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    

70.3. Test case: flow validation

  1. validate MAC_IPV4_PAY with queue index 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 queue index 1 / end
    

    get the message without any error message:

    Flow rule validated
    
  2. repeat step 1 with all patterns in pattern and input set table, get the same result.

  3. repeat step 1-2 with action rss queues/drop/passthru/mark/mark+rss, get the same result.

  4. repeate step 1-3 with 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 queue index 1 / mark / 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 / end
    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark / end
    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark / rss / end
    

    get the message without any error message:

    Flow rule validated
    
  5. check the flow list:

    testpmd> flow list 0
    

    there is no rule listed.

70.4. Test case: negative validation

Note: some of the error messages may be differernt.

  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:

    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions end
    

    Failed to create flow, report message:

    Emtpy action: Invalid argument
    
  3. 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
    

    get the message:

    Unsupported action combination: Invalid argument
    
  4. 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
    

    get the message:

    Bad arguments
    
  5. 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
    

    get the message:

    Bad arguments
    
  6. invalid queue index:

    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 16 / end
    

    get the message:

    Invalid input action: Invalid argument
    
  7. invalid rss queues parameter

    Invalid number of queues:

    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 1 2 3 end / end
    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 0 end / end
    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 end / end
    

    get the message:

    Invalid input action: Invalid argument
    

    Discontinuous queues:

    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 1 2 3 5 end / end
    

    get the message:

    Discontinuous queue region: Invalid argument
    

    invalid rss queues index:

    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 15 16 end / end
    

    get the message:

    Invalid queue region indexes.: Invalid argument
    
  8. Invalid value of input set:

    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / gtp_psc qfi is 0x5 / end actions queue index 2 / end
    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 / end actions queue index 1 / end
    

    get the message:

    Bad arguments
    
  9. 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
    

    get the message:

    Add filter rule failed.: Operation not permitted
    
  10. invalid port:

    flow validate 1 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
    

get the message:

No such device: No such device
  1. check the flow list:

    testpmd> flow list 0
    
there is no rule listed.

70.5. Test case: MAC_IPV4_PAY pattern

70.5.1. Subcase 1: MAC_IPV4_PAY queue index

  1. create filter rules:

    flow create 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
    
  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.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 1 without FDIR matched ID. check there is no rule listed.

70.5.2. Subcase 2: MAC_IPV4_PAY rss queues

  1. create filter rules:

    flow create 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 / 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.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 2 or 3 without FDIR matched ID. check there is no rule listed.

70.5.3. Subcase 3: MAC_IPV4_PAY passthru

  1. create filter rules:

    flow create 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 / end
    
  2. send matched packets, check the packets are distributed by RSS 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 distributed to the same queue without FDIR matched ID=0x0. check there is no rule listed.

70.5.4. Subcase 4: MAC_IPV4_PAY drop

  1. create filter rules:

    flow create 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 drop / end
    
  2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.5.5. Subcase 5: MAC_IPV4_PAY mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 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 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. check there is no rule listed.

70.5.6. Subcase 6: MAC_IPV4_PAY mark

  1. create filter rules:

    flow create 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 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.5.7. Subcase 7: MAC_IPV4_PAY protocal

  1. create filter 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
    
  2. send matched packets:

    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.19",dst="192.168.0.21", 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", proto=17)/TCP(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", proto=17)/Raw('x' * 80)
    

    check the pkt1 and pkt2 are redirected to queue 1 with FDIR matched ID=0x1. check the pkt3-pkt6 are distributed by RSS with FDIR matched ID=0x3. send mismatched packets:

    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)/UDP(sport=22,dport=23)/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", ttl=2, tos=4)/SCTP()/Raw('x' * 80)
    

    check the packets received have not FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets have not FDIR matched ID. check there is no rule listed.

70.6. Test case: MAC_IPV4_UDP pattern

70.6.1. Subcase 1: MAC_IPV4_UDP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / 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 0 / 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 distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.6.2. Subcase 2: MAC_IPV4_UDP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.6.3. Subcase 3: MAC_IPV4_UDP passthru

  1. create filter rule with mark:

    flow create 0 ingress pattern eth / 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
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x1. 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. check there is no rule listed.

70.6.4. Subcase 4: MAC_IPV4_UDP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / 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
    
  2. send matched packet, check the packet is dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.6.5. Subcase 5: MAC_IPV4_UDP mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 0 ingress pattern eth / 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
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x2 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. check there is no rule listed.

70.6.6. Subcase 6: MAC_IPV4_UDP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / 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
    
  2. repeat the step 2-3 of in subcase 3, get the same result.

70.7. Test case: MAC_IPV4_TCP pattern

  1. replace “udp” with “tcp” in all the subcases of MAC_IPV4_UDP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_UDP pattern.
  3. get the same result.

70.8. Test case: MAC_IPV4_SCTP pattern

  1. replace “udp” with “sctp” in all the subcases of MAC_IPV4_UDP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_UDP pattern.
  3. get the same result.

70.9. Test case: MAC_IPV6_PAY pattern

70.9.1. Subcase 1: MAC_IPV6_PAY queue index

  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 proto is 0 hop is 2 tc is 1 / end actions queue index 15 / mark / end
    
  2. send matched packets, check the packets is distributed to queue 15 with 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:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.9.2. Subcase 2: MAC_IPV6_PAY 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 proto is 0 hop is 2 tc is 1 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark / end
    
  2. send matched packets, check the packets is distributed to queue 8-15 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 distributed by RSS without FDIR matched ID. check there is no rule listed.

70.9.3. Subcase 3: MAC_IPV6_PAY 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 proto is 0 hop is 2 tc is 1 / 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 . check there is no rule listed.

70.9.4. Subcase 4: MAC_IPV6_PAY 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 proto is 0 hop is 2 tc is 1 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.9.5. Subcase 5: MAC_IPV6_PAY mark+rss

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 proto is 0 hop is 2 tc is 1 / 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. check there is no rule listed.

70.9.6. Subcase 6: MAC_IPV6_PAY 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 proto is 0 hop is 2 tc is 1 / end actions mark / end
    
  2. repeat the steps of passthru with mark part in subcase 3, get the same result.

70.9.7. 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 proto is 17 / end actions rss queues 5 6 end / mark id 0 / 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="2001::2", nh=17, 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")/UDP(sport=22,dport=23)/("X"*480)
    pkt3 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=17)/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")/UDP(sport=22,dport=23)/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)
    

    check pkt1-pkt4 are redirected to queue 5 or queue 6 with FDIR matched ID=0x0. 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:2021", nh=1)/("X"*480)
    pkt8 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP()/("X"*480)
    pkt9 = Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", nh=1)/TCP(sport=22,dport=23)/("X"*480)
    

    check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.10. Test case: MAC_IPV6_UDP pattern

70.10.1. Subcase 1: MAC_IPV6_UDP queue index

  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 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 distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.10.2. 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 queues 2 3 end / mark / end
    
  2. send matched packets, check the packets is distributed to queue 2 or queue 3 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 distributed by RSS without FDIR matched ID. check there is no rule listed.

70.10.3. 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
    
  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 . check there is no rule listed.

70.10.4. 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
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.10.5. Subcase 5: MAC_IPV6_UDP mark+rss

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
    
  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. check there is no rule listed.

70.10.6. 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 id 0 / end
    
  2. repeat the steps of passthru with mark part in subcase 3, get the same result.

70.11. Test case: MAC_IPV6_TCP pattern

  1. replace “udp” with “tcp” in all the subcases of MAC_IPV6_UDP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV6_UDP pattern.
  3. get the same result.

70.12. Test case: MAC_IPV6_SCTP pattern

  1. replace “udp” with “sctp” in all the subcases of MAC_IPV6_UDP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV6_UDP pattern.
  3. get the same result.

70.13. Test case: MAC_IPV4_GTPU_EH pattern

IAVF doesn’t support RSS for GTPU by default, so we need to set RSS rule for GTPU with extention header:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 / end actions rss types l3-src-only end key_len 0 queues end / end

Now, IAVF doesn’t support RSS for GTPU without extention header

70.13.1. Subcase 1: MAC_IPV4_GTPU_EH queue index

  1. create filter rules:

    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.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.13.2. Subcase 2: MAC_IPV4_GTPU_EH rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions rss queues 2 3 end / mark id 1 / end
    
  2. send matched packets, check the packets are distributed to queue 2 or queue 3 with FDIR matched ID=0x1. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.13.3. Subcase 3: MAC_IPV4_GTPU_EH passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.13.4. Subcase 4: MAC_IPV4_GTPU_EH drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. Then check there is no rule listed.

70.13.5. Subcase 5: MAC_IPV4_GTPU_EH mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions rss / 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 received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.13.6. Subcase 6: MAC_IPV4_GTPU_EH mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions mark id 1 / end
    
  2. repeat the steps of passthru with mark part in subcase 3, get the same result.

70.13.7. Subcase 7: MAC_IPV4_GTPU_EH QFI queue index / mark

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc qfi is 0x34 / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    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=1, qos_flow=0x34)/IP()/TCP()/Raw('x'*20)
    

    send mismatched packets, check the packet received has not FDIR:

    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=1, qos_flow=0x35)/IP()/Raw('x'*20)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet received has not FDIR. Then check there is no rule listed.

70.13.8. Subcase 8: MAC_IPV4_GTPU_EH without QFI rss queues / mark

  1. create filter rules on port 0:

    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
    
  2. send matched packets, check the packet is distributed to queue 2 or queue 3 with FDIR matched ID=0x3:

    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=1)/IP()/TCP()/Raw('x'*20)
    

    send mismatched packets, check the packet received has no FDIR:

    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=1)/IP()/TCP()/Raw('x'*20)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet are received without FDIR. Then check there is no rule listed.

70.13.9. Subcase 9: MAC_IPV4_GTPU_EH 4 tuple queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions queue index 10 / mark id 1 / end
    
  2. send matched packets, check the packets are distributed to queue 10 with FDIR matched ID=0x1.

    send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the existing rule. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.13.10. Subcase 10: MAC_IPV4_GTPU_EH 4 tuple queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.13.11. Subcase 11: MAC_IPV4_GTPU_EH 4 tuple passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.13.12. Subcase 12: MAC_IPV4_GTPU_EH 4 tuple drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.13.13. Subcase 13: MAC_IPV4_GTPU_EH 4 tuple mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.13.14. Subcase 14: MAC_IPV4_GTPU_EH outer dst ip queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc  / end actions queue index 10 / mark id 1 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", 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)
    

    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.21", dst="192.168.0.22")/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)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.13.15. Subcase 15: MAC_IPV4_GTPU_EH outer dst ip queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.13.16. Subcase 16: MAC_IPV4_GTPU_EH outer dst ip passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu  / gtp_psc  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.13.17. Subcase 17: MAC_IPV4_GTPU_EH outer dst ip drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.13.18. Subcase 18: MAC_IPV4_GTPU_EH outer dst ip mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / gtp_psc  / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.13.19. Subcase 19: MAC_IPV4_GTPU_EH outer src ip queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc  / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    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.22")/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)
    

    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.21", 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)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.13.20. Subcase 20: MAC_IPV4_GTPU_EH outer src ip queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.13.21. Subcase 21: MAC_IPV4_GTPU_EH outer src ip passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu  / gtp_psc  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.13.22. Subcase 22: MAC_IPV4_GTPU_EH outer src ip drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.13.23. Subcase 23: MAC_IPV4_GTPU_EH outer src ip mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / gtp_psc  / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.14. Test case: MAC_IPV4_GTPU pattern

70.14.1. Subcase 1: MAC_IPV4_GTPU queue index

  1. create filter rules:

    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.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the existing rule. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 1 without FDIR matched ID. Then check there is no rule listed.

70.14.2. Subcase 2: MAC_IPV4_GTPU rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions rss queues 2 3 end / mark / end
    
  2. send matched packets, check the packets are received with FDIR matched ID=0x0. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.14.3. Subcase 3: MAC_IPV4_GTPU passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions passthru / mark / end
    
  2. send matched packets, check the packets are received with FDIR matched ID=0x0. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.14.4. Subcase 4: MAC_IPV4_GTPU drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. Then check there is no rule listed.

70.14.5. Subcase 5: MAC_IPV4_GTPU mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are received with FDIR matched ID=0x1. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.14.6. Subcase 6: MAC_IPV4_GTPU mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / end actions mark / end
    
  2. repeat the steps of passthru with mark part in subcase 3, get the same result.

70.14.7. Subcase 7: MAC_IPV4_GTPU 3 tuple queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678  / end actions queue index 10 / mark id 1 / end
    
  2. send matched packets, check the packets are distributed to queue 10 with FDIR matched ID=0x1. send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the existing rule. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.14.8. Subcase 8: MAC_IPV4_GTPU 3 tuple queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678 / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.14.9. Subcase 9: MAC_IPV4_GTPU 3 tuple passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.14.10. Subcase 10: MAC_IPV4_GTPU 3 tuple drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678  / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.14.11. Subcase 11: MAC_IPV4_GTPU 3 tuple mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / gtpu teid is 0x12345678  / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.14.12. Subcase 12: MAC_IPV4_GTPU outer dst ip queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu  / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3. send mismatched packets, check the packet is distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.14.13. Subcase 13: MAC_IPV4_GTPU outer dst ip queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu  / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.14.14. Subcase 14: MAC_IPV4_GTPU outer dst ip passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.14.15. Subcase 15: MAC_IPV4_GTPU outer dst ip drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.14.16. Subcase 16: MAC_IPV4_GTPU outer dst ip mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp / gtpu / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.14.17. Subcase 17: MAC_IPV4_GTPU outer src ip queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    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.22")/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)
    

    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.21", 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)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.14.18. Subcase 18: MAC_IPV4_GTPU outer src ip queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.14.19. Subcase 19: MAC_IPV4_GTPU outer src ip passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu   / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.14.20. Subcase 20: MAC_IPV4_GTPU outer src ip drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu  / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.14.21. Subcase 21: MAC_IPV4_GTPU outer src ip mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 / udp / gtpu  / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.15. Test case: MAC_IPV6_GTPU_EH pattern

70.15.1. Subcase 1: MAC_IPV6_GTPU_EH 4 tuple queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions queue index 10 / mark id 1 / end
    
  2. send matched packets, check the packets are distributed to queue 10 with FDIR matched ID=0x1.

    send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the existing rule. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.15.2. Subcase 2: MAC_IPV6_GTPU_EH 4 tuple queue group

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.15.3. Subcase 3: MAC_IPV6_GTPU_EH 4 tuple passthru

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.15.4. Subcase 4: MAC_IPV6_GTPU_EH 4 tuple drop

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.15.5. Subcase 5: MAC_IPV6_GTPU_EH 4 tuple mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.15.6. Subcase 6: MAC_IPV6_GTPU_EH outer dst ipv6 queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc  / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    

    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")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/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)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.15.7. Subcase 7: MAC_IPV6_GTPU_EH outer dst ipv6 queue group

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.15.8. Subcase 8: MAC_IPV6_GTPU_EH outer dst ipv6 passthru

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu  / gtp_psc  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.15.9. Subcase 9: MAC_IPV6_GTPU_EH outer dst ipv6 drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.15.10. Subcase 10: MAC_IPV6_GTPU_EH outer dst ipv6 mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / gtp_psc  / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.15.11. Subcase 11: MAC_IPV6_GTPU_EH outer src ipv6 queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc  / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    

    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")/IPv6(src="2001::3", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/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)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.15.12. Subcase 12: MAC_IPV6_GTPU_EH outer src ipv6 queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.15.13. Subcase 13: MAC_IPV6_GTPU_EH outer src ipv6 passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu  / gtp_psc  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.15.14. Subcase 14: MAC_IPV6_GTPU_EH outer src ipv6 drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.15.15. Subcase 15: MAC_IPV6_GTPU_EH outer src ipv6 mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / gtp_psc  / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.16. Test case: MAC_IPV6_GTPU pattern

70.16.1. Subcase 1: MAC_IPV6_GTPU 4 tuple queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions queue index 10 / mark id 1 / end
    
  2. send matched packets, check the packets are distributed to queue 10 with FDIR matched ID=0x1.

    send mismatched packets, check the packets are distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the existing rule. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.16.2. Subcase 2: MAC_IPV6_GTPU 4 tuple queue group

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.16.3. Subcase 3: MAC_IPV6_GTPU 4 tuple passthru

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.16.4. Subcase 4: MAC_IPV6_GTPU 4 tuple drop

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.16.5. Subcase 5: MAC_IPV6_GTPU 4 tuple mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu teid is 0x12345678 / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.16.6. Subcase 6: MAC_IPV6_GTPU outer dst ipv6 queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/TCP()/Raw('x'*20)
    

    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")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/UDP()/Raw('x'*20)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.16.7. Subcase 7: MAC_IPV6_GTPU outer dst ipv6 queue group

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.16.8. Subcase 8: MAC_IPV6_GTPU outer dst ipv6 passthru

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu  / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.16.9. Subcase 9: MAC_IPV6_GTPU outer dst ipv6 drop

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.16.10. Subcase 10: MAC_IPV6_GTPU outer dst ipv6 mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth /  ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp / gtpu / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.16.11. Subcase 11: MAC_IPV6_GTPU outer src ipv6 queue index

  1. create filter rules on port 0:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / end actions queue index 1 / mark id 3 / end
    
  2. send matched packets, check the packet is redirected to queue 1 with FDIR matched ID=0x3:

    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/TCP()/Raw('x'*20)
    

    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")/IPv6(src="2001::3", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12345678)/IP()/UDP()/Raw('x'*20)
    
  3. repeat step 3 of subcase 1.

  4. verify matched packet is distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.16.12. Subcase 12: MAC_IPV6_GTPU outer src ipv6 queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / 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 distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.16.13. Subcase 13: MAC_IPV6_GTPU outer src ipv6 passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.16.14. Subcase 14: MAC_IPV6_GTPU outer src ipv6 drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.16.15. Subcase 15: MAC_IPV6_GTPU outer src ipv6 mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::2 / udp / gtpu / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.17. Test case: Layer3 co-exist GTPU

70.17.1. Subcase 1: Layer3 co-exist GTP EH fdir + dst

Rules:

#1  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.31 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end
#2  flow create 0 ingress pattern eth / ipv6 dst is ::32 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end
#3  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.33 / udp / gtpu / gtp_psc / end actions queue index 7 / mark id 3 / end
#4  flow create 0 ingress pattern eth / ipv6 dst is ::14 / udp / gtpu / gtp_psc / end actions queue index 8 / mark id 4 / end
#5  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.35 / udp / gtpu / gtp_psc / end actions passthru / mark id 5 / end
#6  flow create 0 ingress pattern eth / ipv6 dst is ::36 / udp / gtpu / gtp_psc / end actions passthru / mark id 6 / end
#7  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.37 / udp / gtpu / gtp_psc / end actions drop / end
#8  flow create 0 ingress pattern eth / ipv6 dst is ::38 / udp / gtpu / gtp_psc / end actions drop / end

Matched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Mismatched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.34")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::15")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::39")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
  1. Create above filter rules.

  2. Send matched packets.

  3. Check result:

    Check p_gtpu1 is distributed to queue 1 or 2 with FDIR matched ID=0x1.
    Check p_gtpu2 is distributed to queue 3 or 4 or 5 or 6 with FDIR matched ID=0x2.
    Check p_gtpu3 is distributed to queue 7 with FDIR matched ID=0x3.
    Check p_gtpu4 is distributed to queue 8 with FDIR matched ID=0x4.
    Check p_gtpu5 is distributed by RSS with FDIR matched ID=0x5.
    Check p_gtpu6 is distributed by RSS with FDIR matched ID=0x6.
    Check p_gtpu7 is dropped.
    Check p_gtpu8 is dropped.
    
  4. Send mismatched packets.

  5. Check result:

    Check p_gtpu1 is distributed by RSS without FDIR matched ID=0x1.
    Check p_gtpu2 is distributed by RSS without FDIR matched ID=0x2.
    Check p_gtpu3 is distributed by RSS without FDIR matched ID=0x3.
    Check p_gtpu4 is distributed by RSS without FDIR matched ID=0x4.
    Check p_gtpu5 is distributed by RSS without FDIR matched ID=0x5.
    Check p_gtpu6 is distributed by RSS without FDIR matched ID=0x6.
    Check p_gtpu7 is not dropped, distributed by RSS.
    Check p_gtpu8 is not dropped, distributed by RSS.
    
  6. Verify rules can be listed and destroyed:

    testpmd> flow list 0
    
  7. Flush the rule, check there is no rule listed:

    testpmd> flow flush 0
    
  8. Send matched packets.

  9. Verify matched packets are distributed by RSS without FDIR matched ID.

  10. Repeate above steps.

70.17.2. Subcase 2: Layer3 co-exist GTP fdir + dst

Rules:

#1  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.31 / udp / gtpu / end actions rss queues 1 2 end / mark id 1 / end
#2  flow create 0 ingress pattern eth / ipv6 dst is ::32 / udp / gtpu / end actions rss queues 3 4 5 6 end / mark id 2 / end
#3  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.33 / udp / gtpu / end actions queue index 7 / mark id 3 / end
#4  flow create 0 ingress pattern eth / ipv6 dst is ::14 / udp / gtpu / end actions queue index 8 / mark id 4 / end
#5  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.35 / udp / gtpu / end actions passthru / mark id 5 / end
#6  flow create 0 ingress pattern eth / ipv6 dst is ::36 / udp / gtpu / end actions passthru / mark id 6 / end
#7  flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.37 / udp / gtpu / end actions drop / end
#8  flow create 0 ingress pattern eth / ipv6 dst is ::38 / udp / gtpu / end actions drop / end

Matched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Mismatched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.34")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::15")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::39")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Test steps as subcase 1.

70.17.3. Subcase 3: Layer3 co-exist GTP EH fdir + src

Rules:

#1  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end
#2  flow create 0 ingress pattern eth / ipv6 src is ::12 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end
#3  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.23 / udp / gtpu / gtp_psc / end actions queue index 7 / mark id 3 / end
#4  flow create 0 ingress pattern eth / ipv6 src is 2001::4 / udp / gtpu / gtp_psc / end actions queue index 8 / mark id 4 / end
#5  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.25 / udp / gtpu / gtp_psc / end actions passthru / mark id 5 / end
#6  flow create 0 ingress pattern eth / ipv6 src is ::16 / udp / gtpu / gtp_psc / end actions passthru / mark id 6 / end
#7  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.27 / udp / gtpu / gtp_psc / end actions drop / end
#8  flow create 0 ingress pattern eth / ipv6 src is 2001::8 / udp / gtpu / gtp_psc / end actions drop / end

Matched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Mismatched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.22", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::13", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.24", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::5", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.26", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::17", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.28", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::9", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Test steps as subcase 1.

70.17.4. Subcase 4: Layer3 co-exist GTP fdir + src

Rules:

#1  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 / udp / gtpu / end actions rss queues 1 2 end / mark id 1 / end
#2  flow create 0 ingress pattern eth / ipv6 src is ::12 / udp / gtpu / end actions rss queues 3 4 5 6 end / mark id 2 / end
#3  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.23 / udp / gtpu / end actions queue index 7 / mark id 3 / end
#4  flow create 0 ingress pattern eth / ipv6 src is 2001::4 / udp / gtpu / end actions queue index 8 / mark id 4 / end
#5  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.25 / udp / gtpu / end actions passthru / mark id 5 / end
#6  flow create 0 ingress pattern eth / ipv6 src is ::16 / udp / gtpu / end actions passthru / mark id 6 / end
#7  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.27 / udp / gtpu / end actions drop / end
#8  flow create 0 ingress pattern eth / ipv6 src is 2001::8 / udp / gtpu / end actions drop / end

Matched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Mismatched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.22", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::13", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.24", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::5", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.26", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::17", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.28", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::9", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Test steps as subcase 1.

70.17.5. Subcase 5: Layer3 co-exist GTP with/without EH fdir + src/dst

Rules:

#1  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.21 dst is 192.168.0.31 / udp / gtpu / gtp_psc / end actions rss queues 1 2 end / mark id 1 / end
#2  flow create 0 ingress pattern eth / ipv6 src is ::12 dst is ::32 / udp / gtpu / gtp_psc / end actions rss queues 3 4 5 6 end / mark id 2 / end
#3  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.23 dst is 192.168.0.33 / udp / gtpu / gtp_psc / end actions queue index 7 / mark id 3 / end
#4  flow create 0 ingress pattern eth / ipv6 src is 2001::4 dst is ::14 / udp / gtpu / gtp_psc / end actions queue index 8 / mark id 4 / end
#5  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.25 dst is 192.168.0.35 / udp / gtpu / end actions passthru / mark id 5 / end
#6  flow create 0 ingress pattern eth / ipv6 src is ::16 dst is ::36 / udp / gtpu / end actions passthru / mark id 6 / end
#7  flow create 0 ingress pattern eth / ipv4 src is 192.168.0.27 dst is 192.168.0.37 / udp / gtpu / end actions drop / end
#8  flow create 0 ingress pattern eth / ipv6 src is 2001::8 dst is ::38 / udp / gtpu / end actions drop / end

Matched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.21", dst="192.168.0.31")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::12", dst="::32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.23", dst="192.168.0.33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::4", dst="::14")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.25", dst="192.168.0.35")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::16", dst="::36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.27", dst="192.168.0.37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::8", dst="::38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Mismatched packets:

p_gtpu1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.22", dst="192.168.0.32")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IPv6()/UDP()/Raw('x'*20)
p_gtpu2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::13", dst="::33")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/TCP()/Raw('x'*20)
p_gtpu3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.24", dst="192.168.0.34")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=1, qos_flow=0x33)/IPv6()/Raw('x'*20)
p_gtpu4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::5", dst="::15")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/GTP_PDUSession_ExtensionHeader(pdu_type=0, qos_flow=0x33)/IP()/TCP()/Raw('x'*20)
p_gtpu5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.26", dst="192.168.0.36")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/Raw('x'*20)
p_gtpu6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="::17", dst="::37")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IP()/ICMP()/Raw('x'*20)
p_gtpu7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP(src="192.168.0.28", dst="192.168.0.38")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)
p_gtpu8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IPv6(src="2001::9", dst="::39")/UDP(dport=2152)/GTP_U_Header(gtp_type=255, teid=0x12)/IPv6()/IPv6ExtHdrFragment()/Raw('x'*20)

Test steps as subcase 1.

70.18. Test case: L2 Ethertype pattern

70.18.1. Subcase 1: L2 Ethertype queue index

  1. create rule for PPPoED:

    flow create 0 ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end
    

    send PPPoED packet, check the packets are distributed to expected queue with specific FDIR matched ID.

  2. create rule for PPPoE:

    flow create 0 ingress pattern eth type is 0x8864 / end actions queue index 2 / mark id 2 / end
    

    send PPPoE packet, check the packets are distributed to expected queue with specific FDIR matched ID.

  3. create rule for ARP:

    flow create 0 ingress pattern eth type is 0x0806 / end actions queue index 3 / mark id 3 / end
    

    send ARP packet, Check the packets are distributed to expected queue with specific FDIR matched ID.

  4. create rule for EAPS:

    flow create 0 ingress pattern eth type is 0x8100 / end actions queue index 4 / mark id 4 / end
    

    send EAPS packet, check the packets are distributed to expected queue with specific FDIR matched ID.

  5. create rule for ieee1588:

    flow create 0 ingress pattern eth type is 0x88f7 / end actions queue index 5 / mark id 5 / end
    

    send ieee1588 packet, check the packets are distributed to expected queue with specific FDIR matched ID.

  6. send a mismatched packet:

    sendp([Ether(dst="00:11:22:33:44:55",type=0x8847)/MPLS(label=0xee456)/IP()],iface="enp134s0f1")
    

    check the packet received has not FDIR matched ID.

  7. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the 5 rules listed. flush all the rules:

    testpmd> flow flush 0
    
  8. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.18.2. Subcase 2: L2 Ethertype rss queues

  1. create rules for PPPoED with rss queues action:

    flow create 0 ingress pattern eth type is 0x8863 / end actions rss queues 2 3 end / mark id 2 / end
    
  2. send matched packet, check the packets received have FDIR matched ID=0x2, the packets are directed to queue 0, because L2 Ethertype are not supported by RSS.

  3. Repeat step 1-2 with PPPoE/ARP/EAPS/ieee1588, get the same result.

  4. repeat step 6-7 of subcase 1.

  5. verify matched packets received have not FDIR matched ID. Then check there is no rule listed.

70.18.3. Subcase 3: L2 Ethertype passthru

  1. create rules for PPPoED with passthru action:

    flow create 0 ingress pattern eth type is 0x8863 / end actions passthru / mark id 2 / end
    
  2. send matched packet, check the packets received have FDIR matched ID=0x2, the packets are directed to queue 0, because L2 Ethertype are not supported by RSS.

  3. Repeat step 1-2 with PPPoE/ARP/EAPS/ieee1588, get the same result.

  4. repeat step 6-7 of subcase 1.

  5. verify matched packets received have not FDIR matched ID. Then check there is no rule listed.

70.18.4. Subcase 4: L2 Ethertype drop

  1. create rules for PPPoED with drop action:

    flow create 0 ingress pattern eth type is 0x8863 / end actions drop / end
    
  2. send matched packet, check the packets are dropped,

  3. Repeat step 1-2 with PPPoE/ARP/EAPS/ieee1588, get the same result.

  4. repeat step 6-7 of subcase 1.

  5. verify matched packets are received. Then check there is no rule listed.

70.18.5. Subcase 5: L2 Ethertype mark+rss

  1. create rules for PPPoED with rss queues action:

    flow create 0 ingress pattern eth type is 0x8863 / end actions mark id 1 / rss / end
    
  2. send matched packet, check the packets received have FDIR matched ID=0x1, the packets are directed to queue 0, because L2 Ethertype are not supported by RSS.

  3. Repeat step 1-2 with PPPoE/ARP/EAPS/ieee1588, get the same result.

  4. repeat step 6-7 of subcase 1.

  5. verify matched packets received have not FDIR matched ID. Then check there is no rule listed.

70.18.6. Subcase 6: L2 Ethertype mark

  1. create rules for PPPoED with mark action:

    flow create 0 ingress pattern eth type is 0x8863 / end actions mark / end
    
  2. send matched packet, check the packets received have FDIR matched ID=0x0,

  3. Repeat step 1-2 with PPPoE/ARP/EAPS/ieee1588, get the same result.

  4. repeat step 6-7 of subcase 1.

  5. verify matched packets received have not FDIR matched ID. Then check there is no rule listed.

70.19. Test case: PFCP pctype

patterns: MAC_IPV4_PFCP_NODE MAC_IPV4_PFCP_SESSION MAC_IPV6_PFCP_NODE MAC_IPV6_PFCP_SESSION

RSS for PFCP are not supported by default. so if it’s not opened, the PFCP packet will be sent to queue 0 by RSS.

70.19.1. Subcase 1: PFCP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 1 / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions queue index 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions queue index 3 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / end
    
  2. send matched packets, check the packets are redirected to expected queue.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the existing rules. destroy the rules:

    testpmd> flow flush 0
    
  4. verify matched packets are not redirected to expected queue. Then check there is no rule listed.

70.19.2. Subcase 2: PFCP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions rss queues 2 3 end / mark id 0 / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions rss queues 4 5 6 7 end / mark id 1 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark id 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions rss queues 3 4 5 6 end / mark id 3 / end
    

    open PFCP RSS function:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp / end actions rss types pfcp end key_len 0 queues end / end
    
  2. send matched packets, PFCP SESSION packets are redirected to expected queues with specified mark ID. PFCP NODE packets are redirected to queue 0 with specified mark ID. send a ipv4-udp packet, check the packet is distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 UDP PFCP => RSS MARK
    1       0       0       i--     ETH IPV4 UDP PFCP => RSS MARK
    2       0       0       i--     ETH IPV6 UDP PFCP => RSS MARK
    3       0       0       i--     ETH IPV6 UDP PFCP => RSS MARK
    4       0       0       i--     ETH IPV4 UDP PFCP => RSS
    5       0       0       i--     ETH IPV6 UDP PFCP => RSS
    

    destroy the fdir rules:

    flow destroy 0 rule 0
    flow destroy 0 rule 1
    flow destroy 0 rule 2
    flow destroy 0 rule 3
    
  4. verify PFCP SESSION packets are distributed by RSS without FDIR matched ID. PFCP NODE packets are redirecte to queue 0 without FDIR matched ID.

  5. disable PFCP RSS function:

    flow destroy 0 rule 4
    flow destroy 0 rule 5
    
  6. verify PFCP SESSION packets are distributed to queue 0 without FDIR matched ID. PFCP NODE packets are distributed to queue 0 without FDIR matched ID. Then check there is no rule listed.

70.19.3. Subcase 3: PFCP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions passthru / mark id 0 / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions passthru / mark id 1 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions passthru / mark id 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions passthru / mark id 3 / end
    
  2. send matched packets, check the packets are distributed by RSS with expected 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 distributed to the same queue by RSS without FDIR matched ID. Then check there is no rule listed.

70.19.4. Subcase 4: PFCP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions drop / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions drop / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions drop / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. Then check there is no rule listed.

70.19.5. Subcase 5: PFCP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions mark / rss / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions mark id 1 / rss / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions mark id 2 / rss / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions mark id 3 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with expected 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 distributed to the same queue by RSS without FDIR matched ID. Then check there is no rule listed.

70.19.6. Subcase 6: PFCP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions mark / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions mark id 1 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions mark id 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions mark id 4294967294 / end
    
  2. repeat the steps of passthru with mark part in subcase 3, get the same result.

70.20. Test case: MAC_IPV4_L2TPv3 pattern

70.20.1. Subcase 1: MAC_IPV4_L2TPv3 queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.20.2. Subcase 2: MAC_IPV4_L2TPv3 rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.20.3. Subcase 3: MAC_IPV4_L2TPv3 mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.21. Test case: MAC_IPV6_L2TPv3 pattern

70.21.1. Subcase 1: MAC_IPV6_L2TPv3 queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.21.2. Subcase 2: MAC_IPV6_L2TPv3 rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 17 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.21.3. Subcase 3: MAC_IPV6_L2TPv3 mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 17 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.22. Test case: MAC_IPV4_ESP pattern

70.22.1. Subcase 1: MAC_IPV4_ESP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.22.2. Subcase 2: MAC_IPV4_ESP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.22.3. Subcase 3: MAC_IPV4_ESP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.22.4. Subcase 4: MAC_IPV4_ESP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions drop / end
    
  2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.22.5. Subcase 5: MAC_IPV4_ESP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions mark id 2 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.22.6. Subcase 6: MAC_IPV4_ESP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / esp spi is 7 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.23. Test case: MAC_IPV6_ESP pattern

70.23.1. Subcase 1: MAC_IPV6_ESP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is 2001::1 dst is 2001::2 / esp spi is 7 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.23.2. Subcase 2: MAC_IPV6_ESP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is 2001::1 dst is 2001::2 / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.23.3. Subcase 3: MAC_IPV6_ESP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is 2001::1 dst is 2001::2 / esp spi is 7 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.23.4. Subcase 4: MAC_IPV6_ESP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is 2001::1 dst is 2001::2 / esp spi is 7 / end actions drop / end
    
  2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.23.5. Subcase 5: MAC_IPV6_ESP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is 2001::1 dst is 2001::2 / esp spi is 7 / end actions mark id 2 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.23.6. Subcase 6: MAC_IPV6_ESP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is 2001::1 dst is 2001::2 / esp spi is 7 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.24. Test case: MAC_IPV4_AH pattern

70.24.1. Subcase 1: MAC_IPV4_AH queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / ah spi is 7 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.24.2. Subcase 2: MAC_IPV4_AH rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / ah spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.24.3. Subcase 3: MAC_IPV4_AH mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / ah spi is 7 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.25. Test case: MAC_IPV6_AH pattern

70.25.1. Subcase 1: MAC_IPV6_AH queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.25.2. Subcase 2: MAC_IPV6_AH rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.25.3. Subcase 3: MAC_IPV6_AH mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / ah spi is 7 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.26. Test case: MAC_IPV4_NAT-T-ESP pattern

70.26.1. Subcase 1: MAC_IPV4_NAT-T-ESP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.26.2. Subcase 2: MAC_IPV4_NAT-T-ESP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.26.3. Subcase 3: MAC_IPV4_NAT-T-ESP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.26.4. Subcase 4: MAC_IPV4_NAT-T-ESP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions drop / end
    
  2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.26.5. Subcase 5: MAC_IPV4_NAT-T-ESP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions mark id 2 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.26.6. Subcase 6: MAC_IPV4_NAT-T-ESP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp / esp spi is 7 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.27. Test case: MAC_IPV6_NAT-T-ESP pattern

70.27.1. Subcase 1: MAC_IPV6_NAT-T-ESP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions queue index 13 / mark id 7 / end
    
  2. send matched packets, check the packets are distributed to queue 13 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 13 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 13 without FDIR matched ID. check there is no rule listed.

70.27.2. Subcase 2: MAC_IPV6_NAT-T-ESP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions rss queues 1 2 3 4 end / mark id 6 / end
    
  2. send matched packets, check the packets are distributed to queue 1 or 2 or 3 or 4 with FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not distributed to queue 1 or 2 or 3 or 4 without FDIR matched ID. check there is no rule listed.

70.27.3. Subcase 3: MAC_IPV6_NAT-T-ESP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.27.4. Subcase 4: MAC_IPV6_NAT-T-ESP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions drop / end
    
  2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.27.5. Subcase 5: MAC_IPV6_NAT-T-ESP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions mark id 2 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.27.6. Subcase 6: MAC_IPV6_NAT-T-ESP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 src is 2001::1 dst is 2001::2 / udp / esp spi is 7 / end actions mark id 15 / end
    
  2. send matched packets, check the packets are received with FDIR matched ID. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.

70.28. Test case: negative cases

70.28.1. Subcase 1: invalid parameters of queue index

  1. Invalid parameters:

    flow create 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 16 / end
    

    Failed to create flow, report message:

    Invalid queue for FDIR.: Invalid argument
    
  2. check there is no rule listed.

70.28.2. Subcase 2: invalid parameters of rss queues

  1. Invalid number of queues:

    flow create 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 1 2 3 end / end
    

    Failed to create flow, report message:

    The region size should be any of the following values:1, 2, 4, 8, 16, 32, 64, 128 as long as the total number of queues do not exceed the VSI allocation.: Invalid argument
    

    Invalid number of queues:

    flow create 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 0 end / end
    flow create 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 end / end
    

    Failed to create flow, report message:

    Queue region size can't be 0 or 1.: Invalid argument
    
  2. Discontinuous queues:

    flow create 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 1 2 3 5 end / end
    

    Failed to create flow, report message:

    Discontinuous queue region: Invalid argument
    
  3. invalid queue index:

    flow create 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 15 16 end / end
    

    Failed to create flow, report message:

    Invalid queue region indexes.: Invalid argument
    
  4. “–rxq=7 –txq=7”, set queue group 8 queues:

    flow create 0 ingress pattern eth / 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 end / end
    

    Failed to create flow, report message:

    Invalid queue region indexes.: Invalid argument
    
  5. check there is no rule listed.

70.28.3. Subcase 3: Invalid parameters of GTPU input set

  1. Invalid value of teid and qfi:

    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
    

    Failed to create flow, report message “Bad arguments”

  2. check there is no rule listed.

70.28.4. Subcase 4: unsupported type of L2 ethertype

  1. create rules for IP/IPV6:

    flow create 0 ingress pattern eth type is 0x0800 / end actions queue index 1 / end
    flow create 0 ingress pattern eth type is 0x86dd / end actions queue index 1 / end
    

    Failed to create flow, report the error message:

    Unsupported ether_type.: Invalid argument
    
  2. check there is no rule listed.

70.28.5. Subcase 5: Duplicated rules

  1. Create a FDIR rule:

    flow create 0 ingress pattern eth / 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
    

    the rule is created successfully.

  2. Create the same rule again, Failed to create flow, report message:

    Add filter rule failed.: Operation not permitted
    
  3. check there is only one rule listed.

70.28.6. Subcase 6: conflicted rules

  1. Create a FDIR rule:

    flow create 0 ingress pattern eth / 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
    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 / end
    

    the rule is created successfully.

  2. Create a rule with same input set but different action:

    flow create 0 ingress pattern eth / 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 / 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 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions queue index 2 / mark / end
    flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions rss queues 2 3 end / mark / end
    

    Failed to create the two flows, report message:

    iavf_fdir_add(): Failed to add rule request due to the rule is already existed
    iavf_flow_create(): Failed to create flow
    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Failed to create parser engine.: Invalid argument
    
  3. Create a rule with same pattern but different input set:

    flow create 0 ingress pattern eth / 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 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2021 / end actions mark / end
    

    Failed to create the flow, report message:

    iavf_fdir_add(): Failed to add rule request due to the rule is conflict with existing rule
    iavf_flow_create(): Failed to create flow
    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Failed to create parser engine.: Invalid argument
    
  1. Create a rule with conflicted patterns:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.22 / udp src is 10 dst is 20 / end actions queue index 4 / mark id 4 / end
    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.23 ttl is 2 tos is 4 / udp src is 10 dst is 20 / end actions queue index 5 / mark id 5 / end
    flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end
    flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::3 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end
    

    Failed to create the two flows, report message:

    iavf_fdir_add(): Failed to add rule request due to the rule is conflict with existing rule
    iavf_flow_create(): Failed to create flow
    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Failed to create parser engine.: Invalid argument
    
  1. check there is only one rule listed.

70.28.7. Subcase 7: conflicted actions

  1. Create a rule with two conflicted actions:

    flow create 0 ingress pattern eth / 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
    

    Failed to create flow, report message:

    Unsupported action combination: Invalid argument
    
  2. check there is no rule listed.

70.28.8. Subcase 8: void action

  1. Create a rule with void action:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions end
    

    Failed to create flow, report message:

    Emtpy action: Invalid argument
    
  2. check there is no rule listed.

70.28.9. Subcase 9: delete a non-existent rule

  1. show the rule list of port 0:

    flow list 0
    

    There is no rule listed. show the rule list of port 1:

    testpmd> flow list 1
    Invalid port 1
    
  2. destroy rule 0 of port 0:

    flow destroy 0 rule 0
    

    There is no error message reported. destroy rule 0 of port 1:

    testpmd> flow destroy 1 rule 0
    Invalid port 1
    
  3. flush rules of port 0:

    flow flush 0
    

    There is no error message reported. flush rules of port 1:

    testpmd> flow flush 1
    port_flow_complain(): Caught PMD error type 1 (cause unspecified): No such device: No such device
    

70.28.10. Subcase 10: unsupported input set field

  1. Create a IPV4_PAY rule with TC input set:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / end
    

    Failed to create flow, report message:

    Bad arguments
    
  2. check there is no rule listed.

70.28.11. Subcase 11: void input set value

  1. Create a IPV4_PAY rule with void input set value:

    flow create 0 ingress pattern eth / ipv4 / end actions queue index 1 / end
    

    Failed to create flow, report message:

    Invalid input set: Invalid argument
    
  2. check there is no rule listed.

70.28.12. Subcase 12: unsupported pattern with OS package

  1. Create a GTPU rule with OS default package:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 / gtp_psc qfi is 0x34 / end actions drop / end
    

    Failed to create flow, report error message:

    Add filter rule failed.: Operation not permitted
    
  2. check there is no rule listed.

  3. Create a L2TPv3 rule with OS default package:

    flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 17 / end actions queue index 3 / mark id 7 / end
    

    Failed to create flow, report error message:

    Add filter rule failed.: Operation not permitted
    
  4. check there is no rule listed.

  5. Create a ESP rule with OS default package:

    flow create 0 ingress pattern eth / ipv6 / udp / esp spi is 17 / end actions rss queues 2 3 end / mark id 7 / end
    

    Failed to create flow, report error message:

    Add filter rule failed.: Operation not permitted
    
  6. check there is no rule listed.

70.28.13. Subcase 13: invalid port

  1. Create a rule with invalid port:

    flow create 1 ingress pattern eth / 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
    

    Failed to create flow, report message:

    No such device: No such device
    
  2. check there is no rule listed on port 0, check on port 1:

    testpmd> flow list 1
    Invalid port 1
    

70.29. Test case: pf vf combination

70.29.1. Subcase 1: same rules

  1. create the same rule on pf0 and pf1 successfully:

    # ethtool -N enp134s0f0 flow-type tcp4 src-ip 192.168.0.20 dst-ip 192.168.0.21 src-port 22 dst-port 23 action 1
    Added rule with ID 15359
    # ethtool -N enp134s0f1 flow-type tcp4 src-ip 192.168.0.20 dst-ip 192.168.0.21 src-port 22 dst-port 23 action 1
    Added rule with ID 15359
    
  2. show the rules:

    # ethtool -n enp134s0f0
    112 RX rings available
    Total 1 rules
    
    Filter: 15359
            Rule Type: TCP over IPv4
            Src IP addr: 192.168.0.20 mask: 0.0.0.0
            Dest IP addr: 192.168.0.21 mask: 0.0.0.0
            TOS: 0x0 mask: 0xff
            Src port: 22 mask: 0x0
            Dest port: 23 mask: 0x0
            Action: Direct to VF 0 queue 1
    
    # ethtool -n enp134s0f1
    112 RX rings available
    Total 1 rules
    
    Filter: 15359
            Rule Type: TCP over IPv4
            Src IP addr: 192.168.0.20 mask: 0.0.0.0
            Dest IP addr: 192.168.0.21 mask: 0.0.0.0
            TOS: 0x0 mask: 0xff
            Src port: 22 mask: 0x0
            Dest port: 23 mask: 0x0
            Action: Direct to VF 0 queue 1
    
  3. start testpmd on vf00 and vf01:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 -a 86:01.1 --file-prefix=vf0 -- -i --rxq=16 --txq=16
    

    create same rules with pf:

    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 / 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 queue index 1 / end
    

    list the rules:

    testpmd> flow list 0
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 TCP => QUEUE
    testpmd> flow list 1
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 TCP => QUEUE
    
  4. start testpmd on vf10 and vf11:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff00 -n 6 -a 86:11.0 -a 86:11.1 --file-prefix=vf1 -- -i --rxq=16 --txq=16
    

    create same rules with pf:

    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 / 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 queue index 1 / end
    

    list the rules:

    testpmd> flow list 0
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 TCP => QUEUE
    testpmd> flow list 1
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 TCP => QUEUE
    
  5. send matched packets to pf0 and pf1:

    sendp([Ether(dst="68:05:ca:a3:1a:60")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="68:05:ca:a3:1a:61")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    

    check the pf0 statistics:

    ethtool -S enp134s0f0
    
    rx_queue_1_packets: 1
    rx_queue_1_bytes: 134
    

    check the pf1 statistics:

    ethtool -S enp134s0f1
    
    rx_queue_1_packets: 1
    rx_queue_1_bytes: 134
    

    send mismatched packets to pf0 and pf1, check the packets are redirected not to queue 1.

  6. send matched packets to vfs:

    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="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:77")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    sendp([Ether(dst="00:11:22:33:44:88")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    

    check the first packet is redirected to vf00 queue 1. check the second packet is redirected to vf01 queue 1. check the third packet is redirected to vf10 queue 1. check the fourth packet is redirected to vf11 queue 1.

  7. send mismatched packets to vfs:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:77")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f0")
    sendp([Ether(dst="00:11:22:33:44:88")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f0")
    

    check the packets are redirected to same vf in order, but not queue 1.

  8. flush all the rules on vfs, and delete rules on pfs:

    # ethtool -N enp134s0f0 delete 15359
    # ethtool -N enp134s0f1 delete 15359
    # ethtool -n enp134s0f0
    112 RX rings available
    Total 0 rules
    # ethtool -n enp134s0f1
    112 RX rings available
    Total 0 rules
    
  9. send matched packets to pfs and vfs, all the packets are not redirected to expected queue.

70.29.2. Subcase 2: same input set, different actions

  1. create the same rule on pf0 and pf 1 successfully:

    # ethtool -N enp134s0f0 flow-type tcp4 src-ip 192.168.0.20 dst-ip 192.168.0.21 src-port 22 dst-port 23 action 1
    Added rule with ID 15359
    # ethtool -N enp134s0f1 flow-type tcp4 src-ip 192.168.0.20 dst-ip 192.168.0.21 src-port 22 dst-port 23 action 2
    Added rule with ID 15359
    
  2. start testpmd on vf00 and vf01:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 -a 86:01.1 --file-prefix=vf0 -- -i --rxq=16 --txq=16
    

    create same rules with pf:

    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 3 4 end / mark / end
    
  3. start testpmd on vf10 and vf11:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff00 -n 6 -a 86:11.0 -a 86:11.1 --file-prefix=vf1 -- -i --rxq=16 --txq=16
    

    create same rules with pf:

    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 drop / 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 passthru / mark id 1 / end
    
  4. send matched packets to vfs:

    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="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:77")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    sendp([Ether(dst="00:11:22:33:44:88")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    

    check pkt1 to queue 1 of vf00 with FDIR matched ID=0x1, pkt2 to queue 3 or 4 of vf01 with FDIR matched ID=0x0, pkt3 is dropped by vf10, pkt4 is received with FDIR matched ID=0x1

  5. send mismatched packets to vfs:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:77")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f0")
    sendp([Ether(dst="00:11:22:33:44:88")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f0")
    

    check the packets are received without FDIR matched ID.

  6. send matched packets to pf0 and pf1:

    sendp([Ether(dst="68:05:ca:a3:1a:60")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="68:05:ca:a3:1a:61")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    

    check packet 1 is redirected to queue 1 of pf0, packet 2 is redirected to queue 2 of pf1. send mismatched packets to pf0 and pf1, check the packets are not redirected to expected queue.

  7. flush all the rules on pfs and vfs, send the matched packets, check the packets send to vfs are received without FDIR matched ID. check the packets send to pfs are received but not redirected to expected queue.

70.29.3. Subcase 3: different patterns, different actions

  1. create the same rule on pf0 and pf 1 successfully:

    # ethtool -N enp134s0f0 flow-type tcp4 src-ip 192.168.0.20 dst-ip 192.168.0.21 src-port 22 dst-port 23 action 1
    Added rule with ID 15358
    # ethtool -N enp134s0f1 flow-type udp4 src-ip 192.168.0.22 dst-ip 192.168.0.23 src-port 22 dst-port 23 action -1
    Added rule with ID 15359
    
  2. start testpmd on vf00 and vf01:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 -a 86:01.1 --file-prefix=vf0 -- -i --rxq=16 --txq=16
    

    create same rules with pf:

    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 / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.22 dst is 192.168.0.23 / udp src is 22 dst is 23 / end actions queue index 5 / mark / end
    
  3. start testpmd on vf10 and vf11:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff00 -n 6 -a 86:11.0 -a 86:11.1 --file-prefix=vf1 -- -i --rxq=16 --txq=16
    

    create same rules with pf:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.22 dst is 192.168.0.23 / udp src is 22 dst is 23 / end actions queue index 5 / mark id 1 / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.22 dst is 192.168.0.23 tos is 4 / tcp src is 22 dst is 23 / end actions drop / end
    
  4. send matched packets to vfs:

    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="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.22",dst="192.168.0.23")/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:77")/IP(src="192.168.0.22",dst="192.168.0.23")/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    sendp([Ether(dst="00:11:22:33:44:88")/IP(src="192.168.0.22",dst="192.168.0.23",tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    

    check pkt1 to queue 2 or 3 of vf00 without FDIR matched ID, pkt2 to queue 5 of vf01 with FDIR matched ID=0x0, pkt3 to queue 5 of vf10 with FDIR matched ID=0x1, pkt4 is dropped by vf11.

  5. send mismatched packets to vfs:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:77")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f0")
    sendp([Ether(dst="00:11:22:33:44:88")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=24)/Raw('x' * 80)],iface="enp134s0f0")
    

    check the packets are received without FDIR matched ID.

  6. send matched packets to pf0 and pf1:

    sendp([Ether(dst="68:05:ca:a3:1a:60")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="68:05:ca:a3:1a:61")/IP(src="192.168.0.22",dst="192.168.0.23")/UDP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f0")
    

    check packet 1 is redirected to queue 1 of pf0:

    rx_queue_1_packets: 1
    rx_queue_1_bytes: 134
    

    packet 2 is dropped by pf1:

    rx_dropped: 1
    

    send mismatched packets to pf0 and pf1, check the packets are received but not redirected to expected queue.

  7. flush all the rules on pfs and vfs, send the matched packets, check the packets send to vfs are received without FDIR matched ID. check the packets send to pfs are received but not redirected to expected queue.

70.30. Test case: Max number

All the max number cases are designed based on 2*100G NIC. If the hardware is 4*25G NIC, the guaranteed rule number of PF is 512. So in subcase 3 and subcase 4, there can be created at most 14848 rules on 1pf and 2vfs.

70.30.1. Subcase 1: 128 profiles

  1. create 16 vfs on pf0:

    echo 16 > /sys/bus/pci/devices/0000:86:00.0/sriov_numvfs
    

    bind them to dpdk driver:

    ./usertools/dpdk-devbind.py -b vfio-pci 86:01.0 86:01.1 86:01.2 86:01.3 86:01.4 86:01.5 86:01.6 86:01.7
    ./usertools/dpdk-devbind.py -b vfio-pci 86:02.0 86:02.1 86:02.2 86:02.3 86:02.4 86:02.5 86:02.6 86:02.7
    

    then start testpmd:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 6 --file-prefix=vf -- -i --rxq=4 --txq=4
    
  2. create 8 rules with different patterns on each port:

    flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1 / end actions queue index 1 / mark / end
    flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 2 / end actions queue index 1 / mark / end
    flow create 0 ingress pattern eth / ipv4 / tcp / end actions queue index 2 / mark / end
    flow create 0 ingress pattern eth / ipv6 / tcp / end actions queue index 2 / mark / end
    flow create 0 ingress pattern eth / ipv4 / esp spi is 1 / end actions queue index 3 / mark / end
    flow create 0 ingress pattern eth / ipv6 / esp spi is 2 / end actions queue index 3 / mark / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 4 / mark id 1 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / end
    

    created successfully on port 0-12, failed from rule 6 on port 13:

    testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 4 / mark id 1 / end
    iavf_execute_vf_cmd(): No response or return failure (-5) for cmd 47
    iavf_fdir_add(): fail to execute command OP_ADD_FDIR_FILTER
    iavf_flow_create(): Failed to create flow
    port_flow_complain(): Caught PMD error type 2 (flow rule (handle)): Add filter rule failed.: Operation not permitted
    
  3. list the rules on port 0-12:

    testpmd> flow list 12
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 UDP => QUEUE MARK
    1       0       0       i--     ETH IPV4 TCP => QUEUE MARK
    2       0       0       i--     ETH IPV4 SCTP => QUEUE MARK
    3       0       0       i--     ETH IPV6 UDP => QUEUE MARK
    4       0       0       i--     ETH IPV6 TCP => QUEUE MARK
    5       0       0       i--     ETH IPV6 SCTP => QUEUE MARK
    6       0       0       i--     ETH => QUEUE MARK
    7       0       0       i--     ETH IPV4 UDP PFCP => QUEUE
    

    list the rules on port 13, there are only 6 rules listed. list the rules on port 14/15, there is no rule listed. 110 rules can be created successfully, which applied 110 profiles.

    Note: there are 128 profiles in total. each pf apply for 8 profiles when kernel driver init, 4 for non-tunnel packet, 4 for tunnel packet. profile 0 and profile 1 are default profile for specific packet. we design case with 2*100G card, so 110 profiles can be used for vf. if we use 4*25G card, only 94 profiles can be used for vf. if card is chapman beach 100g*2, one pf port equals a general 100g*2 card,so 118 profiles can be used for vf

  4. send matched packets to vf 12, the packets are redirected to the expected queue.

  5. flush rules on vf port 12:

    flow flush 12
    

    there is no rule listed on port 12. all the rule can be listed correctly in other ports. send matched packets to port 12, the packets are received without FDIR matched ID.

  6. create rule on port 13 again:

    testpmd> flow create 13 ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end
    

    the rule can be created successfully. send the matched packet port 13, the packets are redirected to the expected queue.

70.31. Test case: Stress test

70.31.1. Subcase 1: port stop/port start

  1. create a rule:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end
    
  2. list the rule and send matched packet:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21") / Raw('x' * 80)],iface="enp134s0f1")
    

    check the packet are redirected to queue 1 with FDIR matched ID=0x0

  3. stop the port, then start the port:

    testpmd> port stop 0
    testpmd> port start 0
    
  4. show the rule list, there is no rule listed.

  5. verify matched packet is distributed by RSS without FDIR matched ID.

70.31.2. Subcase 2: delete rules

  1. create 3 rules and destory the first rule:

    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
    

    there are rule 0/1/2 listed:

    flow list 0
    

    send packets match rule 0, rule 1 and rule 2, Verify all packets can be redirected to expected queue and FDIR matched ID. destory the first rule:

    flow destroy 0 rule 0
    

    list the rules, verify there are only rule 1 and rule 2 listed. send packet matched rule 0, verify it is received without FDIR matched ID. send packets matched rule 1 and rule 2, Verify all packets be redirected with FDIR matched ID. flush rules:

    flow flush 0
    

    send packets match rule 0, rule 1 and rule 2, verify all packets received without FDIR matched ID.

  2. create 3 rules and destory the second rule:

    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
    

    there are rule 0/1/2 listed:

    flow list 0
    

    send packets match rule 0, rule 1 and rule 2, Verify all packets can be redirected to expected queue and FDIR matched ID. destory the second rule:

    flow destroy 0 rule 1
    

    list the rules, verify there are only rule 0 and rule 2 listed. send packet matched rule 1, verify it is received without FDIR matched ID. send packets matched rule 0 and rule 2, Verify all packets be redirected with FDIR matched ID. flush rules:

    flow flush 0
    

    send packets match rule 0, rule 1 and rule 2, verify all packets received without FDIR matched ID.

  3. create 3 rules and destory the third rule:

    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
    

    there are rule 0/1/2 listed:

    flow list 0
    

    send packets match rule 0, rule 1 and rule 2, Verify all packets can be redirected to expected queue with FDIR matched ID. destory the last rule:

    flow destroy 0 rule 2
    

    list the rules, verify there are only rule 0 and rule 1 listed. send packet matched rule 2, verify it is received without FDIR matched ID. send packets matched rule 0 and rule 1, Verify all packets be redirected with FDIR matched ID. flush rules:

    flow flush 0
    

    send packets match rule 0, rule 1 and rule 2, verify all packets are received without FDIR matched ID.

70.31.3. Subcase 3: VF port reset and create a new rule

  1. create a rule on vf00 and vf01:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    
  2. send matched packet:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    check the packet is redirected to queue 5 of port 0 and port 1 with FDIR matched ID=0x0.

  3. vf reset:

    port stop 0
    port reset 0
    port start 0
    

    the port can be stop/reset/start normally without error message.

  4. check there is not rule listed on port 0. the rule of port 1 is still be listed. send matched packet to vf0, check the packet is distributed by RSS. send matched packet to vf1, check the packet is redirected to queue 5 with FDIR matched ID=0x0.

  5. create rule 0 on port 0 again, the rule can be created successfully. send matched packet to port 0, the packet can be redirected to queue 5 with FDIR matched ID=0x0.

  6. quit and relaunch testpmd, create same rules successfully.

  7. send matched packets, check them redirected to expected queue with FDIR matched ID.

70.31.4. Subcase 4: VF port reset and delete the rule

  1. create a rule on vf00 and vf01:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    
  2. send matched packet:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    check the packet is redirected to queue 5 of port 0 and port 1 with FDIR matched ID=0x0.

  3. vf reset:

    port stop 1
    port reset 1
    port start 1
    

    the port can be stop/reset/start normally without error message.

  4. check there is not rule listed on port 1. the rule of port 0 is still be listed. send matched packet to vf0, check the packet is redirected to queue 5 with FDIR matched ID=0x0. send matched packet to vf1, check the packet is distributed by RSS.

  5. destroy rule 0 of vf0 successfully. send matched packet to vf0, check the packet is redirected by RSS without FDIR matched ID. send matched packet to vf1, check the packet is redirected by RSS without FDIR matched ID.

  6. quit and relaunch testpmd, create same rules successfully.

  7. send matched packets, check them redirected to expected queue with FDIR matched ID.

70.31.5. Subcase 5: PF reset VF and create a new rule

  1. create a rule on vf00 and vf01:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    
  2. send matched packet:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    check the packet is redirected to queue 5 with FDIR matched ID=0x0.

  3. pf trigger vf reset:

    ip link set enp134s0f0 vf 0 mac 00:11:22:33:44:56
    
  4. testpmd shows:

    Port 0: reset event
    

    then vf reset:

    port stop 0
    port reset 0
    port start 0
    

    the port can be stop/reset/start normally without error message.

  5. check there is not rule listed on vf0. send matched packet to vf0 with new mac address, check the packet is redirected by RSS without FDIR matched ID. send matched packet to vf1, check the packet is redirected to queue 5 with FDIR matched ID=0x0.

  6. create a new rule on port 0, the rule can be created successfully:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.1 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 6 / mark id 1 / end
    

    send matched packet to port 0, the packet can be redirected to queue 6 with FDIR matched ID=0x1.

  7. quit and relaunch testpmd, then create same rules successfully.

  8. send matched packets, check them redirected to expected queue with FDIR matched ID.

70.31.6. Subcase 6: PF reset VF and delete the rule

  1. create a rule on vf00 and vf01:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    
  2. send matched packet:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    check the packet is redirected to queue 5 with FDIR matched ID=0x0.

  3. pf trigger vf reset:

    ip link set enp134s0f0 vf 1 mac 00:11:22:33:44:56
    
  4. testpmd shows:

    Port 1: reset event
    

    then vf reset:

    port stop 1
    port reset 1
    port start 1
    

    the port can be stop/reset/start normally without error message.

  5. check there is not rule listed on vf1. destroy rule 0 of vf0 successfully. send matched packet to vf0, check the packet is redirected by RSS without FDIR matched ID. send matched packet to vf1, check the packet is redirected by RSS without FDIR matched ID.

  6. create rule 1 on port 1 again, the rule can be created successfully. send matched packet to port 1, the packet can be redirected to queue 5 with FDIR matched ID=0x0.

  7. quit and relaunch testpmd, then create same rules successfully.

  8. send matched packets, check them redirected to expected queue with FDIR matched ID.

70.31.7. Subcase 7: check profile delete

  1. create ipv4-tcp and ipv6-udp rules:

    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 0 / end
    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 queue index 2 / mark id 2 / end
    

    return the message:

    Flow rule #0 created
    Flow rule #1 created
    

    list the rules:

    testpmd> flow list 0
    ID      Group   Prio    Attr    Rule
    0       0       0       i--     ETH IPV4 TCP => QUEUE MARK
    1       0       0       i--     ETH IPV6 UDP => QUEUE MARK
    
  2. send ipv4-pay and ipv6-pay packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/Raw('x' * 80)],iface="enp134s0f1")
    sendp([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)/("X"*480)], iface="enp134s0f1")
    

    check the two packets are distributed by RSS without FDIR matched ID.

  3. delete the rules, and create a ipv4-other and a ipv6-other rule:

    flow flush 0
    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 3 / mark id 3 / end
    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 / end actions queue index 4 / mark id 4 / end
    
  4. send the two packets again, check ipv4-pay packet is redirected to queue 3 with FDIR matched ID=0x3 check ipv6-pay packet is redirected to queue 4 with FDIR matched ID=0x4

  5. delete the rules, and create ipv4-tcp and ipv6-udp rules again:

    flow flush 0
    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 0 / end
    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 queue index 2 / mark id 2 / end
    
  6. send the two packets again, check the two packets are distributed by RSS without FDIR matched ID.

70.31.8. Subcase 8: Kill VF process and create a new rule

  1. create a rule on vf00 and vf01:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.0 dst is 192.1.0.0 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 5 / mark / end
    
  2. send matched packet:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    sendp([Ether(dst="00:11:22:33:44:66")/IP(src="192.168.0.0",dst="192.1.0.0", tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp134s0f1")
    

    check the packet is redirected to queue 5 with FDIR matched ID=0x0.

  3. kill VF process in another shell:

    ps -ef |grep testpmd #Check the process id
    kill -9 <pid>
    
  4. testpmd shows:

    testpmd> Killed
    

    then relaunch testpmd. the port can start normally without error message.

  5. check there is not rule listed on vf0 and vf1.

  6. repeat step 1-2. check the rule can be created successfully, and the packets can be redirected to queue 5 with FDIR matched ID=0x0.

70.32. Test case: PFCP coverage test

70.32.1. Subcase 1: PFCP FDIR vlan strip on HW checksum offload check

  1. start testpmd on vf00:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 --file-prefix=vf -- -i --rxq=16 --txq=16 --enable-rx-cksum --port-topology=loop
    
  2. Enable vlan filter and receipt of VLAN packets with VLAN Tag Identifier 1 on port 0. Enable vlan strip on port 0:

    testpmd> vlan set filter on 0
    testpmd> rx_vlan add 1 0
    testpmd> vlan set strip on 0
    
  3. enable hardware checksum:

    testpmd> set fwd csum
    Set csum packet forwarding mode
    testpmd> port stop all
    testpmd> csum set ip hw 0
    testpmd> csum set udp hw 0
    testpmd> port start all
    testpmd> set promisc 0 on
    testpmd> set verbose 1
    
    Due to DPDK 236bc417e2da(app/testpmd: fix MAC header in checksum forward engine) changes the checksum
    functions adds switches to control whether to exchange MAC address.
    Currently, our test scripts are based on not exchanging MAC addresses, mac-swap needs to be disabled:
    testpmd> csum mac-swap off 0
    
    testpmd> start
    
  4. DUT create fdir rules for MAC_IPV4_PFCP_NODE/MAC_IPV4_PFCP_SESSION/MAC_IPV6_PFCP_NODE/MAC_IPV6_PFCP_SESSION with queue index and mark:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 1 / mark id 1 / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions queue index 2 / mark id 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions queue index 3 / mark id 3 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / mark id 4 / end
    

    DUT check the packets are redirected to expected queue with mark id on port 0.

  5. Tester send matched packets with VLAN tag “1” and incorrect checksum:

    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(chksum=0xf)/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(chksum=0xf)/UDP(sport=22, dport=8805)/PFCP(Sfield=1),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=1),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=1),iface="enp134s0f1")
    
  6. DUT check the packets are redirected to expected queue with mark id on port 0 with “PKT_RX_VLAN_STRIPPED”, and report the checksum error:

    PKT_RX_L4_CKSUM_BAD PKT_RX_IP_CKSUM_GOOD
    

    or:

    PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_BAD
    

    verify that the same number of packet are correctly received on the traffic generator side port A without VLAN tag “1”. And IPv4 checksum, UDP checksum need be validated as pass by the tester. The IPv4 source address will not be changed by testpmd.

  7. DUT verify rule can be listed and destroyed:

    testpmd> flow list 0
    

    destroy the rules:

    testpmd> flow flush 0
    
  8. Tester send matched packets with VLAN tag “1” and incorrect checksum. DUT check all the packets are distributed to queue 0 without mark id. all the received packets are with “PKT_RX_VLAN_STRIPPED”, and report the checksum error, verify that the same number of packet are correctly received on the traffic generator side port A without VLAN tag “1”. And IPv4 checksum, UDP checksum need be validated as pass by the tester. The IPv4 source address will not be changed by testpmd.

70.32.2. subcase 2: PFCP FDIR vlan strip off SW checksum offload check

  1. start testpmd on vf00:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 --file-prefix=vf -- -i --rxq=16 --txq=16 --enable-rx-cksum --port-topology=loop
    
  2. Enable vlan filter and receipt of VLAN packets with VLAN Tag Identifier 1 on port 0. Disable vlan strip on port 0:

    testpmd> vlan set filter on 0
    testpmd> rx_vlan add 1 0
    testpmd> vlan set strip off 0
    
  3. enable software checksum:

    testpmd> set fwd csum
    Set csum packet forwarding mode
    testpmd> port stop all
    testpmd> csum set ip sw 0
    testpmd> csum set udp sw 0
    testpmd> port start all
    testpmd> set verbose 1
    testpmd> set promisc 0 on
    
    Due to DPDK 236bc417e2da(app/testpmd: fix MAC header in checksum forward engine) changes the checksum
    functions adds switches to control whether to exchange MAC address.
    Currently, our test scripts are based on not exchanging MAC addresses, mac-swap needs to be disabled:
    testpmd> csum mac-swap off 0
    
    testpmd> start
    
  4. DUT create fdir rules for MAC_IPV4_PFCP_NODE/MAC_IPV4_PFCP_SESSION/MAC_IPV6_PFCP_NODE/MAC_IPV6_PFCP_SESSION with queue index and mark:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 1 / mark id 1 / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions queue index 2 / mark id 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions queue index 3 / mark id 3 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / mark id 4 / end
    
  5. Tester send matched packets with VLAN tag “1” and incorrect checksum:

    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(chksum=0xf)/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP(chksum=0xf)/UDP(sport=22, dport=8805)/PFCP(Sfield=1),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IP()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=1),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/Dot1Q(vlan=1)/IPv6()/UDP(sport=22, dport=8805, chksum=0xf)/PFCP(Sfield=1),iface="enp134s0f1")
    
  6. DUT check the packets are redirected to expected queue with mark id on port 0 without “PKT_RX_VLAN_STRIPPED”, and report the checksum error:

    PKT_RX_L4_CKSUM_BAD PKT_RX_IP_CKSUM_GOOD
    

    or:

    PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_BAD
    

    verify that the same number of packet are correctly received on the traffic generator side port A with VLAN tag “1”. And UDP checksum need be validated as pass by the tester. The checksum is indeed recalculated by software algorithms.

  7. DUT verify rule can be listed and destroyed:

    testpmd> flow list 0
    

    destroy the rule:

    testpmd> flow flush 0
    
  8. Tester send matched packets with VLAN tag “1” and incorrect checksum.

  9. DUT check the packets are distributed to queue 0 without mark id without “PKT_RX_VLAN_STRIPPED”, and report the checksum error. verify that the same number of packet are correctly received on the traffic generator side port A with VLAN tag “1”. And UDP checksum need be validated as pass by the tester. The checksum is indeed recalculated by software algorithms.

70.32.3. subcase 3: PFCP FDIR vlan insert on

  1. start testpmd on vf00:

    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xff -n 6 -a 86:01.0 --file-prefix=vf -- -i --rxq=16 --txq=16
    
  2. Enable vlan filter and insert VLAN Tag Identifier 1 to vlan packet sent from port 0:

    testpmd> vlan set filter on 0
    testpmd> rx_vlan add 1 0
    testpmd> port stop all
    testpmd> tx_vlan set 0 1
    testpmd> port start all
    testpmd> set fwd mac
    
  3. DUT create fdir rules for MAC_IPV4_PFCP_NODE/MAC_IPV4_PFCP_SESSION/MAC_IPV6_PFCP_NODE/MAC_IPV6_PFCP_SESSION with queue index and mark:

    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 1 / mark id 1 / end
    flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 1 / end actions queue index 2 / mark id 2 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 0 / end actions queue index 3 / mark id 3 / end
    flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / mark id 4 / end
    
  4. Tester send matched packets without VLAN tag:

    sendp(Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=22, dport=8805)/PFCP(Sfield=1),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=0),iface="enp134s0f1")
    sendp(Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=22, dport=8805)/PFCP(Sfield=1),iface="enp134s0f1")
    
  5. DUT check the packets are redirected to expected queue with mark id on port 0 without “PKT_RX_VLAN_STRIPPED”, verify that the same number of packet are correctly received on the traffic generator side port A with VLAN tag “1”.

  6. DUT verify rule can be listed and destroyed:

    testpmd> flow list 0
    

    destroy the rule:

    testpmd> flow destroy 0 rule 0
    testpmd> flow destroy 0 rule 1
    testpmd> flow destroy 0 rule 2
    testpmd> flow destroy 0 rule 3
    
  7. Tester send matched packets without VLAN tag “1”.

  8. DUT check the packets are not distributed to expected queue without mark id without “PKT_RX_VLAN_STRIPPED”, verify that the same number of packet are correctly received on the traffic generator side port A with VLAN tag “1”. And UDP checksum need be validated as pass by the tester.

70.33. Test case: without input set test

Support ipv4 and ipv6 tcp/udp flow director rule without input set. The packets are for testing without input set cases.

  • MAC_IPV4_TCP

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src=RandIP(), dst=RandIP())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src=RandIP(), dst=RandIP())/SCTP()],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    
  • MAC_IPV4_UDP

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP(src=RandIP(), dst=RandIP())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IP(src=RandIP(), dst=RandIP())/SCTP()],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    
  • MAC_IPV6_TCP

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/SCTP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    
  • MAC_IPV6_UDP

    matched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/UDP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    

    mismatched packets:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/TCP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    sendp([Ether(dst="00:11:22:33:44:55")/IPv6()/SCTP(sport=RandShort(),dport=RandShort())],iface='ens192f1',count=100)
    

70.33.1. Test Case: MAC_IPV4_TCP_WITHOUT_INPUT_SET

70.33.1.1. Subcase 1: MAC_IPV4_TCP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / tcp / end actions queue index 1 / end
    
  2. send MAC_IPV4_TCP matched packets, check all packets are distributed to queue 1. send the mismatched packets, check all packets are distributed to all queues.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are distributed to all queues. check there is no rule listed.

70.33.1.2. Subcase 2: MAC_IPV4_TCP rss queue

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss queues 0 1 2 3 end / end
    
  2. send MAC_IPV4_TCP matched packets, check all packets are distributed to queue 0-3. send the mismatched packets, check all packets are distributed to all queues.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed to all queues. check there is no rule listed.

70.33.1.3. Subcase 3: MAC_IPV4_TCP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / tcp / end actions passthru / mark id 1 / end
    
  2. send MAC_IPV4_TCP matched packets, check all packets are distributed to all queue with FDIR matched ID=0x1. send the mismatched packets, check all packets are distributed to all queues without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed to all queues without FDIR matched ID. check there is no rule listed.

70.33.1.4. Subcase 4: MAC_IPV4_TCP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / tcp / end actions drop / end
    
  2. send MAC_IPV4_TCP matched packets, check all packets are dropped. send the mismatched packets, check all packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.33.1.5. Subcase 5: MAC_IPV4_TCP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / tcp / end actions mark id 2 / rss / end
    
  2. send MAC_IPV4_TCP matched packets, check all packets are distributed to all queue with FDIR matched ID=0x2. send the mismatched packets, check all packets are distributed to all queues without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed to all queues without FDIR matched ID. check there is no rule listed.

70.33.1.6. Subcase 6: MAC_IPV4_TCP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / tcp / end actions mark id 1 / end
    
  2. repeat the step 2-3 of in subcase 3, get the same result.

70.33.2. Test Case: MAC_IPV4_UDP_WITHOUT_INPUT_SET

  1. replace “tcp” with “udp” in all the subcases of MAC_IPV4_TCP_WITHOUT_INPUT_SET pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_TCP_WITHOUT_INPUT_SET pattern.
  3. get the same result.

70.33.3. Test Case: MAC_IPV6_TCP_WITHOUT_INPUT_SET

70.33.3.1. Subcase 1: MAC_IPV6_TCP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / tcp / end actions queue index 1 / end
    
  2. send MAC_IPV6_TCP matched packets, check all packets are distributed to queue 1. send the mismatched packets, check all packets are distributed to all queues.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are distributed to all queues. check there is no rule listed.

70.33.3.2. Subcase 2: MAC_IPV6_TCP rss queue

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss queues 0 1 2 3 end / end
    
  2. send MAC_IPV6_TCP matched packets, check all packets are distributed to queue 0-3. send the mismatched packets, check all packets are distributed to all queues.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed to all queues. check there is no rule listed.

70.33.3.3. Subcase 3: MAC_IPV6_TCP passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / tcp / end actions passthru / mark id 1 / end
    
  2. send MAC_IPV6_TCP matched packets, check all packets are distributed to all queue with FDIR matched ID=0x1. send mismatched packets, check all packets are distributed to all queues without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed to all queues without FDIR matched ID. check there is no rule listed.

70.33.3.4. Subcase 4: MAC_IPV6_TCP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / tcp / end actions drop / end
    
  2. send MAC_IPV6_TCP matched packets, check all packets are dropped. send the mismatched packets, check all packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.33.3.5. Subcase 5: MAC_IPV6_TCP mark+rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / tcp / end actions mark id 2 / rss / end
    
  2. send MAC_IPV6_TCP matched packets, check all packets are distributed to all queue with FDIR matched ID=0x2. send the mismatched packets, check all packets are distributed to all queues without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed to all queues without FDIR matched ID. check there is no rule listed.

70.33.3.6. Subcase 6: MAC_IPV6_TCP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 / udp / end actions mark id 1 / end
    
  2. repeat the step 2-3 of in subcase 3, get the same result.

70.33.4. Test Case: MAC_IPV6_UDP_WITHOUT_INPUT_SET

  1. replace “tcp” with “udp” in all the subcases of MAC_IPV6_TCP_WITHOUT_INPUT_SET pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV6_TCP_WITHOUT_INPUT_SET pattern.
  3. get the same result.

70.34. Test case: MAC_IPV4_GTPU_IPV4 pattern

70.34.1. Subcase 1: MAC_IPV4_GTPU_IPV4 inner src ip queue index

all index cases steps and expected result are the same

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / 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.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.34.2. Subcase 2: MAC_IPV4_GTPU_IPV4 inner src ip rss queues

all rss queues cases steps and expected result are the same

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end
    
  2. send matched packets, check the packets are distributed to queue 2 or queue 3 with FDIR matched ID=0x1. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.34.3. Subcase 3: MAC_IPV4_GTPU_IPV4 inner src ip passthru

all passthru cases steps and expected result are the same

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x1. send mismatched packets, check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.34.4. Subcase 4: MAC_IPV4_GTPU_IPV4 inner src ip drop

all drop cases steps and expected result are the same

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. Then check there is no rule listed.

70.34.5. Subcase 5: MAC_IPV4_GTPU_IPV4 inner src ip mark+rss

all mark+rss cases steps and expected result are the same

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / end actions rss / 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 received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. Then check there is no rule listed.

70.34.6. Subcase 6: MAC_IPV4_GTPU_IPV4 inner dst ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of subcase 1.

70.34.7. Subcase 7: MAC_IPV4_GTPU_IPV4 inner dst ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of subcase 2.

70.34.8. Subcase 8: MAC_IPV4_GTPU_IPV4 inner dst ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end

replace rule and repeat step of subcase 3.

70.34.9. Subcase 9: MAC_IPV4_GTPU_IPV4 inner dst ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions drop / end

replace rule and repeat step of subcase 4.

70.34.10. Subcase 10: MAC_IPV4_GTPU_IPV4 inner dst ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / end actions rss / mark / end

replace rule and repeat step of subcase 5.

70.34.11. Subcase 11: MAC_IPV4_GTPU_IPV4 2 tuple queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.34.12. Subcase 12: MAC_IPV4_GTPU_IPV4 2 tuple queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.34.13. Subcase 13: MAC_IPV4_GTPU_IPV4 2 tuple passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end

replace rule and repeat step of subcase 3.

70.34.14. Subcase 14: MAC_IPV4_GTPU_IPV4 2 tuple drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end

replace rule and repeat step of subcase 4.

70.34.15. Subcase 15: MAC_IPV4_GTPU_IPV4 2 tuple mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss / mark / end

replace rule and repeat step of subcase 5.

70.35. Test case: MAC_IPV4_GTPU_IPV4_TCP pattern

70.35.1. Subcase 1: MAC_IPV4_GTPU_IPV4_TCP inner src ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.35.2. Subcase 2: MAC_IPV4_GTPU_IPV4_TCP inner src ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.35.3. Subcase 3: MAC_IPV4_GTPU_IPV4_TCP inner src ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.35.4. Subcase 4: MAC_IPV4_GTPU_IPV4_TCP inner src ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.35.5. Subcase 5: MAC_IPV4_GTPU_IPV4_TCP inner src ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.35.6. Subcase 6: MAC_IPV4_GTPU_IPV4_TCP inner dst ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.35.7. Subcase 7: MAC_IPV4_GTPU_IPV4_TCP inner dst ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.35.8. Subcase 8: MAC_IPV4_GTPU_IPV4_TCP inner dst ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.35.9. Subcase 9: MAC_IPV4_GTPU_IPV4_TCP inner dst ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.35.10. Subcase 10: MAC_IPV4_GTPU_IPV4_TCP inner dst ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.35.11. Subcase 11: MAC_IPV4_GTPU_IPV4_TCP 4 tuple queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / 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

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.35.12. Subcase 12: MAC_IPV4_GTPU_IPV4_TCP 4 tuple queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / 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

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.35.13. Subcase 13: MAC_IPV4_GTPU_IPV4_TCP 4 tuple passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / 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

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.35.14. Subcase 14: MAC_IPV4_GTPU_IPV4_TCP 4 tuple drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.35.15. Subcase 15: MAC_IPV4_GTPU_IPV4_TCP 4 tuple mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss/ mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.35.16. Subcase 16: MAC_IPV4_GTPU_IPV4_TCP inner src port queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.35.17. Subcase 17: MAC_IPV4_GTPU_IPV4_TCP inner src port queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.35.18. Subcase 18: MAC_IPV4_GTPU_IPV4_TCP inner src port passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.35.19. Subcase 19: MAC_IPV4_GTPU_IPV4_TCP inner src port drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.35.20. Subcase 20: MAC_IPV4_GTPU_IPV4_TCP inner src port mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp src is 22 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.35.21. Subcase 21: MAC_IPV4_GTPU_IPV4_TCP inner dst port queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.35.22. Subcase 22: MAC_IPV4_GTPU_IPV4_TCP inner dst port queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.35.23. Subcase 23: MAC_IPV4_GTPU_IPV4_TCP inner dst port passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.35.24. Subcase 24: MAC_IPV4_GTPU_IPV4_TCP inner dst port drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.35.25. Subcase 25: MAC_IPV4_GTPU_IPV4_TCP inner dst port mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp dst is 23 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.35.26. Subcase 26: MAC_IPV4_GTPU_IPV4_TCP without inputset queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/TCP()/("X"*480)], iface="ens192f0")
    

    send mismatched packets, check the packets are redirected by RSS without FDIR matched ID:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/UDP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/SCTP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IP()/ICMP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/IPv6()/TCP()/("X"*480)], iface="ens192f0")
    
  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.35.27. Subcase 27: MAC_IPV4_GTPU_IPV4_TCP without inputset queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src / udp / gtpu / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end
    
  2. send matched packets of subcase 26, check the packets are distributed to queue group with FDIR matched ID=0x1. send mismatched packets of subcase 26, check the packets are distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.35.28. Subcase 28: MAC_IPV4_GTPU_IPV4_TCP without inputset passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions passthru / mark id 1 / end
    
  2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.35.29. Subcase 29: MAC_IPV4_GTPU_IPV4_TCP without inputset drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions drop / end
    
  2. send matched packets of subcase 26, check the packets are dropped. send mismatched packets of subcase 26, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.35.30. Subcase 30: MAC_IPV4_GTPU_IPV4_TCP without inputset mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 / tcp / end actions rss / mark / end
    
  2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x0. send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.36. Test case: MAC_IPV4_GTPU_IPV4_UDP pattern

  1. replace “tcp” with “udp” in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
  3. get the same result.

70.37. Test case: MAC_IPV4_GTPU_EH_IPV4 pattern

70.37.1. Subcase 1: MAC_IPV4_GTPU_EH_IPV4 inner src ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.37.2. Subcase 2: MAC_IPV4_GTPU_EH_IPV4 inner src ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.37.3. Subcase 3: MAC_IPV4_GTPU_EH_IPV4 inner src ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.37.4. Subcase 4: MAC_IPV4_GTPU_EH_IPV4 inner src ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.37.5. Subcase 5: MAC_IPV4_GTPU_EH_IPV4 inner src ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.37.6. Subcase 6: MAC_IPV4_GTPU_EH_IPV4 inner dst ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.37.7. Subcase 7: MAC_IPV4_GTPU_EH_IPV4 inner dst ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.37.8. Subcase 8: MAC_IPV4_GTPU_EH_IPV4 inner dst ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.37.9. Subcase 9: MAC_IPV4_GTPU_EH_IPV4 inner dst ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.37.10. Subcase 10: MAC_IPV4_GTPU_EH_IPV4 inner dst ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.37.11. Subcase 11: MAC_IPV4_GTPU_EH_IPV4 2 tuple queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.37.12. Subcase 12: MAC_IPV4_GTPU_EH_IPV4 2 tuple queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.37.13. Subcase 13: MAC_IPV4_GTPU_EH_IPV4 2 tuple passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.37.14. Subcase 14: MAC_IPV4_GTPU_EH_IPV4 2 tuple drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.37.15. Subcase 15: MAC_IPV4_GTPU_EH_IPV4 2 tuple mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions mark id 1 / rss / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.38. Test case: MAC_IPV4_GTPU_EH_IPV4_TCP pattern

70.38.1. Subcase 1: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.38.2. Subcase 2: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.38.3. Subcase 3: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.38.4. Subcase 4: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.38.5. Subcase 5: MAC_IPV4_GTPU_EH_IPV4_TCP inner src ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 / tcp / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.38.6. Subcase 6: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.38.7. Subcase 7: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip rss queues

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.38.8. Subcase 8: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.38.9. Subcase 9: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.38.10. Subcase 10: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst ip mark+rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 dst is 192.168.0.21 / tcp / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.38.11. Subcase 11: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / 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

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.38.12. Subcase 12: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / 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

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.38.13. Subcase 13: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / 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

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.38.14. Subcase 14: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.38.15. Subcase 15: MAC_IPV4_GTPU_EH_IPV4_TCP 4 tuple mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.38.16. Subcase 16: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.38.17. Subcase 17: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.38.18. Subcase 18: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.38.19. Subcase 19: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.38.20. Subcase 20: MAC_IPV4_GTPU_EH_IPV4_TCP inner src port mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp src is 22 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.38.21. Subcase 21: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port queue index

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions queue index 1 / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 1.

70.38.22. Subcase 22: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port queue group

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions rss queues 2 3 end / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 2.

70.38.23. Subcase 23: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port passthru

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions passthru / mark id 1 / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 3.

70.38.24. Subcase 24: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port drop

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions drop / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 4.

70.38.25. Subcase 25: MAC_IPV4_GTPU_EH_IPV4_TCP inner dst port mark/rss

rules:

flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp dst is 23 / end actions rss / mark / end

replace rule and repeat step of MAC_IPV4_GTPU_IPV4 pattern subcase 5.

70.38.26. Subcase 26: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions mark id 1 / rss / end
    
  2. send matched packets, check the packets are redirected by RSS with FDIR matched ID=0x1:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
    

    send mismatched packets, check the packets are redirected by RSS without FDIR matched ID:

    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/UDP()/("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/SCTP()("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/ICMP()("X"*480)], iface="ens192f0")
    sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IPv6()/TCP()/("X"*480)], iface="ens192f0")
    
  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.38.27. Subcase 27: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset queue group

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss queues 0 1 2 3 end / mark id 1 / end
    
  2. send matched packets of subcase 26, check the packets are distributed to queue group with FDIR matched ID=0x1. send mismatched packets of subcase 26, check the packets are distributed by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. Then check there is no rule listed.

70.38.28. Subcase 28: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions passthru / mark id 1 / end
    
  2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x1. send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR ID. check there is no rule listed.

70.38.29. Subcase 29: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions drop / end
    
  2. send matched packets of subcase 26, check the packets are dropped. send mismatched packets of subcase 26, check the packets are not dropped without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped without FDIR matched ID. Then check there is no rule listed.

70.38.30. Subcase 30: MAC_IPV4_GTPU_EH_IPV4_TCP without inputset mark/rss

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp / end actions rss / mark / end
    
  2. send matched packets of subcase 26, check the packets are redirected by RSS with FDIR matched ID=0x0. send mismatched packets of subcase 26, check the packets are redirected by RSS without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are distributed by RSS without FDIR matched ID. check there is no rule listed.

70.39. Test case: MAC_IPV4_GTPU_EH_IPV4_UDP pattern

  1. replace “tcp” with “udp” in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  3. get the same result.

70.40. Test case: MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern

without inputset match packets:

sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")

without inputset mismatch packets:

sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/UDP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/ICMP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6()/TCP()/("X"*480)], iface="ens192f0")
  1. replace “gtp_psc” with “gtp_psc pdu_t is 0” in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  2. replace without inputset packets in the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  4. get the same result.

70.41. Test case: MAC_IPV4_GTPU_EH_DL_IPV4_UDP pattern

  1. replace “tcp” with “udp” in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
  3. get the same result.

70.42. Test case: MAC_IPV4_GTPU_EH_UL_IPV4 pattern

  1. replace “gtp_psc” with “gtp_psc pdu_t is 1” in all the subcases of MAC_IPV4_GTPU_EH_IPV4 pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4 pattern.
  3. get the same result.

70.43. Test case: MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern

without inputset match packets:

sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/TCP()/("X"*480)], iface="ens192f0")

without inputset mismatch packets:

sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP()/TCP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer()/IP()/TCP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/UDP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/SCTP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP()/ICMP()/("X"*480)], iface="ens192f0")
sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6()/TCP()/("X"*480)], iface="ens192f0")
  1. replace “gtp_psc” with “gtp_psc pdu_t is 1” in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  2. replace without inputset packets in the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  4. get the same result.

70.44. Test case: MAC_IPV4_GTPU_EH_UL_IPV4_UDP pattern

  1. replace “tcp” with “udp” in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
  2. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
  3. get the same result.

70.45. Test case: MAC_IPV4_GTPU_IPV6 pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_IPV4 pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_IPV4 pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4 pattern.
  4. get the same result

70.46. Test case: MAC_IPV4_GTPU_IPV6_TCP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_TCP pattern.
  4. get the same result

70.47. Test case: MAC_IPV4_GTPU_IPV6_UDP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_IPV4_UDP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_IPV4_UDP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_IPV4_UDP pattern.
  4. get the same result

70.48. Test case: MAC_IPV4_GTPU_EH_IPV6_TCP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV4_TCP pattern.
  4. get the same result

70.49. Test case: MAC_IPV4_GTPU_EH_IPV6_UDP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_IPV6_UDP pattern.
  4. get the same result.

70.50. Test case: MAC_IPV4_GTPU_EH_DL_IPV6_TCP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV4_TCP pattern.
  4. get the same result

70.51. Test case: MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_DL_IPV6_UDP pattern.
  4. get the same result.

70.52. Test case: MAC_IPV4_GTPU_EH_UL_IPV6_TCP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV4_TCP pattern.
  4. get the same result.

70.53. Test case: MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern

  1. replace inner “ipv4” with “ipv6” in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
  2. replace inner ipv4 src/dst ip with ipv6 src/dst value in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
  3. Then repeat all the steps in all the subcases of MAC_IPV4_GTPU_EH_UL_IPV6_UDP pattern.
  4. get the same result.

70.54. Test case: GTPU inner co-exist test

70.54.1. Subcase 1: inner IPv4 gtpu conflict rule

Rules:

#1 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
#2 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#3 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#4 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
#5 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#6 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#7 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
#8 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#9 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#10 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / end actions queue index 10 / mark id 1 / end
#11 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#12 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end

packets:

pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
pkt7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
pkt8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt9 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
pkt10 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/Raw('x'*20)
pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IP(src="192.168.0.20", dst="192.168.0.21")/UDP(sport=22, dport=23)/Raw('x'*20)
  1. First create #1 rule, verify #2/3 rule create failed and #4 create successfully. send match packets(pkt1/4), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  2. destroy #1 rule, verify #5-12 any rule create failed and #2 create successfully. send match packets(pkt2/4), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  3. destroy #4 rule, verify #1 rule create failed and #5 create successfully. send match packets(pkt2/5), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  4. destroy #2 rule, verify #4/7/8/10/11 rule create failed and #6 create successfully. send match packets(pkt5/6), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  5. destroy #5 rule, verify #4/7/9/10/12 rule create failed and #8 create successfully. send match packets(pkt6/8), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  6. destroy #6 rule, verify #4/5/7 rule create failed and #9 create successfully. send match packets(pkt8/9), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  7. destroy #8 rule, verify #4/6/7 rule create failed and #10 create successfully. send match packets(pkt9/10), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  8. destroy #9 rule, verify #4/5/6/11/12 rule create failed and #7 create successfully. send match packets(pkt7/10), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  9. destroy #10 rule, verify #4/5/6/8/9 rule create failed and #11 create successfully. send match packets(pkt7/11), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  10. verify #4/5/6/8/9/10 rule create failed and #12 create successfully. send match packets(pkt7/11/12), check the packets are distributed to queue 10 with FDIR matched ID=0x1.
  11. verify #4/5/6/8/9/10 rule create failed and #3 create successfully. send match packets(pkt3/7/11/12), check the packets are distributed to queue 10 with FDIR matched ID=0x1.

70.54.2. Subcase 2: inner IPv6 gtpu conflict rule

Rules:

#1 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
#2 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#3 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#4 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
#5 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#6 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#7 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
#8 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#9 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 0 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#10 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / end actions queue index 10 / mark id 1 / end
#11 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end
#12 flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc pdu_t is 1 / ipv6 src is 2001::2 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 22 dst is 23 / end actions queue index 10 / mark id 1 / end

packets:

pkt1 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
pkt2 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt3 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
pkt4 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
pkt5 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt6 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer()/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
pkt7 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
pkt8 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt9 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=0)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)
pkt10 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/Raw('x'*20)
pkt11 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22, dport=23)/Raw('x'*20)
pkt12 = Ether(src="a4:bf:01:51:27:ca", dst="00:11:22:33:44:55")/IP()/UDP(dport=2152)/GTP_U_Header()/GTPPDUSessionContainer(type=1)/IPv6(src="2001::2", dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22, dport=23)/Raw('x'*20)

repeat step 1-12 of subcase 1.

70.55. Test case: MAC_IPV4_GRE_IPV4 pattern

70.55.1. Subcase 1: MAC_IPV4_GRE_IPV4 queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 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.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 1 without FDIR matched ID. check there is no rule listed.

70.55.2. Subcase 2: MAC_IPV4_GRE_IPV4 rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 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 FDIR matched ID. send mismatched packets, check the packets are not distributed to queue 2 or 3 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. check there is no rule listed.

70.55.3. Subcase 3: MAC_IPV4_GRE_IPV4 passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / end actions passthru / end
    
  2. send matched packets, check the packets are distributed by RSS 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 distributed to the same queue without FDIR matched ID=0x0. check there is no rule listed.

70.55.4. Subcase 4: MAC_IPV4_GRE_IPV4 drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / end actions drop / end
    
  2. send matched packets, check the packets are dropped send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.55.5. Subcase 5: MAC_IPV4_GRE_IPV4 mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / 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. check there is no rule listed.

70.55.6. Subcase 6: MAC_IPV4_GRE_IPV4 mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / end actions 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 distributed to the same queue without FDIR matched ID. check there is no rule listed.

70.56. Test case: MAC_IPV6_GRE_IPV4 pattern

70.56.1. Subcase 1: MAC_IPV6_GRE_IPV4 queue index

70.56.2. Subcase 2: MAC_IPV6_GRE_IPV4 rss queues

70.56.3. Subcase 3: MAC_IPV6_GRE_IPV4 passthru

70.56.4. Subcase 4: MAC_IPV6_GRE_IPV4 drop

70.56.5. Subcase 5: MAC_IPV6_GRE_IPV4 mark+rss

70.56.6. Subcase 6: MAC_IPV6_GRE_IPV4 mark

each subcase is the same as the subcase of Test case: MAC_IPV4_GRE_IPV4 pattern, just only pattern is different, replace it with ‘eth / ipv6 / gre / ipv4’

70.57. Test case: MAC_IPV4_GRE_IPV6 pattern

70.57.1. Subcase 1: MAC_IPV4_GRE_IPV6 queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / end actions queue index 15 / mark / end
    
  2. send matched packets, check the packets is distributed to queue 15 with 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:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.57.2. Subcase 2: MAC_IPV4_GRE_IPV6 rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark id 1/ end
    
  2. send matched packets, check the packets is distributed to queue 8-15 with FDIR matched ID=0x1. 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 distributed by RSS without FDIR matched ID. check there is no rule listed.

70.57.3. Subcase 3: MAC_IPV4_GRE_IPV6 passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / 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 . check there is no rule listed.

70.57.4. Subcase 4: MAC_IPV4_GRE_IPV6 drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / end actions drop / end
    
  2. send matched packets, check the packets are dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.57.5. Subcase 5: MAC_IPV4_GRE_IPV6 mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / 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. check there is no rule listed.

70.57.6. Subcase 6: MAC_IPV4_GRE_IPV6 mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / end actions 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 . check there is no rule listed.

70.58. Test case: MAC_IPV6_GRE_IPV6 pattern

70.58.1. Subcase 1: MAC_IPV6_GRE_IPV6 queue index

70.58.2. Subcase 2: MAC_IPV6_GRE_IPV6 rss queues

70.58.3. Subcase 3: MAC_IPV6_GRE_IPV6 passthru

70.58.4. Subcase 4: MAC_IPV6_GRE_IPV6 drop

70.58.5. Subcase 5: MAC_IPV4_GRE_IPV6 mark+rss

70.58.6. Subcase 6: MAC_IPV6_GRE_IPV6 mark

each subcase is the same as the subcase of Test case: MAC_IPV4_GRE_IPV6 pattern, just only pattern is different, replace it with ‘eth / ipv6 / gre / ipv6’

70.59. Test case: MAC_IPV4_GRE_IPV4_TCP pattern

70.59.1. Subcase 1: MAC_IPV4_GRE_IPV4_TCP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 0 / 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 distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.59.2. Subcase 2: MAC_IPV4_GRE_IPV4_TCP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions rss queues 1 2 3 4 end / mark id 4294967294 / end
    
  2. send matched packets, check the packets is distributed to queue 1-4 with FDIR matched ID=0xfffffffe. 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 distributed by RSS without FDIR matched ID. check there is no rule listed.

70.59.3. Subcase 3: MAC_IPV4_GRE_IPV4_TCP passthru

  1. create filter rule with mark:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x1. 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. check there is no rule listed.

70.59.4. Subcase 4: MAC_IPV4_GRE_IPV4_TCP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions drop / end
    
  2. send matched packet, check the packet is dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.59.5. Subcase 5: MAC_IPV4_GRE_IPV4_TCP mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions mark id 2 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x2 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. check there is no rule listed.

70.59.6. Subcase 6: MAC_IPV4_GRE_IPV4_TCP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv4 src is 192.168.0.20 dst is 192.168.0.21 tos is 4 / tcp src is 22 dst is 23 / end actions mark id 1 / end
    
  2. repeat the step 2-3 of in subcase 3, get the same result.

70.60. Test case: MAC_IPV6_GRE_IPV4_TCP pattern

70.60.1. Subcase 1: MAC_IPV6_GRE_IPV4_TCP queue index

70.60.2. Subcase 2: MAC_IPV6_GRE_IPV4_TCP rss queues

70.60.3. Subcase 3: MAC_IPV6_GRE_IPV4_TCP passthru

70.60.4. Subcase 4: MAC_IPV6_GRE_IPV4_TCP drop

70.60.5. Subcase 5: MAC_IPV6_GRE_IPV4_TCP mark+rss

70.60.6. Subcase 6: MAC_IPV6_GRE_IPV4_TCP mark

each subcase is the same as the subcase of Test case: MAC_IPV4_GRE_IPV4_TCP pattern, just only pattern is different, replace it with ‘eth / ipv6 / gre / ipv4 / tcp’

70.61. Test case: MAC_IPV4_GRE_IPV6_TCP pattern

70.61.1. Subcase 1: MAC_IPV4_GRE_IPV6_TCP queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 0 / 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 distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.61.2. Subcase 2: MAC_IPV4_GRE_IPV6_TCP rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / tcp src is 22 dst is 23 / end actions rss queues 4 5 6 7 end / mark id 4294967294 / end
    
  2. send matched packets, check the packets is distributed to queue 4-7 with FDIR matched ID=0xfffffffe. 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 distributed by RSS without FDIR matched ID. check there is no rule listed.

70.61.3. Subcase 3: MAC_IPV4_GRE_IPV6_TCP passthru

  1. create filter rule with mark:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / tcp src is 22 dst is 23 / end actions passthru / mark id 1 / end
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x1. 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. check there is no rule listed.

70.61.4. Subcase 4: MAC_IPV4_GRE_IPV6_TCP drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / tcp src is 22 dst is 23 / end actions drop / end
    
  2. send matched packet, check the packet is dropped. send mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.61.5. Subcase 5: MAC_IPV4_GRE_IPV6_TCP mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / tcp src is 22 dst is 23 / end actions mark id 2 / rss / end
    
  2. send matched packets, check the packets are distributed by RSS with FDIR matched ID=0x2 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. check there is no rule listed.

70.61.6. Subcase 6: MAC_IPV4_GRE_IPV6_TCP mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 / gre / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 tc is 1 / tcp src is 22 dst is 23 / end actions mark id 1 / end
    
  2. repeat the step 2-3 of in subcase 3, get the same result.

70.62. Test case: MAC_IPV6_GRE_IPV6_TCP pattern

70.62.1. Subcase 1: MAC_IPV6_GRE_IPV6_TCP queue index

70.62.2. Subcase 2: MAC_IPV6_GRE_IPV6_TCP rss queues

70.62.3. Subcase 3: MAC_IPV6_GRE_IPV6_TCP passthru

70.62.4. Subcase 4: MAC_IPV6_GRE_IPV6_TCP drop

70.62.5. Subcase 5: MAC_IPV6_GRE_IPV6_TCP mark+rss

70.62.6. Subcase 6: MAC_IPV6_GRE_IPV6_TCP mark

each subcase is the same as the subcase of Test case: MAC_IPV4_GRE_IPV6_TCP pattern, just only pattern is different, replace it with ‘eth / ipv6 / gre / ipv6 / tcp’

70.63. Test case: MAC_IPV4_GRE_IPV4_UDP pattern

70.63.1. Subcase 1: MAC_IPV4_GRE_IPV4_UDP queue index

70.63.2. Subcase 2: MAC_IPV4_GRE_IPV4_UDP rss queues

70.63.3. Subcase 3: MAC_IPV4_GRE_IPV4_UDP passthru

70.63.4. Subcase 4: MAC_IPV4_GRE_IPV4_UDP drop

70.63.5. Subcase 5: MAC_IPV4_GRE_IPV4_UDP mark+rss

70.63.6. Subcase 6: MAC_IPV4_GRE_IPV4_UDP mark

each subcase is the same as the subcase of Test case: MAC_IPV4_GRE_IPV4_TCP pattern, just only pattern is different, replace “tcp” with “udp” in all the subcases

70.64. Test case: MAC_IPV4_GRE_IPV6_UDP pattern

70.64.1. Subcase 1: MAC_IPV4_GRE_IPV6_UDP queue index

70.64.2. Subcase 2: MAC_IPV4_GRE_IPV6_UDP rss queues

70.64.3. Subcase 3: MAC_IPV4_GRE_IPV6_UDP passthru

70.64.4. Subcase 4: MAC_IPV4_GRE_IPV6_UDP drop

70.64.5. Subcase 5: MAC_IPV4_GRE_IPV6_UDP mark+rss

70.64.6. Subcase 6: MAC_IPV4_GRE_IPV6_UDP mark

each subcase is the same as the subcase of Test case: MAC_IPV4_GRE_IPV6_TCP pattern, just only pattern is different, replace “tcp” with “udp” in all the subcases

70.65. Test case: MAC_IPV6_GRE_IPV4_UDP pattern

70.65.1. Subcase 1: MAC_IPV6_GRE_IPV4_UDP queue index

70.65.2. Subcase 2: MAC_IPV6_GRE_IPV4_UDP rss queues

70.65.3. Subcase 3: MAC_IPV6_GRE_IPV4_UDP passthru

70.65.4. Subcase 4: MAC_IPV6_GRE_IPV4_UDP drop

70.65.5. Subcase 5: MAC_IPV6_GRE_IPV4_UDP mark+rss

70.65.6. Subcase 6: MAC_IPV6_GRE_IPV4_UDP mark

each subcase is the same as the subcase of Test case: MAC_IPV6_GRE_IPV4_TCP pattern, just only pattern is different, replace “tcp” with “udp” in all the subcases

70.66. Test case: MAC_IPV6_GRE_IPV6_UDP pattern

70.66.1. Subcase 1: MAC_IPV6_GRE_IPV6_UDP queue index

70.66.2. Subcase 2: MAC_IPV6_GRE_IPV6_UDP rss queues

70.66.3. Subcase 3: MAC_IPV6_GRE_IPV6_UDP passthru

70.66.4. Subcase 4: MAC_IPV6_GRE_IPV6_UDP drop

70.66.5. Subcase 5: MAC_IPV6_GRE_IPV6_UDP mark+rss

70.66.6. Subcase 6: MAC_IPV6_GRE_IPV6_UDP mark

each subcase is the same as the subcase of Test case: MAC_IPV6_GRE_IPV6_TCP pattern, just only pattern is different, replace “tcp” with “udp” in all the subcases

70.67. Test case: MAC_IPV4_PAY pattern multicast

Disable promisc mode in the testpmd:

testpmd> set promisc all off

Enable all multicast mode in the testpmd:

testpmd> set allmulti all on

configure multicast address:

testpmd> mcast_addr add 0 11:22:33:44:55:66

70.67.1. Subcase 1: MAC_IPV4_PAY queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end
    
  2. send multicast matched packets, check the packets are distributed to queue 1 without FDIR matched ID. send multicast mismatched packets, check the packets are not distributed to queue 1 without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packets are not distributed to queue 1 without FDIR matched ID. check there is no rule listed.

70.67.2. Subcase 2: MAC_IPV4_PAY rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / mark / end
    
  2. send multicast matched packets, check the packets are distributed to queue 2 or 3 without without FDIR matched ID. send multicast mismatched packets, check the packets are not distributed to queue 2 or 3 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. check there is no rule listed.

70.67.3. Subcase 3: MAC_IPV4_PAY passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark / end
    
  2. send multicast matched packets, check the packets are distributed by RSS without FDIR matched ID. send multicast 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=0x0. check there is no rule listed.

70.67.4. Subcase 4: MAC_IPV4_PAY drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions drop / mark / end
    
  2. send multicast matched packets, check the packets are dropped send multicast mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are not dropped. check there is no rule listed.

70.67.5. Subcase 5: MAC_IPV4_PAY mark+rss

Note: This combined action is mark with RSS which is without queues specified.

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / rss / end
    
  2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0 send multicast 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. check there is no rule listed.

70.67.6. Subcase 6: MAC_IPV4_PAY mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / end
    
  2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0. send multicast 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. check there is no rule listed.

70.67.7. Subcase 7: MAC_IPV4_PAY protocal

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 1 / end actions queue index 1 / mark id 1 / end
    flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 17 / end actions passthru / mark id 3 / end
    
  2. send matched packets:

    pkt1 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1)/Raw('x' * 80)
    pkt2 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.19",dst="224.0.0.1", proto=1)/Raw('x' * 80)
    pkt3 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw('x' * 80)
    pkt4 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17)/UDP(sport=22,dport=23)/Raw('x' * 80)
    pkt5 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17, ttl=2, tos=4)/Raw('x' * 80)
    pkt6 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", frag=1, proto=17, ttl=2, tos=4)/Raw('x' * 80)
    

    check the pkt1 and pkt2 are redirected to queue 1 with FDIR matched ID=0x1. check the pkt3-pkt6 are distributed by RSS with FDIR matched ID=0x3. send mismatched packets:

    pkt7 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=1)/Raw('x' * 80)
    pkt8 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=6)/UDP(sport=22,dport=23)/Raw('x' * 80)
    pkt9 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1")/TCP(sport=22,dport=23)/Raw('x' * 80)
    pkt10 = Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/TCP(sport=22,dport=23)/Raw('x' * 80)
    

    check the packets received have not FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets have not FDIR matched ID. check there is no rule listed.

70.68. Test case: MAC_IPV6_PAY pattern multicast

Disable promisc mode in the testpmd:

testpmd> set promisc all off

Enable all multicast mode in the testpmd:

testpmd> set allmulti all on

configure multicast address:

testpmd> mcast_addr add 0 11:22:33:44:55:66

70.68.1. Subcase 1: MAC_IPV6_PAY queue index

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions queue index 15 / mark / end
    
  2. send multicast matched packets, check the packets is distributed to queue 15 with FDIR matched ID=0x0. send multicast mismatched packets, check the packets are distributed by RSS without FDIR matched ID.

  3. verify rules can be listed and destroyed:

    testpmd> flow list 0
    

    check the rule listed. destroy the rule:

    testpmd> flow destroy 0 rule 0
    
  4. verify matched packet is distributed by RSS without FDIR matched ID. check there is no rule listed.

70.68.2. Subcase 2: MAC_IPV6_PAY rss queues

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark / end
    
  2. send multicast matched packets, check the packets is distributed to queue 8-15 with FDIR matched ID=0x0. send multicast 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 distributed by RSS without FDIR matched ID. check there is no rule listed.

70.68.3. Subcase 3: MAC_IPV6_PAY passthru

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions passthru / mark / end
    
  2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0. send multicast 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 . check there is no rule listed.

70.68.4. Subcase 4: MAC_IPV6_PAY drop

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / mark / end
    
  2. send multicast matched packets, check the packets are dropped. send multicast mismatched packets, check the packets are not dropped.

  3. repeat step 3 of subcase 1.

  4. verify matched packet is dropped. check there is no rule listed.

70.68.5. Subcase 5: MAC_IPV6_PAY mark+rss

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 ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / rss / end
    
  2. send multicast matched packets, check the packets are distributed by RSS with FDIR matched ID=0x0 send multicast 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. check there is no rule listed.

70.68.6. Subcase 6: MAC_IPV6_PAY mark

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / end
    
  2. repeat the steps of passthru with mark part in subcase 3, get the same result.

70.68.7. Subcase 7: MAC_IPV6_PAY protocal

  1. create filter rules:

    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 17 / end actions rss queues 5 6 end / mark id 0 / end
    flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 6 / end actions mark id 2 / rss / end
    
  2. send matched packets:

    pkt1 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=17, tc=1, hlim=2)/("X"*480)
    pkt2 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)
    pkt3 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=17)/TCP(sport=22,dport=23)/("X"*480)
    pkt4 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/TCP(sport=22,dport=23)/("X"*480)
    pkt5 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=6)/("X"*480)
    pkt6 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/TCP(sport=22,dport=23)/("X"*480)
    

    check pkt1-pkt4 are redirected to queue 5 or queue 6 with FDIR matched ID=0x0. check pkt5 and pkt6 are distributed by RSS with FDIR matched ID=0x2. send mismatched packets:

    pkt7 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::3", nh=1)/("X"*480)
    pkt8 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/SCTP()/("X"*480)
    pkt9 = Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=1)/TCP(sport=22,dport=23)/("X"*480)
    

    check the packets are received without FDIR matched ID.

  3. repeat step 3 of subcase 1.

  4. verify matched packets are received without FDIR matched ID. check there is no rule listed.