2017-08-16 28 views
2

我有一个应用程序运行在发送者和接收者,与UDP协议。 UDP缓冲区大小约为70或1024字节,因此不会发生UDP碎片。Linux UDP:UDP数据报在哪里丢失?

ifconfig/sar级别看,我没有看到明显的UDP丢失。

但是从应用层面来看,我看到约30%的损失。我看到与iperf3/ntttcp-for-Linux/netperf相同。

损失发生在哪里?这是由UDP造成的IP堆栈乱序吗?我如何确认这个假设?

谢谢!

回答

2

原来接收缓冲区太小了。

在接收端,netstatnetstat -s中报告高位“UDP: packet receive errors”。

问题是通过放大接收缓冲器解决:

# sysctl -w net.core.rmem_max=33554432 
# sysctl -w net.core.rmem_default=33554432 
+1

记住应用上述的sysctl改变后,重新启动该应用程序。 –