Hello,

I am working on an application that involves fragmenting a large
buffer into many smaller packets/mbufs and sending them with DPDK. The
fragment packets for each data buffer are currently sent in a loop
without any throttling (I plan to add some sort of rate limiting
later). I am not using any of the special DPDK features for IP
fragmention. I am simply preparing and sending mbufs for each
fragment.

The problem I am having is that when I need to send large buffers,
which involve many packets being sent in a tight loop, sometimes part
of the payload is corrupted when received on the other machine. This
is rare and only happens above a certain data rate. I would like to
have a reliable way to detect (or even better, prevent) this
corruption.

Out of paranoia I placed an rte_compiler_barrier() and then an
rte_mb() (a memory barrier) between the code that prepares the mbuf
and the actual tx_burst(). It did not help and I think it should be
unnecessary.

I found some information about the function rte_mbuf_check() and have
started using it to check every received packet on the other end. It
fails to detect this corruption.

Any advice would be appreciated.
-Alan

Reply via email to