Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

My group has a server set up to image our workstations using FOG. I was a bit curious to see how much bandwidth we were using. When I run ifconfig eth0, the TX/RX lines read

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)

But when I run ip -s link show eth0, the equivalent output is

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      

Which corresponds to a TX/RX of about 1.8/2.6 GiB. What is causing the discrepancy between the values reported by iproute2 and ifconfig? Is there some sort of integer overflow for iproute2?

Thanks!

share|improve this question

2 Answers 2

up vote 1 down vote accepted

I was able to find some iproute2 documentation which shed some light on the issue.

Thanks to Jonathan Ross's answer, I learned that ifconfig pulls its data from /proc/net/dev. In the iproute2 docs, it appears that the bandwidth counter in iproute2 "wraps when the maximal length of the natural data type on the architecture is exceeded".

It's evident that iproute2 uses a 32-bit integer to store this info, as this is a 64-bit system. The bandwidth counter would then wrap at 4 GiB.

share|improve this answer

There are different ways of pulling traffic stats from the system with libraries or from the kernel, one being cat /proc/net/dev. I'd check that file for comparison.

Slightly OT: apparently you can reset ifconfig counters with loadable NIC kernel drivers but not built-in drivers.

share|improve this answer
    
Thanks! Now I know where ifconfig pulls its data. The /proc/net/dev file lists the proper bandwidth usage (TX/RX of 29.5/426.5 GiB). I found some iproute2 documentation which answered my question. –  Ben Webber Apr 10 '11 at 9:47

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.