One of the most common causes of UDP datagram lost on Linux is an undersized receive buffer on the Linux socket. How to enlarge Linux UDP buffer size?
On Linux, you can change the UDP buffer size (e.g. to 26214400) by (as root):
sysctl -w net.core.rmem_max=26214400
The default buffer size on Linux is
You can also make it permanent by adding this line to /etc/sysctl.conf:
Reference: Improving UDP Performance by Configuring OS UDP Buffer Limits. It also provides methods for changing UDP buffer sizes on Solaris, FreeBSD, Darwin and AIX.