저는 각각 방화벽/라우터로 실행되는 여러 Ubuntu 서버를 가지고 있습니다. 나는 그 중 하나가 다른 것보다 훨씬 높은 RX-drop 번호를 가지고 있음을 발견했습니다. 물방울이 튀는 것 같았습니다. 마지막 netstat에서는 약 2.6%의 하락을 보여줍니다.
$ sudo netstat -ni
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 1715434 0 45323 0 672858 0 0 0 BMORU
eth1 1500 7146 0 0 0 18148 0 0 0 BMRU
lo 65536 200950 0 0 0 200950 0 0 0 LRU
wlan0 1500 679702 0 0 0 1315730 0 0 0 BMRU
이는 다른 하나가 보여준 ~0.01%보다 훨씬 높습니다. 이 문제의 원인을 어떻게 알 수 있나요?
지금까지 인터페이스 링 수신 버퍼 크기를 늘려 보았습니다.
$ sudo ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 256
RX Mini: 0
RX Jumbo: 0
TX: 256
$ sudo ethtool -G eth0 rx 4096 tx 4096
또한 ntuple 필터를 사용하여 물리적 계층에서 일부 패킷을 삭제할 수 있다고 생각했지만 이 Intel i210 NIC에서 ethtool을 사용하여 이러한 규칙을 수정할 수는 없습니다.
참고로 ethtool에서 제공하는 추가 정보는 다음과 같습니다. (이 매개변수도 변경할 수 없습니다.)
$ sudo ethtool -c eth0
Coalesce parameters for eth0:
Adaptive RX: off TX: off
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 3
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 0
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 0
rx-usecs-low: 0
rx-frames-low: 0
tx-usecs-low: 0
tx-frames-low: 0
rx-usecs-high: 0
rx-frames-high: 0
tx-usecs-high: 0
tx-frames-high: 0
답변1
많은 문제 해결과 독서 후에 이것이 단지 커널 부팅 매개변수로 ipv6을 비활성화했기 때문이라는 것을 깨달았습니다. 이더넷 카드에서 패킷이 삭제되고 있다고 생각했지만 이는 ipv6 패킷이 커널에서 지원되지 않기 때문에 삭제되고 있음을 나타냅니다.
이 링크는 내가 그것을 알아내는 데 도움이되었습니다.https://www.suse.com/support/kb/doc/?id=000017478
따라서 grub 명령줄에서 ipv6을 비활성화하는 대신 sysctl.conf(예: /etc/sysctl.d/20-local.conf)에서 직접 비활성화로 돌아갔습니다.
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
이제 더 이상 삭제가 없으며 ipv6은 여전히 비활성화되어 있습니다. 한 서버가 다른 서버보다 나쁘다는 것이 조금 이상하지만 이제는 둘 다 작동합니다.