私は Ubuntu OS を使用していますが、ファイル /proc/net/dev ファイルを読み取ることで、PC の帯域幅の平均使用量を取得できることを知っています。ただし、同時に 2 つのノードにファイルを送信しているとします (合計送信帯域幅: 100 Mpbs)。「BW をノード X/Y に送信」(X: 50 Mbps/ Y: 50 Mbps) の情報を取得/保存する方法を教えてください。C/C++ または python での提案は大歓迎です! :)
質問する
204 次
2 に答える
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 に答える
0
ユーティリティを調べて、jnettop
必要な情報を直接取得するか、ソース コードで適切な手法を見つけてください。
于 2012-05-21T16:19:35.680 に答える