
Meine Linux-Box verliert UDP-Pakete. Sie verfügt über eine 10GbeE 82599ES-Netzwerkkarte mit ixgbe
Treiber.
Wird ausgeführt nc
, um Pakete wie dieses zu empfangen:
$ nc -I 100000000 -l 2004 -u > /dev/null
und Senden von Paketen von einem anderen Computer mit:
$ cat /dev/zero | nc 10.5.10.248 2004 -u
Die RcvbufErrors auf der empfangenden Maschine nehmen /proc/net/snmp
rasend schnell zu. Interessanterweise /proc/net/udp
werden keine verlorenen Pakete angezeigt. Meine Kernelversion ist:
$ uname -a
Linux titan 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux
Soweit ich das beurteilen kann, besteht die einzige Möglichkeit, RcvbufErrors ohne UDP-Drops zu erhalten, darin,sk_filterkehrt zurück -ENOMEM
insock_queue_recv_skb, was passiert, wenn die Socket-Pufferseite pfmemalloc
bearbeitet wird, was wiederum passiert, wenn der Speicher der Maschine nicht ausreicht.
Das Merkwürdige ist, dass free
dort steht, es sei jede Menge Platz vorhanden:
$ free -m
total used free shared buffers cached
Mem: 32210 32016 194 178 352 29948
-/+ buffers/cache: 1715 30495
Swap: 65467 162 65305
Hilfe?! (Danke im Voraus)
K