LinuxカーネルからネットワークQoS統計を取得するには?

LinuxカーネルからネットワークQoS統計を取得するには?

ローカルインターフェイスを介して特定のリンクの帯域幅、遅延、ジッタと衝突、ビットエラー率、パケット損失率を取得する方法はありますか?

私のコンピュータが2つのインターフェイスを介してネットワークに接続されているとしましょう。 1つはワイヤレスで、もう1つはイーサネットです。私はこの測定値を使用してこれら2つのリンクの品質を比較したいと思います。

Linuxカーネルでこれらの測定値を取得する方法はありますか? (セクション 3.5.0)

ベストアンサー1

特に、どのディストリビューションを使用しているのか、どのように詳細な結果が欲しいのかわからない場合は、詳細全体を提供することは困難です。だから、いくつかリストします。非常に基本的なはい。

各インターフェイスの個別の統計を取得するには、各プロジェクトを個別に分類できます(次はCentOSなどのディストリビューションへのルートアクセスを想定しています)。

~のため帯域幅使い方 - 私は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/netエラー:

#!/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リンクを確認する必要があります。交通管理について

おすすめ記事