问题
这是否配置命令显示更多丢弃数据包在 RX 部分。因此,从互联网到达我的服务器的某些数据包似乎存在问题。
问题
此丢弃计数器会考虑哪些类型的数据包?它会考虑到达 iptables 防火墙之前的所有数据包,还是考虑被 iptables 接受之后的数据包?
如何解决ipconfig drop packets计数器停止增加的情况?
有用的故障排除信息
由于我不知道我的问题到底是什么,如果您认为需要其他信息,请随时让我完成此部分。
是否配置
eth0 Link encap:Ethernet HWaddr 00:cc:cc:cc:cc:cc
inet adr:90.0.0.2 Bcast:90.0.0.255 Masque:255.255.255.0
adr inet6: fe80::21c:c0ff:feb9:829c/64 Scope:Lien
adr inet6: 2001:a100:1:bbbb::1/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:113264620 errors:0 dropped:2523 overruns:0 frame:0
TX packets:168526529 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:59171827564 (55.1 GiB) TX bytes:223993117711 (208.6 GiB)
注意“掉落:2523“在 RX 部分。这是最重要的。这个数字在不断增加。
ip -4 路由显示
default via 90.0.0.254 dev eth0
90.0.0.0/24 dev eth0 proto kernel scope link src 90.0.0.2
ip -6 路由显示
2001:a100:1:bbbb::1/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
default via 2001:a100:1:bbff:ff:ff:ff:ff dev eth0 metric 1024
插件 if_err_eth0_day 的 munin 图
答案1
http://www.novell.com/support/kb/doc.php?id=7007165
从内核 2.6.37 开始,丢弃数据包计数的含义已发生变化。以前,丢弃数据包很可能是由于错误造成的。现在,rx_dropped 计数器显示丢弃帧的统计信息,原因是:
- Softnet 积压已满
- 错误/非预期的 VLAN 标签
- 未知/未注册的协议
- 当服务器未配置 IPv6 时,IPv6 帧
[...]
如果 tcpdump 运行时 rx_dropped 计数器停止递增,那么它很可能由于前面列出的原因而显示丢弃。
答案2
我也一直在尝试追踪这个问题,但没有成功。我还注意到我的 Ubuntu 12 机器上每秒大约有一次 RX 数据包丢失。通过搜索,我发现其他各种 Linux 平台(SUSE、Rpi 等)上也有类似的问题。这似乎是 Linux 内核的问题。我注意到一些更有趣的线索使问题暂时消失,但并没有确切的解释。
如果我在 /etc/network/interfaces 中将配置从静态更改为 DHCP,则 RX 数据包丢失会停止。也许无法识别的数据包与 DHCP 有关,而当它关闭时,机器不知道如何处理它们?
如果我运行 tcpdump,则在转储运行时数据包丢失会停止,而当我停止转储时数据包会再次丢失。
也许这些线索能帮助我们查明事情的真相?
总体而言,我的网络性能似乎很好,只是好奇为什么会发生这种情况。
答案3
我追查这个问题很长一段时间,最终设法把所有能解决这个问题的部分拼凑起来——对我来说。
答案就在这里https://superuser.com/questions/1421591/disable-homeplug-feature-on-fritzbox。
在我的例子中,它是 FRITZ!Box 7590,它以平均每秒一个的速度生成协议为 0x88E1 和 0x8912 的数据包,如 ifconfig 所示,这些数据包在我的 PC 上“在网络接口级别被丢弃”(netdata 的措辞)。使用上述页面中提供的 XDP 过滤器丢弃它们可以解决此问题。即 ifconfig 的 RX 丢弃计数器停止增加。
我设法使用 wireshark 和过滤表达式“!(eth.addr == yo:ur:ma:ca:dd:re) && !(ip.addr == 192.168.5.255)”缩小了问题范围。即仅显示未直接发送到我的机器或我的网络的 IP 广播地址的数据包。这消除了足够的噪音,留下了有问题的流量(加上 ARP 和其他一些低容量流量)。因此,如果您没有 FRITZ!Box 会为您带来此问题,那么这种方法可能有助于确定哪些数据包导致了问题。
有一件小事我目前还不太清楚,那就是每两秒钟就会收到三个与这些协议匹配的数据包,这可以通过 wireshark 观察到。这意味着平均每秒丢弃 1.5 个数据包。显然这三个中只有两个是“有问题的”,所以 XDP 过滤器也会丢弃一个不会有问题的数据包。但我想我可以忍受。