私のLinuxシステムはUDPパケットを破棄しています。ドライバを含む10GbeE 82599ES NICがありますixgbe
。
次のようにnc
してパケットを受信します。
$ nc -I 100000000 -l 2004 -u > /dev/null
別のコンピュータからパケットを送信します。
$ cat /dev/zero | nc 10.5.10.248 2004 -u
受信システムのRcvbufErrorが/proc/net/snmp
狂ったように増加します。興味深いことに、/proc/net/udp
パケット損失は表示されません。私のカーネルバージョンは次のとおりです
$ uname -a
Linux titan 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07) x86_64 GNU/Linux
私が知っている限り、UDPを削除せずにRcvbufErrorを取得する唯一の方法は次のとおりです。sk_filter-ENOMEM
返品sock_queue_recv_skbこれは、ソケットバッファページが編集されている場合にpfmemalloc
発生する可能性があり、システムにメモリ不足がある場合に発生する可能性があります。
奇妙なことに、十分なfree
スペースがあると思います。
$ free -m
total used free shared buffers cached
Mem: 32210 32016 194 178 352 29948
-/+ buffers/cache: 1715 30495
Swap: 65467 162 65305
助ける? ! (事前に感謝)
K