我使用的是 Ubuntu 操作系统,我知道可以通过读取文件 /proc/net/dev 文件来获得 PC 带宽的平均使用率。但是,假设我同时向两个节点传输文件(总传输带宽:100 Mpbs)。谁能建议我一个好主意如何获取/存储“将 BW 传输到节点 X/Y”的信息(X:50 Mbps/ Y:50 Mbps)。非常感谢 C/C++ 或 python 中的建议!:)
问问题
204 次
2 回答
0
查看该jnettop
实用程序,以直接获取您需要的信息,或在其源代码中找到适当的技术。
于 2012-05-21T16:19:35.680 回答
0
内核通常不关心数据包的下一跳是什么以及将其丢弃到那里的接口。要让它受到关注,您需要一些 linux 的高端路由功能。尝试这个:
DEV=`ip route|sed -nr 's/^default.* dev ([^ ]*).*/\1/p'`
/sbin/tc qdisc del dev $DEV root >/dev/null 2>&1
TQ="/sbin/tc qdisc add dev $DEV"
TC="/sbin/tc class add dev $DEV"
TF="/sbin/tc filter add dev $DEV"
$TQ root handle 1: htb default 0
$TC parent 1: classid 1:1 htb rate 100mbps # interesting destination 1
$TC parent 1: classid 1:2 htb rate 100mbps # ...
$TF parent 1: protocol ip u32 match ip dst 123.231.132.213 classid 1:1
$TF parent 1: protocol ip u32 match ip dst 1.2.3.4 classid 1:2
然后您可以使用tc -s class show dev $DEV
. 我不知道更简单的方法来做到这一点,对不起。
于 2012-05-21T16:00:20.900 回答