Linux文件/ proc / net / dev读取如下:
[me@host ~]$ cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
字段 drop 和 errs 是什么意思?
drop 数据包中是否还计入了一些 errs 数据包?
为什么数据包被认为是 errs ,是因为它遭受校验和错误?
为什么丢包?是因为系统没有足够的缓冲区,因为NIC上有一些突发?
这两个字段是否会将发往其他主机的数据包(例如,当NIC在混杂模式下工作时)考虑进去?
答案 0 :(得分:18)
您可以查看源代码树中的net/core/dev.c
,了解其含义:
seq_printf(seq, "%6s:%8lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu "
"%8lu %7lu %4lu %4lu %4lu %5lu %7lu %10lu\n",
dev->name,
stats->rx_bytes,
stats->rx_packets,
stats->rx_errors,
stats->rx_dropped + stats->rx_missed_errors,
stats->rx_fifo_errors,
stats->rx_length_errors + stats->rx_over_errors +
stats->rx_crc_errors + stats->rx_frame_errors,
stats->rx_compressed,
stats->multicast,
stats->tx_bytes,
stats->tx_packets,
stats->tx_errors,
stats->tx_dropped,
stats->tx_fifo_errors,
stats->collisions,
stats->tx_carrier_errors + stats->tx_aborted_errors +
stats->tx_window_errors + stats->tx_heartbeat_errors,
stats->tx_compressed);
所以:
是的,我认为drop意味着当设备因为缓冲区空间不足而丢弃数据包时。
答案 1 :(得分:7)
根据http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html,每列的含义是:
bytes 接口发送或接收的数据的总字节数。
数据包接口发送或接收的数据包总数。
错误设备检测到的传输或接收错误总数 驱动程序。
drop 设备驱动程序丢弃的数据包总数。
fifo FIFO缓冲区错误的数量。
frame 数据包帧错误的数量。
colls 在界面上检测到的碰撞次数。
压缩设备发送或接收的压缩包数 驱动程序。 (这似乎在2.2.15内核中未使用。)
运营商设备驱动程序检测到的运营商丢失数量。
多播设备发送或接收的组播帧数 驱动程序。
答案 2 :(得分:-1)
由于近六个月没有人回答,我可以自由推测:
我不认为 errs 和 drop 重叠。我还认为 errs 是收到的数据包中的校验和或其他不良数据(即没有足够的数据构成整个数据包)。此外,我认为 drop 仅适用于传出包 - 系统如何知道其他地方的丢包?