2017-08-16 3 views
2

J'ai une application en cours d'exécution sur l'expéditeur et le destinataire, avec le protocole UDP. La taille du tampon UDP est d'environ 70 ou 1024 octets, donc il n'y a pas de fragmentation UDP.Linux UDP: où le datagramme UDP perd-il?

De ifconfig/sar niveau, je n'ai pas vu de perte UDP significative.

Mais à partir du niveau de l'application, je vois une perte de ~ 30%. Je vois la même chose avec iperf3/ntttcp-for-Linux/netperf.

D'où vient la perte? Est-ce causé par UDP arrive pile IP hors d'usage? Comment puis-je confirmer cette hypothèse?

merci!

Répondre

2

Il s'est avéré que le tampon du récepteur est trop petit. Sur le côté du récepteur, netstat indique "UDP: packet receive errors" élevé en netstat -s.

problème est résolu en élargissant le tampon de réception:

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

Souvenez-vous de redémarrer l'application après application du changement sysctl ci-dessus. –