2017-08-16 56 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改變後,重新啓動該應用程序。 –