Linux

iproute2 和 ifconfig 報告的頻寬使用情況不同

  • April 18, 2011

我的小組設置了一台伺服器,用於使用FOG對我們的工作站進行映像。我有點好奇我們使用了多少頻寬。當我執行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。iproute2是什麼導致和報告的值之間存在差異ifconfig?是否存在某種整數溢出iproute2

謝謝!

我能夠找到一些iproute2對這個問題有所了解的文件。

感謝喬納森羅斯的回答,我了解到ifconfig/proc/net/dev. 在iproute2文件中,頻寬計數器似乎在iproute2“超過架構上自然數據類型的最大長度時包裝”。

很明顯,iproute2使用 32 位整數來儲存此資訊,因為這是一個 64 位系統。然後頻寬計數器將在 4 GiB 處換行。

從帶有庫的系統或從核心中提取流量統計資訊的方法有很多種,其中一種是cat /proc/net/dev. 我會檢查該文件以進行比較。

有點 OT:顯然您可以ifconfig使用可載入的 NIC 核心驅動程序而不是內置驅動程序來重置計數器。

引用自:https://serverfault.com/questions/257895