ifconfig 发现RX dropped 数字比较大的理解

现象

ifconfig 发现RX dropped 数字比较大,RX errors 和RX overruns 都是0.
登录检查时sar -n DEV 1 5 流量不高,ping延时也不大,messages没有异常信息,uptime很大,猜测是累计的dropped counter。对系统性能无影响。
Netstat -s 统计网络层 TCP UDP 未发现异常。
ethtool -S eth0 统计网卡信息,未见异常。
网上找到同样case,说是内核统计dropped测方式发生了变化,对业务应用无影响。

以下信息根据网上资料整理所得,未验证。

判断方法:

运行tcpdump后, ifconfig中的dropped 不再增加。

ifconfig 部分字段的理解:

RX errors: 表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。
RX dropped: 表示数据包已经进入了 Ring Buffer,但是由于内存不够,上层协议不支持等系统原因,导致在拷贝到内存的过程中被丢弃,netstat -s可以看到更详细的原因。
RX overruns: 表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。
很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,
上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。
可以尝试设置驱动程序启用多个队列,分别在不同的CPU上产生中断,增加报文的并行处理速度。增加网络层的接收缓冲区memory大小,减少应用的数目,降低CPU的压力,使应用层能够尽快处理收到的数据包。
RX frame: 表示 misaligned 的 frames。

对于 TX 的来说,出现上述 counter 增大的原因主要包括 aborted transmission, errors due to carrirer, fifo error, heartbeat erros 以及 windown error,而 collisions 则表示由于 CSMA/CD 造成的传输中断。

参考信息

http://www.361way.com/ifconfig-dropped-rx-packets/5722.html
http://blog.sina.com.cn/s/blog_b87700f50102wusb.html
https://www.cnblogs.com/lovemyspring/articles/5087895.html
http://www.faqs.org/docs/linux_network/x-087-2-iface.ifconfig.html
http://blog.hyfather.com/blog/2013/03/04/ifconfig/
https://blog.csdn.net/lqxandroid2012/article/details/79650821

`ifconfig` 是 Linux 和 Unix 类操作系统中用于配置网络接口并显示有关网络接口信息的一个命令。它可以用来查看当前网络连接状态、配置网络设备以及管理 IP 地址。 ### 使用 `ifconfig` #### 查看网络接口信息 当你运行 `ifconfig` 命令时,默认情况下会列出所有已启用的网络接口的详细信息。这些信息通常包括: - **Interface**(接口名称):如 eth0 或 wlan0。 - **inet addr**(IP 地址):接口的 IPv4 地址。 - **Bcast**(广播地址):该子网的广播地址。 - **Mask**(掩码):子网掩码。 - **UP**、**RUNNING**、**LOWER_UP**、**BROADCAST**、**MULTICAST**:表示接口的状态。 #### 示例输出 假设你的机器有以下网络接口: ``` eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55 inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:100 errors:0 dropped:0 overruns:0 frame:0 TX packets:200 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20000 (19.6 KiB) TX bytes:40000 (39.1 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:1000 errors:0 dropped:0 overruns:0 frame:0 TX packets:1000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:40000 (39.1 KiB) TX bytes:40000 (39.1 KiB) ``` #### 修改网络接口设置 要修改某个网络接口的 IP 地址或禁用接口,你可以使用 `-a` 参数指定不同的操作。例如,为了改变 `eth0` 的 IP 地址到 `192.168.1.100/24` 并重启它,可以这样做: ```bash sudo ifconfig eth0 down sudo ifconfig eth0 up sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 ``` 或者使用一次性更改的方法: ```bash sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up ``` 请注意,执行这些操作可能需要超级用户的权限。 --- ### 相关问题: 1. 如何通过脚本自动化地管理和配置多个网络接口? 2. 在不同版本的操作系统中,`ifconfig` 是否还有替代命令?比如在某些现代发行版中使用的是什么? 3. 当遇到无法 ping 出来的网络设备时,如何使用 `ifconfig` 来诊断问题?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值