0

我想知道,我的 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?

还是我应该使用完全不同的方法?

4

2 回答 2

1

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

问题2:
你没有。由于数据包是可变大小的,因此无法将“数据包”转换为“字节”。您可以阅读一个“字节”字段。

在我的 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)。

于 2013-11-05T18:04:42.320 回答
0

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

于 2013-11-05T16:56:24.223 回答