내 리눅스 박스가 UDP 패킷을 삭제하고 있습니다. 드라이버 가 포함된 10GbeE 82599ES NIC가 있습니다 ixgbe
.
다음과 같은 패킷을 수신하기 위해 실행 중입니다 nc
.
$ nc -I 100000000 -l 2004 -u > /dev/null
다음을 사용하여 다른 시스템에서 패킷을 보냅니다.
$ cat /dev/zero | nc 10.5.10.248 2004 -u
수신 컴퓨터의 RcvbufErrors가 /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
ed일 때 발생하며, 이는 머신이 메모리 부족 상태에 있을 때 발생합니다.
이상한 점은 free
공간이 너무 많다는 것입니다.
$ free -m
total used free shared buffers cached
Mem: 32210 32016 194 178 352 29948
-/+ buffers/cache: 1715 30495
Swap: 65467 162 65305
돕다?! (미리 감사드립니다)
케이