报告的带宽使用情况在iproute2和ifconfig之间有所不同

我的团队有一台服务器,用于使用FOG对我们的工作站进行映像。 我有点好奇,看看我们使用了多less带宽。 当我运行ifconfig eth0 ,TX / RX线路被读取

 RX packets:166949376 errors:0 dropped:0 overruns:0 frame:0 TX packets:350126730 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31757576798 (29.5 GiB) TX bytes:458006556301 (426.5 GiB) 

但是当我运行ip -s link show eth0 ,等效的输出是

 RX: bytes packets errors dropped overrun mcast 1693647583 166958818 0 0 0 18979 TX: bytes packets errors dropped carrier collsns 2741139294 350136238 0 0 0 0 

其对应于约1.8 / 2.6 GiB的TX / RX。 是什么导致iproute2ifconfig报告的值之间的差异? iproute2有一些整数溢出?

谢谢!

我能够find一些iproute2文件,在这个问题上的一些亮点。

感谢Jonathan Ross的回答 ,我了解到ifconfig/proc/net/dev提取数据。 在iproute2文档中,似乎iproute2中的带宽计数器“在超过架构上的自然数据types的最大长度时包装”。

很明显, iproute2使用一个32位整数来存储这个信息,因为这是一个64位系统。 带宽计数器将以4 GiB进行换行。

有不同的方法从系统中提取库或内核的stream量统计信息,一个是cat /proc/net/dev 。 我会检查该文件进行比较。

稍微OT:显然你可以重置ifconfig计数器与可加载NIC内核驱动程序,但不是内置的驱动程序。