イーサネットチャネル帯域幅測定

イーサネットチャネルの帯域幅を測定してレポートを提供するタスクがありました。測定は24時間行う必要があります。 これをどのように行うことができますか?



よりも







どうやって



iperfツールの使用は非常に簡単です。チャネルの一方の側で、サーバーがコンピューターで起動し、クライアントからの接続を待機します。



d@i:~$ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------
      
      





チャネルの反対側の別のコンピューターで、クライアントはipサーバーで起動します。

 d@i:~$ iperf -c 172.28.0.103 ------------------------------------------------------------ Client connecting to 172.28.0.103, TCP port 5001 TCP window size: 2.50 MByte (default) ------------------------------------------------------------ [ 3] local 172.28.0.103 port 56868 connected with 172.28.0.103 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 32.9 GBytes 28.2 Gbits/sec
      
      





レポートからわかるように、スループットは10秒間測定され、28.2ギガビット/秒に達しました(サーバーとクライアントの両方が同じコンピューターで実行されていたため、速度は非常に高速でした)。 素晴らしいが、一日中速度を測定する必要がある。 iperf --helpオプションを見て、そこに役立つ情報を見つけてください。 その結果、私は次のようなものを得ました:



 d@i:~$ iperf -c 172.28.0.103 -t 86400 -i 15 ------------------------------------------------------------ Client connecting to 172.28.0.103, TCP port 5001 TCP window size: 2.50 MByte (default) ------------------------------------------------------------ [ 3] local 172.28.0.103 port 56965 connected with 172.28.0.103 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-15.0 sec 58.0 GBytes 33.2 Gbits/sec [ 3] 15.0-30.0 sec 50.4 GBytes 28.9 Gbits/sec [ 3] 30.0-45.0 sec 47.4 GBytes 27.2 Gbits/sec [ 3] 45.0-60.0 sec 51.8 GBytes 29.7 Gbits/sec [ 3] 60.0-75.0 sec 45.5 GBytes 26.1 Gbits/sec [ 3] 75.0-90.0 sec 43.2 GBytes 24.7 Gbits/sec [ 3] 90.0-105.0 sec 54.6 GBytes 31.3 Gbits/sec
      
      





-t 86400パラメーターは測定時間を秒単位で設定し、-i 15パラメーターは15秒ごとに結果を出力するよう指示します。 そのようなレポートを終日表示することは、すでに優れていますが、それほど便利ではありません(このようなレポートでは、86400/15 = 5760行になります)。 さらにヘルプを見て、iperfが次の形式でレポートを提供できることを確認します。



 -y, --reportstyle C report as a Comma-Separated Values
      
      





私たちはチェックします:



 d@i:~$ iperf -c 172.28.0.103 -t 86400 -i 15 -y C 20141130132436,172.28.0.103,56976,172.28.0.103,5001,3,0.0-15.0,59595292672,31784156091 20141130132451,172.28.0.103,56976,172.28.0.103,5001,3,15.0-30.0,49530142720,26416076117 20141130132506,172.28.0.103,56976,172.28.0.103,5001,3,30.0-45.0,57119866880,30463929002
      
      





いいね! 必要なもの! 現在、iperfは処理に便利な統計を提供します。 レポート内のパラメーターはコンマで区切られます。 最初の列は日付と時刻であり、クライアントとサーバーのIPアドレスとポートが最後に表示され、ビット/秒単位の帯域幅が表示されます。 このレポートをファイルにリダイレクトします。



 d@i:~$ iperf -c 172.28.0.103 -t 86400 -i 15 -y C > stat.txt
      
      





毎日のテストの終了後、stat.txtファイルには、分析に便利な形式で視覚化する必要がある結果がきれいに含まれています。



そして今、それをどうするか?



そのため、stat.txtファイルには、所定の間隔で適切な時間のチャネルスループットテストの結果が含まれています。 もちろん、数千の各行を目で見て分析することもできますが、ひとたびコンピューターを思いついたら、まずは作業を容易にし、接触している猫を見るのではなく、この発明を使用します。



レポートファイルには、必要なデータが含まれていますが、あまり重要ではありません。 余分なものを取り除きます。 測定の日付/時刻と、その日付/時刻の速度に興味があります。 これは、stat.txtファイルの各行の最初と最後のパラメーターです。



私はこのファイルをpython3で書かれたスクリプトで急いで処理しました。コードの曲率を判断しないでください-私は偽の溶接工です、建設現場でマスクを見つけました。



 #!/usr/bin/env python3 import datetime st = open('stat.txt', 'r') res = open('est.txt', 'w') for line in st: w = line.split(',') ti = datetime.time(int(w[0][-6:][0:2]), int(w[0][-6:][2:4]), int(w[0][-6:][4:6])) da = datetime.date(int(w[0][0:8][0:4]), int(w[0][0:8][4:6]), int(w[0][0:8][6:9])) print("{0} {1} {2}".format(da, ti, int(w[8])/(1024**2)), file=res) res.close()
      
      





このスクリプトは、stat.txtファイルから行を読み取り、結果をest.txtファイルに書き込みます。 est.txtファイルでは次のことがわかります。



  d@i:~/project/iperf_graph$ cat est.txt 2014-11-30 13:35:07 4521.25 2014-11-30 13:35:08 3682.875 2014-11-30 13:35:09 2974.75 2014-11-30 13:35:10 2974.625 2014-11-30 13:35:11 2976.375 2014-11-30 13:35:12 2976.25 2014-11-30 13:35:13 2977.0 2014-11-30 13:35:14 2969.75
      
      





もう便利です。 日付、時刻、測定結果をMbpsで表示します。 この例では、10分の測定結果が1秒ごとにレポートとともに取得されます。



それでも、テキストファイル形式の結果は、分析にはあまり便利ではありません。 チャートを描く必要があります!



グラフを描くための特別でクールなプログラムがあります。 gnuplotの優れた柔軟性、無料、インターネット上の多数の例についてアドバイスします。



Googleのクエリ「gnuplot example」の結果を30分間掘り下げた後、次のスクリプトを取得しました。



 #! /usr/bin/gnuplot -persist set term png size 1024,768 #set terminal postscript eps enhanced color size 1024, 768 set output "graph.png" set grid set yrange[0:] set xdata time set xlabel "Time" set ylabel "Mbit/s" set timefmt "%Y-%m-%d %H:%M:%S" set format x "%Y-%m-%d %H:%M:%S" set xrange [] noreverse nowriteback set xtics rotate plot "est.txt" using 1:3 title "Bandwith" with filledcurve x1 lt 1 lc 2
      
      





このスクリプトは、stat.txtの処理後に取得したest.txtファイルを読み取り、graph.pngファイルにグラフを描画します。 開始すると、graph.pngファイルが表示されます。



結果



画像



その結果、視覚的に便利なレポートと2つのデータ処理スクリプトを使用して、チャネルスループットを測定する簡単な手法が登場しました。



これらのスクリプトでは、特定の時間間隔のレポート、詳細なグラフの詳細な詳細、ping応答時間分析の固定、毎日のデータの収集、SNMPを介したチャネル形成機器からの信号レベルなどの他のデータの削除など、柔軟性のために他の多くのものを詰め込むことができますラジオチャネルとBERインジケータについてですが、それは別の話です。



All Articles