pingコマンドでネットワークスピードを測る

/ Linux/Unix / Comment[0]
pingコマンドを用い、送信パケットサイズと返答速度を計算してネットワークスピードを測ります。

フラグメント化したパケットはあまりよろしくないので、フラグメント化しないギリギリの1400byteを測定したいホストへ送ります。
$ ping -s1400 -c4 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 1400(1428) bytes of data.
1408 bytes from 192.168.1.1: icmp_seq=1 ttl=254 time=188 ms
1408 bytes from 192.168.1.1: icmp_seq=2 ttl=254 time=96.8 ms
1408 bytes from 192.168.1.1: icmp_seq=3 ttl=254 time=2.92 ms
1408 bytes from 192.168.1.1: icmp_seq=4 ttl=254 time=4.97 ms

--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 2.924/73.395/188.850/76.691 ms

回線の秒速=(サイズ*2)/秒なので

1428*2/0.02924=約97674byte/s
97674/1024=約95KB/s


実際はオーバーヘッドやプロトコルなどで誤差が出るので、この数字は過信できません。
数字自体は当てになりそうもないですが、サーバの負荷や帯域の状況を比較するには使えそうです。

こんなシェルスクリプトを書いておくと便利ですね
#!/bin/sh

host=$1
size=$2
count=$3

datasize=`calc $size*2`
timems=`ping -c $count -s $size $host | grep rtt | cut -d\/ -f5`
time=`calc $timems/1000`

result=`calc $datasize/$time|cut -c3-`

calc $result/1024
$ ./test.sh google.com 1400 4
	~33.71193441006041178646

KB/s単位でスピードが測れます。

が、

あくまで目安だということを忘れないようにしましょう。
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可