有没有办法通过本机的接口获取某条链路的带宽、时延、抖动碰撞、误码率、丢包率?
假设我的机器通过两个接口连接到网络,一个是无线接口,另一个是以太网接口。我想通过这些测量来比较这两个链接的质量。
有没有办法在 Linux 内核中获取这些测量值? (第 3.5.0 节)
答案1
很难提供完整的细节,尤其是不知道您正在使用什么发行版以及您希望结果有多详细 - 所以我只会列出一些非常基本例子。
如果您希望获得每个界面的单独统计信息,我们可以单独分解每个项目(以下假设在 CentOS 等发行版上具有 root 访问权限):
为了带宽用法 - 我真的很喜欢 iftop。安装完成后,iftop
您可以运行以下命令:
iftop -i eth0 -B
-B 选项用于字节。进入后iftop
我喜欢按“T”以获得累计总数。
为了错误率ifconfig
您可以在控制台的输出中轻松看到这一点。要获得更简化的方法,您可以运行一个非常粗暴的命令像这样(假设像 Centos):
# ifconfig | grep -E "^\w|errors.* " | sed 's/pack.*errors:/Errors:/g' | sed 's/ drop.*//g' | sed 's/HW.*//g'
eth0 Link encap:Ethernet
RX Errors:0
TX Errors:0
eth1 Link encap:Ethernet
RX Errors:3
TX Errors:1
lo Link encap:Local Loopback
RX Errors:0
TX Errors:0
这将为您提供每个接口的错误计数。
为了碰撞你仍然可以使用ifconfig
。为了获得碰撞计数,另一个基本命令如下:
# ifconfig | grep -E "^\w|collisions.* " | sed 's/pack.*collisions:/Collisions:/g' | sed 's/ txq.*//g' | sed 's/HW.*//g'
eth0 Link encap:Ethernet
collisions:0
eth1 Link encap:Ethernet
collisions:0
lo Link encap:Local Loopback
collisions:0
为了掉落数据包,仍然使用ifconfig
,您可以运行另一个简单的命令:
# ifconfig | grep -E "^\w|dropped.* " | sed 's/pack.*dropped:/Dropped:/g' | sed 's/ over.*//g' | sed 's/HW.*//g'
eth0 Link encap:Ethernet
RX Dropped:0
TX Dropped:0
eth1 Link encap:Ethernet
RX Dropped:1
TX Dropped:0
lo Link encap:Local Loopback
RX Dropped:0
TX Dropped:0
如果您有很多坏数据包(错误、冲突或丢弃),您可以将前面的 3 个命令放入 bash 脚本中,并使用以下命令watch
来监视它们:
文件/tmp/netErrors:
#!/bin/sh
ifconfig | grep -E "^\w|errors.* " | sed 's/pack.*errors:/Errors:/g' | sed 's/ drop.*//g' | sed 's/HW.*//g'
echo
ifconfig | grep -E "^\w|collisions.* " | sed 's/pack.*collisions:/Collisions:/g' | sed 's/ txq.*//g' | sed 's/HW.*//g'
echo
ifconfig | grep -E "^\w|dropped.* " | sed 's/pack.*dropped:/Dropped:/g' | sed 's/ over.*//g' | sed 's/HW.*//g'
echo
命令:
watch /tmp/netErrors
为了服务质量,这实际上取决于您如何设置它。对于 Linux,traffic control
通常用于设置 QoS。要查看当前的 QoS,traffic control
可以运行以下命令:
# tc qdisc ls
qdisc pfifo_fast 0: dev eth0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth1 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev eth2 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: dev tun0 root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
tc - 流量控制命令 qdisc - 排队规则 ls - 列表
为了更好地了解traffic control
您应该查看以下链接关于交通管制。
答案2
这可能是我发现的熟悉 Linux 内核中 QoS 统计数据的最佳教程。它最初于 2010 年发表在 Linux 杂志上,但仍然完全相关。
这篇文章的标题是:Linux 内核核心之旅:流量控制、整形和 QoS。
答案3
像这样的包ntop
会显示此信息。您还可以安装nagios
和cacti
,它们功能更强大,但需要一些时间来配置。
答案4
接口统计信息主要保存在其中/sys/class/net/<interface>
,包括有关 tx/rx fifo 错误、冲突等的统计信息。您必须查看统计信息,因为有些统计信息是特定于驱动程序的。
抖动往往是一个流级别概念,因为测量将在该 5 元组上进行。您可能需要为此使用不同的工具。