2017-08-16 2 views
2

Ich habe eine Anwendung läuft auf Sender und Empfänger, mit UDP Protokoll. Die UDP-Puffergröße beträgt etwa 70 oder 1024 Bytes, so dass keine UDP-Fragmentierung auftritt.Linux UDP: wo verliert das UDP-Datagramm?

Von ifconfig/sar Ebene, sah ich nicht erhebliche UDP-Verlust.

Aber von Anwendungsebene sehe ich ~ 30% Verlust. Ich sehe das gleiche mit iperf3/ntttcp-for-Linux/netperf.

Wo passiert der Verlust? Wird dies durch UDP verursacht, kommt der IP-Stack out-of-order? Wie kann ich diese Annahme bestätigen?

danke!

Antwort

2

Es stellte sich heraus, dass der Empfängerpuffer zu klein ist.

Auf der Empfängerseite meldet netstat hoch "UDP: packet receive errors" in netstat -s.

Problem wird durch eine Vergrößerung des Empfangspuffers gelöst:

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

Denken Sie daran, die Anwendung nach der Anwendung der oben Sysctl Änderung neu zu starten. –

Verwandte Themen