ローカルマシンのインターフェイスを介して、特定のリンクの帯域幅、遅延、ジッター衝突、エラー率、および損失率を取得する方法はありますか?
私のマシンが2つのインターフェース(1つはワイヤレス、もう1つはイーサネット)を介してネットワークに接続されているとしましょう。これらの測定を通じて、これら2つのリンクの品質を比較したいと思います。
Linuxカーネルでこれらの測定値を取得する方法はありますか? (v。3.5.0)
完全な詳細を提供することは困難です。特に、使用しているディストリビューションと結果をどの程度詳細にするかがわからないため、非常に基本的なをいくつかリストします。 の例。
インターフェイスごとに個別の統計情報を取得する場合は、各アイテムを個別に分類できます(以下では、CentOSなどのディストリビューションでのルートアクセスを想定しています)。
bandwidthの使用法について-私は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
これにより、各インターフェイスのエラー数がわかります。
collisionsの場合でも、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
droppedパケットの場合、まだ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
QoSの場合、実際には設定方法によって異なります。 Linuxの場合、QoSの設定にはtraffic control
が一般的です。 traffic control
で現在のQoSを確認するには、次のコマンドを実行できます。
# 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
の適切な内訳を取得するには、次のリンクを確認する必要があります トラフィック制御について 。
これはおそらく、Linuxカーネル内のQoS統計に精通するために私が見つけた最高のチュートリアルです。もともとは2010年にLinuxMagazineで発行されましたが、それでも完全に関連性があります。
記事のタイトルは次のとおりです。 Linuxカーネルの中心への旅:トラフィック制御、シェーピング、およびQoS 。
インターフェイス統計は主に/sys/class/net/<interface>
に保持され、tx/rx fifoエラー、衝突などに関する統計が含まれます。一部はドライバー固有であるため、統計を確認する必要があります。
測定はその5タプルで行われるため、ジッターはフローレベルの概念になる傾向があります。そのために別のツールを使用する必要があるかもしれません。
ntop
のようなパッケージはこの情報を表示します。 nagios
とcacti
をインストールすることもできます。これらははるかに強力ですが、構成に時間がかかります。