Thank you for your responses Xiaolong. It's very helpful. It confirms our findings from tests.
Thank you Cliff for your response. Having such a matrix would be *extremely useful* to the application developer. More so, since rte_flow seems like an extensive, generic API, while the underlying H/w capabilities could be severely limited, and vary. We would very much appreciate such info. Also, how does RSS relate to rte_flow APIs itself? Since RSS distributes packets based on hashes to queues, and using rte_flow you could distribute packets too to various queues based on other criteria. Does RSS have to be disabled for rte_flow to work? Does RSS take precedence over rte_flow? Is that H/w dependent as well? Thanks, Sruthi On Wed, Jun 19, 2019 at 12:28 PM Cliff Burdick <[email protected]> wrote: > Xiaolong, maybe it would be useful for every vendor to maintain a matrix > of every flow action/match that's supported and not for each PMD? I know > we've had this problem with Mellanox as well. It's likely only a handful of > vendors right now that support any form of rte_flow, so starting it soon > would be nice. Also, I believe in Mellanox's case there are some rules that > are done in hardware and some that aren't, so it would also be nice to > distinguish between those. Someone from Mellanox can correct me if I'm > wrong on that. > > On Tue, Jun 18, 2019 at 10:00 PM Ye Xiaolong <[email protected]> > wrote: > >> >-----Original Message----- >> >From: users [mailto:[email protected]] On Behalf Of Sruthi >> Yellamraju >> >Sent: Monday, June 17, 2019 3:19 AM >> >To: [email protected] >> >Subject: [dpdk-users] i40e + rte_flow: Drop filter not working >> > >> >Hello, >> > >> >I am trying to test the rte_flow API using the testpmd application. >> >Mainly I start traffic forwarding, then set a rte_flow rule to drop all >> ethernet traffic, then check stats to see if traffic is dropped. >> >Tried many different combinations but traffic is not being dropped. >> > >> >- Any thoughts on how I can get a drop rule to work using testpmd? >> >> The rte_flow rule "flow create 0 ingress pattern eth / end actions drop / >> end" >> you used in below test is not supported, it should return an explicit >> error >> when you tried to create it, it's an software bug and we'll fix it. >> >> As for how to drop an available rule in testpmd, you can refer to >> >> https://doc.dpdk.org/guides/howto/rte_flow.html >> >> The flow rule example in it is: flow create 0 ingress pattern eth / vlan >> / ipv4 dst is 192.168.3.2 / end actions drop / end >> >> Also, the statistic you get from `show port stats 0` is obtained by >> reading vsi >> registers, it will record all packets hardware received even if the >> packet will >> be filtered out by the rte flow. Instead, you can try to `set verbose 1` >> in testpmd, >> then you can observe whether the rte_flow rule takes effect or not. >> >> >- Also, is there a list of Intel NICs that support rte_flow with >> descriptions of what rte_flow features they support? >> > >> >> Unfortunately, there is no such list info available currently, but we'll >> try to >> improve our doc in dpdk repo. >> >> @beilei, @qi, correct me if I am wrong. >> >> Thanks, >> Xiaolong >> >> >My NIC is an Intel X710. Using DPDK 19.02. >> >My steps: >> >*(1) Start testpmd:* >> >$ sudo ./build/app/testpmd –l 12,13,14 –n 4 -- -i >> >EAL: Detected 56 lcore(s) >> >EAL: Detected 2 NUMA nodes >> >EAL: Multi-process socket /var/run/dpdk/rte/mp_socket >> >EAL: No free hugepages reported in hugepages-1048576kB >> >EAL: Probing VFIO support... >> >EAL: VFIO support initialized >> >EAL: PCI device 0000:08:00.0 on NUMA socket 0 >> >EAL: probe driver: 8086:1572 net_i40e >> >EAL: using IOMMU type 1 (Type 1) >> >EAL: PCI device 0000:08:00.1 on NUMA socket 0 >> >EAL: probe driver: 8086:1572 net_i40e >> >EAL: PCI device 0000:82:00.0 on NUMA socket 1 >> >EAL: probe driver: 8086:1572 net_i40e >> >EAL: PCI device 0000:82:00.1 on NUMA socket 1 >> >EAL: probe driver: 8086:1572 net_i40e >> >Interactive-mode selected >> >testpmd: create a new mbuf pool <mbuf_pool_socket_0>: n=587456, >> size=2176, >> >socket=0 >> >testpmd: preferred mempool ops selected: ring_mp_mc >> >testpmd: create a new mbuf pool <mbuf_pool_socket_1>: n=587456, >> size=2176, >> >socket=1 >> >testpmd: preferred mempool ops selected: ring_mp_mc Configuring Port 0 >> (socket 0) Port 0: 3C:FD:FE:CE:EC:54 Configuring Port 1 (socket 1) Port 1: >> 3C:FD:FE:CE:EE:08 Checking link statuses... >> >Done >> >testpmd> sta >> >Port 1: link state change event >> >Port 0: link state change event >> > >> >(*2) Start forwarding traffic between two ports* >> >testpmd> start >> >io packet forwarding - ports=2 - cores=1 - streams=2 - NUMA support >> enabled, MP allocation mode: native Logical Core 1 (socket 0) forwards >> packets on 2 streams: >> > RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 1) peer=02:00:00:00:00:01 >> > RX P=1/Q=0 (socket 1) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00 >> > io packet forwarding packets/burst=32 >> > nb forwarding cores=1 - nb forwarding ports=2 >> > port 0: RX queue number: 1 Tx queue number: 1 >> > Rx offloads=0x0 Tx offloads=0x10000 >> > RX queue: 0 >> > RX desc=256 - RX free threshold=32 >> > RX threshold registers: pthresh=8 hthresh=8 wthresh=0 >> > RX Offloads=0x0 >> > TX queue: 0 >> > TX desc=256 - TX free threshold=32 >> > TX threshold registers: pthresh=32 hthresh=0 wthresh=0 >> > TX offloads=0x0 - TX RS bit threshold=32 >> > port 1: RX queue number: 1 Tx queue number: 1 >> > Rx offloads=0x0 Tx offloads=0x10000 >> > RX queue: 0 >> > RX desc=256 - RX free threshold=32 >> > RX threshold registers: pthresh=8 hthresh=8 wthresh=0 >> > RX Offloads=0x0 >> > TX queue: 0 >> > TX desc=256 - TX free threshold=32 >> > TX threshold registers: pthresh=32 hthresh=0 wthresh=0 >> > TX offloads=0x0 - TX RS bit threshold=32 >> > >> >*(3) Check that traffic is flowing: OK* >> > >> >testpmd> show port stats all >> > ######################## NIC statistics for port 0 >> ######################## >> > RX-packets: 2565456 RX-missed: 5780962 RX-bytes: 4512982511 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 2562340 TX-errors: 0 TX-bytes: 1383470795 >> > Throughput (since last show) >> > Rx-pps: 0 >> > Tx-pps: 0 >> > >> >> >#################################################################################################### >> >NIC statistics for port 1 >> >######################## >> > RX-packets: 2563321 RX-missed: 5470250 RX-bytes: 4360388448 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 2565053 TX-errors: 0 TX-bytes: 1384794806 >> > Throughput (since last show) >> > Rx-pps: 0 >> > Tx-pps: 0 >> > >> >> >############################################################################ >> > >> >testpmd> show port stats all >> > ######################## NIC statistics for port 0 >> ######################## >> > RX-packets: 3738196 RX-missed: 5781554 RX-bytes: 5226453840 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 3733847 TX-errors: 0 TX-bytes: 2095944031 >> > Throughput (since last show) >> > Rx-pps: 1146794 >> > Tx-pps: 1145588 >> > >> >> >#################################################################################################### >> >NIC statistics for port 1 >> >######################## >> > RX-packets: 3734584 RX-missed: 5470836 RX-bytes: 5073167767 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 3737663 TX-errors: 0 TX-bytes: 2097873710 >> > Throughput (since last show) >> > Rx-pps: 1145356 >> > Tx-pps: 1146673 >> > >> >> >############################################################################ >> > >> > >> >*(4) Set filters to drop all eth traffic from both ports* >> > >> > >> >testpmd> flow create 0 ingress pattern eth / end actions drop / end >> > >> >Flow rule #0 created >> > >> >testpmd> flow create 1 ingress pattern eth / end actions drop / end >> > >> >Flow rule #0 created >> > >> > >> >*(5) Check whether traffic is dropped. Traffic is actually not being >> dropped, so the filter does not seem to work.* >> > >> > >> >testpmd> show port stats all >> > ######################## NIC statistics for port 0 >> ######################## >> > RX-packets: 22396701 RX-missed: 5807012 RX-bytes: 15827722523 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 22345743 TX-errors: 0 TX-bytes: 12669400435 >> > Throughput (since last show) >> > Rx-pps: 1149437 >> > Tx-pps: 1146447 >> > >> >> >#################################################################################################### >> >NIC statistics for port 1 >> >######################## >> > RX-packets: 22369666 RX-missed: 5496215 RX-bytes: 15660935280 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 22333043 TX-errors: 0 TX-bytes: 12682032499 >> > Throughput (since last show) >> > Rx-pps: 1147969 >> > Tx-pps: 1145246 >> > >> > >> >> >############################################################################ >> >testpmd> show port stats all >> > ######################## NIC statistics for port 0 >> ######################## >> > RX-packets: 25054000 RX-missed: 5810727 RX-bytes: 16926854689 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 24977043 TX-errors: 0 TX-bytes: 13764321537 >> > Throughput (since last show) >> > Rx-pps: 1405948 >> > Tx-pps: 1392192 >> > >> > >> >> >#################################################################################################### >> >NIC statistics for port 1 >> >######################## >> > RX-packets: 25024585 RX-missed: 5499881 RX-bytes: 16758760036 >> > RX-errors: 2 >> > RX-nombuf: 0 >> > TX-packets: 24966843 TX-errors: 0 TX-bytes: 13778185984 >> > Throughput (since last show) >> > Rx-pps: 1404664 >> > Tx-pps: 1393490 >> > >> >> >############################################################################ >> > >> >Thanks, >> > >> >Sruthi >> >
