Windows の ttcp を使ってネットワークのスループットを計測する





Windows 付属の ttcp コマンドを使用して
ネットワークのスループットを調査する方法は次の通り。

準備するモノ:Windows PC 2 台
                   Windows XP あるいは Windows 2003 のインストール CD

ttcp の使い方は簡単で、
Windows に ttcp.exe を任意の場所にコピーしておいて、
ttcp.exe を DOS プロンプトから実行するだけ。

これだけで、PC と PC の間のネットワークのスループットを計測できる。

ttcp.exe はインストール CD の以下の場所にある。

\VALUEADD\MSFT\NET\TOOLS

準備ができたら特別なオプションは指定せずに早速 ttcp を実行してみる。

ttcp を実行する際は、2 台の PC で受信側と送信側というそれぞれ 2 つの役割を
実行する必要がある。

まず以下のコマンドを受信側の PC で実行する。

>ttcp -r

続いて送信側の PC で以下のコマンドを実行するとスループットの計測開始。

例は、受信側の IP アドレスが 1.1.1.1 の場合。

>ttcp -t 1.1.1.1

ttcp は受信側の準備ができていないと送信しないので、
先に受信側のコマンドを実行しておく必要がある。

実行後の出力結果は次の通り。

○ 受信側の出力結果

>ttcp -r
ttcp-r: local 1.1.1.1 <- remote 2.2.2.2
ttcp-r: buflen=8192, nbuf=2048, align=16384/+0, port=5001  tcp
ttcp-r: 16777216 bytes in 279266 real milliseconds = 58 KB/sec
ttcp-r: 2051 I/O calls, msec/call = 136, calls/sec = 7, bytes/call = 8180

○ 送信側の出力結果

>ttcp -t 1.1.1.1
ttcp-t: local 2.2.2.2 -> remote 1.1.1.1
ttcp-t: buflen=8192, nbuf=2048, align=16384/+0, port=5001  tcp  -> 1.1.1.1

ttcp-t: done sending, nbuf = -1
ttcp-t: 16777216 bytes in 279144 real milliseconds = 58 KB/sec
ttcp-t: 2048 I/O calls, msec/call = 136, calls/sec = 7, bytes/call = 8192

何もオプションを指定せずに実行すると、TCP を使った測定が実行される。

結果からスループットは送信側から見ても受信側から見ても
58 KB/sec (464 Kbps) であることが分かる。

これを使えば、例えばルータやファイアウォールを 2 台の PC で挟んで
実行することでルータやファイアウォールのスループットを計測することもできる。

さらに言えば、ルータやファイアウォールで帯域制限を実行している場合に、
意図した通りに動作しているかを確認することも可能。

SSG5 で帯域制限 ( traffic shape )

上記例は、SS5 で 500 Kbps の帯域制限をかけた場合の出力結果。

比較のために、SSG5 で帯域制限する前の受信側の出力結果は次の通り。

>ttcp -r
ttcp-r: local 1.1.1.1 <- remote 2.2.2.2
ttcp-r: buflen=8192, nbuf=2048, align=16384/+0, port=5001  tcp
ttcp-r: 16777216 bytes in 1575 real milliseconds = 10402 KB/sec
ttcp-r: 2068 I/O calls, msec/call = 0, calls/sec = 1313, bytes/call = 8112

制限がかかっていないと 80 Mbps ぐらい出ていることが分かる。

その接続が制限をかけることで 464 Kbps になっていることで、
帯域制限の機能が意図した通り動作していることが確認できる。