| [Network] | ||||||||||||
pingでネットワークの速度を調査する
|
||||||||||||
|
||||||||||||
| 解説 |
ネットワークの速度(ここでは単に、単位時間当たりの最大転送量の意味とする)を測定するにはさまざまな方法があり、本TIPSでも、「ftpでネットワークの速度を測定する」や「ttcpでネットワーク・パフォーマンスを測定する」などの方法を紹介してきた。これ以外にも、ファイルをコピーしてその所要時間から速度を割り出したり、ルータなどのネットワーク機器が備えるパフォーマンス・カウンタ値をモニタするなどの方法もあるだろう。
だがこれらの方法は、あらかじめ相手側のサーバ上で何らかサービスを動かしておいたり、ツールを準備しておくなどの必要があり、いつでもどこでも利用できるという方法ではない。厳密なパフォーマンスを測定するのならば、そのような方法でもよいだろうが、単にネットワーク回線がつながっているかどうかを調べたい場合や、その回線が混雑しているかどうかを大まかに知りたいだけならば、準備も不要で、もっと簡単な方法がある。pingコマンドを利用する方法である。
|
pingコマンドは、ICMPのEchoプロトコルを使った、IPパケットの到達可能性を調査するコマンドであり、TCP/IPにおける最も基本的なツールの1つである(pingの基本的な使い方については関連記事参照)。これを使うことにより、大ざっぱではあるが、ネットワークの速度(帯域)を調べることも可能である。本TIPSでは、その方法について解説する。
| 操作方法 |
pingコマンドを実行すると、ICMPのEcho要求パケットが指定されたIPアドレスに送信され、通常はそのICMPパケットがそのまま相手から返送されてくる。ICMPやEchoパケットの詳細については、関連記事を参照していただきたい。
|
Windows OSのデフォルトでは、送信されるデータ・サイズ(ICMP Echoのデータ部として渡される部分のデータ・サイズ)は32bytesである。実際に送信されるパケットでは、このデータ部分に加えて、ICMP Echoヘッダが8bytes、IPヘッダが20bytes追加される。さらに下位のデータリンク層/物理層のヘッダも加算されるので(例:イーサネットならヘッダが14bytes、PPPoEなら数十bytes)、もっと長くなる。
つまりpingを1回実行すると、これだけのサイズのパケットが往復することになるので、そこからおおよそのネットワークの速度を計算することができる。ヘッダやIPフラグメント化のオーバーヘッドなどをすべて無視すると、次のようになる。
帯域≒(データ・サイズ×2)÷所要時間 [bytes/s]
ただし実際には、途中のルータでのオーバーヘッドがあるし(受信したパケットを待ち時間0ですぐに次へフォワードしているわけではない)、pingに応答するコンピュータもがすぐにパケットを送り返してくるわけではないので(待ち時間0で応答するわけではない)、この値には誤差が含まれる。またパケット・サイズが小さいと、ほかの通信トラフィックなどの影響を大きく受けるので、正確な値にはならない。だがそのことを理解して利用すれば、十分意味のあるデータを収集することができる(ただし当該ホストがpingに応答するように設定されていなければならない)。場合によっては(ほかの方法と比べると)1〜2割程度の誤差でネットワーク帯域を調査することができる。
pingは最も基本的なツールであり、ほぼいつでもどこでも利用することができるため、ほかの方法を試す前に、まずこの方法で概要を調査するとよいだろう。ただし誤差の入り込む余地が多いため、精度を上げるにはなるべくデータ・サイズ(pingの-lオプションで指定する値)を大きくするといった注意が必要である。
Windows OSのpingコマンドでは、応答時間は1ms単位でしか表示されないし、1ms以下だと「time<1ms」としか表示されない。これでは正確な値は計算できない。経験的には、最低でも10ms、可能ならば数十ms以上になるように、データ・サイズを大きくするのが望ましい。
また、デフォルトのデータ・サイズでは、データ部分のサイズに対してヘッダ部分のサイズが大きく、誤差が入りやすい(ヘッダ部分はネットワークの媒体に依存して変わるため)。ヘッダ部分の相対的なサイズを下げるため、例えば5Kbytesとか10Kbytes、可能ならば(pingコマンドで指定できる最大サイズに近い)60Kbytesなどに設定するとよいだろう。ただし場合によっては(セキュリティのために)フラグメント化したIPパケットの通信が禁止されている場合があるので、その場合はフラグメントを起こさない最大サイズに近い1400bytes程度にするのがよい。
以下は、インターネット上のあるサイトに向けてpingを実行した場合の例である。
C:\>ping -l 60000 www.XXX.XXX.co.jp |
サイズ60000bytesのパケットを送信し、平均応答時間は53msであった。これから計算されるネットワークの帯域はだいたい次のようになる(ヘッダ部分などは無視している)。
帯域≒(60000×2)÷0.053≒2.2[Mbytes/s]
(注:このテストで使用した回線上でより正確なテストをしたところ、約3Mbytes/s程度の速度が出ていた。ルータなどでのオーバーヘッドのほかに、高度なフロー制御を持つTCPと、何も制御されていないIPやICMPプロトコルの差なども影響していると考えられる)
同様のテストを、ローカルのLAN上のコンピュータに対しても行ってみると、次のようになった。
C:\>ping -l 60000 192.168.2.51 |
この場合は次のようになる。
帯域≒(60000×2)÷0.011≒10.4[Mbytes/s]
(注:FTPで測定した結果は11.2[Mbytes/s]程度だった)
このような値を日常的に収集しておき、ネットワークにトラブルが発生した場合や、混雑していると思われるときに収集したデータと比較することにより、トラブルシューティングの助けとすることができる。ただし、回線が(あまりにも)高速だと、別の要因(テストに使用する機器のパフォーマンス不足や、TCPのような高度なフロー制御機能の不足など)により、大きく値がずれることがあるので、注意していただきたい。どちらかというと、LAN回線ではなく、WAN回線やインターネット接続回線における速度測定に向く方法だといえる。![]()
|
||||||||||||||||||||||||||||
| 「Windows TIPS」 |
ホワイトペーパー(TechTargetジャパン)
- 第207話 究極の人事システム (2010/2/9)
部長、わが人事部が開発した究極の人事評価システムがついに完成しました! これで不要な社員が一発で分かります! - WindowsTIPS (2010/2/5)
− netshコマンドでTCP/IPのパラメータを設定する
− Virtual PC 2007の共有NATで利用可能なアドレス範囲
− スタンバイ復帰でパスワード入力を要求されないように - 仮想環境でActive Directoryを利用する (2010/2/4)
仮想環境にADをインストールすれば、自由にActive Directoryドメイン・ネットワークを構築して実験できる - 第206話 バナー広告案 (2010/2/2)
いまどきWebマーケティングが不可欠なのは分かるが、強烈な競合に並べてバナーなんか出して、勝ち目はあるのか?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |







