Interface stop receiving packets

Rafael Vargas vargas at khomp.com
Wed Sep 4 04:58:04 CEST 2024


Hi,

I have an application using DPDK and it mostly works (my main goal is to
accelerate UDP packet forwarding using a set of rules).

I currently have two problems:
1 - rte_eth_rx_burst eventually starts returning always 0, and the
stats.imissed counter starts to count up.
     The application is working normally, receiving packets, applying the
rules and adding them to the correct tx queue and it just stops receiving
packets. The loop keeps calling rte_eth_rx_burst bit the return value is
always zero and all the packets sent to the interface are lost.

2 - the rx rings of the vlinks seem to take much longer to be consumed by
the OS stack than it would be if the OS were controlling the interface. The
vlink is created with

rte_eal_hotplug_add( "vdev", "virtio_user0",
"path=/dev/vhost-net,queues=1,queue_size=4096,iface=ens224,mac=XX:XX:XX:XX:XX:XX"
)

      When using the same scenario without the DPDK layer (directly using
the OS network stack features for the interface) I can handle more traffic.
When enabling the DPDK layer, the rings are constantly full and several
packets get lost. Sometimes even with low traffic the the rings don't reach
full capacity but take a long time to be emptied by the OS.

Most of my tests are using the vmxnet3 adapter, but I have similar results
with i40e. Also the results are the same with DPDK 22.11.1 and 23.11.1, All
tests using Debian 11.

Has anyone seen behaviors like this? And how would I approach solving them?

Thanks in advance!
--
Rafael Vargas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20240903/1ce5c783/attachment-0001.htm>


More information about the users mailing list