ネットワーク帯域を計測する際にpingコマンドを使うことで計測することができる。詳細は以下サイトの記事にある。
pingでネットワークの速度を調査する
http://www.atmarkit.co.jp/ait/articles/0511/26/news012.html
上記記事を参考に、帯域計測用のコマンドを作ってみた。
ちなみに、Windowsでも同様の計測方法を試そうとしたが、Windowsのpingコマンドや、PowerShellのTest-Connectionは、1ms以下の精度でPing応答を表示することができないため、計測するには誤差が大きすぎて使えないので、今回はLinuxで計測手順のみ記載する。
事前準備
計測には電卓で計算でもよいのだが、Linuxには数式計算ができるbcコマンドがあるため、それを使う。bcコマンドがインストールされていない場合は、yum等を利用してインストールしておこう。# yum install bc
今回pingコマンドで利用するオプションは以下の通り。
- -c:試行回数。今回は10回に設定する
- -s:データサイズ。今回は、上限の65507バイトで設定する。65507バイトにIPヘッダ20バイトとICMPヘッダ8バイトが加わって、合計65535バイトのパケットが送信がされる。
Round-Trip Time)の平均値が表示されるので、その値を用いて帯域の計算を行う。
# ping -c 10 -s 65507 192.168.11.112
------------------------------
PING 192.168.11.112 (192.168.11.112) 65507(65535) bytes of data.
65515 bytes from 192.168.11.112: icmp_seq=1 ttl=64 time=0.354 ms
65515 bytes from 192.168.11.112: icmp_seq=2 ttl=64 time=0.333 ms
65515 bytes from 192.168.11.112: icmp_seq=3 ttl=64 time=0.443 ms
65515 bytes from 192.168.11.112: icmp_seq=4 ttl=64 time=0.360 ms
65515 bytes from 192.168.11.112: icmp_seq=5 ttl=64 time=0.416 ms
65515 bytes from 192.168.11.112: icmp_seq=6 ttl=64 time=0.266 ms
65515 bytes from 192.168.11.112: icmp_seq=7 ttl=64 time=0.331 ms
65515 bytes from 192.168.11.112: icmp_seq=8 ttl=64 time=0.406 ms
65515 bytes from 192.168.11.112: icmp_seq=9 ttl=64 time=0.288 ms
65515 bytes from 192.168.11.112: icmp_seq=10 ttl=64 time=0.284 ms
--- 192.168.11.112 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9000ms
rtt min/avg/max/mdev = 0.266/0.348/0.443/0.057 ms
------------------------------
計算式は以下の通りとなる。
送受信データ量 (bit) = 65536 * 8 * 2 ・・・①
① / RTT (ms) / 1000 = 帯域 (Mbps)
実際に計測してみる
それでは実際に計測をしてみよう。簡単に計測するために、以下3行のコマンドを作成した。1行目の変数の中身だけ変更して他はそのまま実行すれば、帯域計測が実施できる。------------------------------
# dst=<送信先IPアドレス / ホスト名>
# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------
①同一ESXiサーバー内の仮想マシン間の帯域を計測
同じvSwitchに接続されている仮想マシン同士で帯域を計測してみる。
# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
------------------------------
0.385 ms
------------------------------
# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------
2723.53 Mbps
------------------------------
以下の過去記事に記載した通り、仮想マシンは1Gbps以上の帯域で通信が可能となる。pingによる計測においても確認することができた。
ESXiの仮想ネットワークアダプタ「E1000」は、1Gbps以上の速度が出る
②1000BASE-Tで接続されたNASとの帯域を計測
物理的にUTPケーブルを使った1000BASE-Tで接続されているNASに対して、帯域計測を行う。
------------------------------
1.772 ms
------------------------------
------------------------------
591.73 Mbps
------------------------------1Gbpsといっても、実際は6割程度の帯域となることが確認できた。
③インターネット回線の帯域を計測
ping応答を返してくれる適当なドメインを指定して計測を行う。www.yahoo.co.jpが応答を返してくれるので、今回はそちら宛てにpingを飛ばして速度計測を行う。
# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
# rtt=`ping -q -c 10 -s 65507 ${dst} | grep avg | cut -d"/" -f 5` ; echo "${rtt} ms"
------------------------------
18.309 ms
------------------------------
# speed=`echo "scale=2; (65535 * 8 * 2) / $rtt / 1000" | bc` ; echo "${speed} Mbps"
------------------------------
57.27 Mbps
------------------------------
なお、上記計測結果はかなりのムラがあり、速い時では170Mbps程度のこともあったので、数回計測することをお勧めする。
0 件のコメント:
コメントを投稿