RX Out-of-Buffer Issues on Mellanox NIC with High-Rate Packet Generator Traffic

Hello,

I’m experiencing an issue with RX packet drops on our Mellanox ConnectX-5 NICs under high traffic load generated by DPDK-based packet generators (Pktgen/TrafficGen).

Environment:

  • NIC: Mellanox ConnectX-5 25G

  • Driver: MLNX_OFED_LINUX-5.8-4.1.5.0 (Ubuntu 22.04, Kernel 5.15)

  • DPDK version: 25.11.0-rc0

  • Traffic: High PPS TCP SYN floods using Pktgen / TrafficGen

  • Observed PPS: Up to 37 million packets per second on the NIC

Problem (in the target machine):

  • When generating traffic with hping3, rx_out_of_buffer counter remains stable.

  • When using DPDK-based Pktgen or TrafficGen at high rates, rx_out_of_buffer counter increases rapidly ~%90 of all the packets.

  • CPU usage does not reach 100%, and NIC queues themselves do not report missed packets (imissed remains 0).

  • Interrupt coalescence is disabled, flow control is off, and PCI Max Read Request is set to 4096.

Questions:

  1. Why does rx_out_of_buffer increase under high DPDK traffic, even though the receive rings are not full and CPU is not saturated?

  2. Are there specific NIC tuning parameters for high-PPS DPDK traffic to prevent this counter from increasing?

  3. Could this be related to DPDK driver configuration or kernel interaction with Mellanox NICs?

  4. If I am truly hitting the NIC limit, is there a way to overcome the rx_out_of_buffer issue? If I can, I will try to pass the incoming packets to iptables and measure its performance

Any guidance or recommendations would be greatly appreciated.

Note: i also tried theese methods:

sudo sysctl -w net.core.netdev_max_backlog=300000
sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.rmem_default=4194304
sudo sysctl -w net.core.netdev_budget=5000
sudo sysctl -w net.core.netdev_budget_usecs=1000
sudo sysctl -w net.core.wmem_max=4194304
sudo sysctl -w net.core.wmem_default=4194304
sudo ethtool -L {interface_name} combined 63
sudo ethtool -X {interface_name} equal 63
sudo ethtool -C {interface_name} rx-usecs 64 rx-frames 128
sudo ethtool -C {interface_name} adaptive-rx on
sudo ethtool -G {interface_name} rx 4096 tx 4096
sudo ethtool -C {interface_name} adaptive-rx off rx-usecs 0 rx-frames 0
sudo ethtool -A {interface_name} rx off tx off

Thanks in advance

Hi @YigitKt ,

rx_out_of_buffer” means “Number of times receive queue had no software buffers allocated for the adapter's incoming traffic”.

According to your description, I don’t think you hit the NIC limit.

It looks like an environment or configuration issue.

Could you please:

  • Try debug tool perf to find the bottleneck?

or

  • Find another env/os to test again?

Or

  • Reinstall the OS and test again with a “clean” system?

Best regards!