确定linux系统IP接口的平均传输速率

时间:2013-11-05 14:15:52

标签: linux tcp netstat

我想知道,我的linux系统的特定(VPN)接口上的平均传输速率是多少。

我从netstat获得以下信息:

# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0    264453      0      0 0        145331      0      0      0 BMRU
lo        16436 0    382692      0      0 0        382692      0      0      0 LRU
tun0       1500 0     13158      0      0 0         21264      0     12      0 MOPRU

VPN接口是tun0。因此,该接口接收13158个数据包并发送21264个数据包。我的问题基于此:

  • 收集这些统计数据的时间范围是多少?自从电脑启动以来?

    # uptime
    15:05:49 up 7 days, 20:40,  1 user,  load average: 0.19, 0.08, 0.06
    
  • 如何将13158“数据包”转换为数据kB以获得kbps?

或者我应该使用完全其他方法吗?

2 个答案:

答案 0 :(得分:1)

问题1:
时间范围是从设备启动到现在(可能是几天或几周前,尝试从日志中计算出来!)。
这意味着要获得与您在系统监视器中看到的实际平均kbps数相当的平均kbps数或者例如显示CPU的topuptime,您需要读取当前值两次(例如,介于两者之间),并从第一个值中减去第二个值。然后除以时间(如果你有1秒的延迟则没有必要),乘以8,除以1,000得到kbps。

问题2:
你没有。没有办法转换"数据包" to" bytes"数据包的大小可变。有一个"字节"你可以阅读的领域。

我的NAS机箱上的测试用例正在进行一些流量:

nas:# grep eth0 /proc/net/dev ; sleep 1 ; grep eth0 /proc/net/dev
eth0:137675373  166558    0    0    0     0          0         0 134406802   41228    0    0    0     0       0          0
eth0:156479566  182767    0    0    0     0          0         0 155912310   44479    0    0    0     0       0          0

结果是:(155912310 - 134406802)* 8/1000 = 172044 kbps(1Gbps网络使用172 Mbps)。

答案 1 :(得分:0)

如果您查看/proc/net/dev而不是netstat -i,则可以获取传输/接收的字节数(也可以通过ifconfignetstat -ie获取,但更容易从{{/proc/net/dev解析1}})。计数通常是在创建接口之后,通常是“真实”接口的启动时间。对于tun接口,可能在隧道启动时,可能与系统启动不同,具体取决于您何时/如何创建它...