運用コマンドレファレンス Vol.1
[機能]
ttcpは2点間のTCP/UDPレベルでのスループットを計測します。任意のホスト間でトラフィックを発生させることができますが,両方のホストでttcpがサポートされている必要があります。
なお,本機能は障害時やネットワーク構築時の試験用の機能です。通常運用中に使用した場合,CP congestionの発生により本装置の運用に影響を与える恐れがあるので注意してください。
[入力モード]
装置管理者モード
[入力形式]
ttcp -t [<options>] [<trans-options>] <host> ttcp -r [<options>] [<recv-options>]
[パラメータ]
- -t
- ttcp送信モードで動作します。
- -r
- ttcp受信モードで動作します。
- [<options>]
- -l <buf_len>
- 一回に送信/受信するデータのサイズをバイト単位で指定します。このオプションで設定可能な値は,tcpを利用する場合は1〜100000,udpを利用する場合は1〜65507です。このオプションの指定がない場合は8192に設定されます。
- -u
- udpを使用してデータを送信/受信します。このオプションの指定がない場合はtcpを使用します。
- -p <port_num>
- 送信先/受信用ポート番号を指定します。このオプションで設定可能な値は1024〜65535です。このオプションの指定がない場合は5001に設定されます。
- -v
- 詳細な統計情報について表示します。
- -b <sock_buf_len>
- ソケットバッファのサイズをバイト単位で指定します。このオプションで設定可能な値は1〜100000です。このオプションの指定がない場合,以下のように設定されます。
項目 送信側 受信側 tcp 8192 8192 udp 9216 41600 - また,tcpモードではこの値が初期ウィンドウサイズに反映されます。
- -f <fmt>
- 計測結果を出力する際の単位を指定します。<fmt>で指定できる値と出力する際の単位は以下のとおりです。このオプションの指定がない場合はキロバイト単位で表示されます。
<fmt> k K m M g G 単位 キロビット キロバイト メガビット メガバイト ギガビット ギガバイト
- [<trans-options>]
- -S
- 標準入力より送信データを読み込みます。このオプションの指定がない場合は送信するデータのパターンを自動生成します。
- -n <n_buf>
- 送信するデータの数を指定します。このオプションの指定がない場合は2048に設定されます。
- -D
- TCPのNagelのアルゴリズムの利用を禁止します(TCP_NODELAY)。これによりMSS(Max Segment Size)より小さなデータでも即座に送信します。
- ただし,-uオプションと同時に指定した場合,このオプションは無視されます。
- <host>
- データを送信する相手をIPアドレスまたはホスト名で指定します。IPアドレスとしてIPv4アドレスが指定可能です。
- [<recv-options>]
- -S
- 受信したデータをすべて画面に表示します。このオプションの指定がない場合は受信したデータを画面に表示しません。
- ただし,-uオプションを指定した場合はこのオプションを指定しないでください。送信側がデータの送信を終了しても受信側はデータ待ち受け状態を維持します。
[実行例]
- データパターンを自動生成し,tcpモードでのホストA-B間のスループット計測
IPアドレス192.168.0.1の端末Aを送信側とし,送信するデータパターンを自動生成します。また,-vオプションを指定して詳細統計情報を表示します。192.168.0.2の端末Bは受信側として画面表示を行わずにデータを受信し,A-B間のスループットを計測します。なお,計測にあたって受信側が先に起動されている必要があります。
<受信側> >ttcp -r [Enter]キー押下 ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp ttcp-r: socket ttcp-r: accept from 192.168.0.1 ←1 ttcp-r: 16777216 bytes in 12.01 real seconds = 1364.03 KB/sec +++ ┐ ttcp-r: 11582 I/O calls, msec/call = 1.06, calls/sec = 964.24 │2 ttcp-r: 0.0user 0.2sys 0:12real 1% 0i+0d 0maxrss 0+0pf 11579+1csw ┘ <送信側> >ttcp -t -v 192.168.0.2[Enter]キー押下 ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 192.168.0.2 ttcp-t: socket ttcp-t: connect ←1 ttcp-t: 16777216 bytes in 12.01 real seconds = 1364.02 KB/sec +++ ┐ ttcp-t: 16777216 bytes in 3.46 CPU seconds = 4734.26 KB/cpu sec │3 ttcp-t: 2048 I/O calls, msec/call = 6.01, calls/sec = 170.50 │ ttcp-t: 0.0user 3.4sys 0:12real 28% 0i+0d 0maxrss 0+0pf 3878+8csw ┘
- コネクション確立時に表示
- 全データ受信後に表示
- 全データ送信後に表示
- udpモードでのホストA-B間のスループット計測
送信側・受信側とも-uオプションを指定して,UDPモードでttcpを実行します。
送信側では-fオプションを使用し,ギガビット単位で計測結果を表示します。受信側では,-fオプションを使用して,メガビット単位で計測結果を表示します。なお,-Sオプションは指定しないでデータパターンを自動生成します。
<受信側> > ttcp -r -u -fm ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 udp ttcp-r: socket ttcp-r: 3000000 bytes in 1.32 real seconds = 17.29 Mbit/sec +++ ┐ ttcp-r: 2002 I/O calls, msec/call = 0.68, calls/sec = 1512.14 │1 ttcp-r: 0.0user 0.0sys 0:01real 2% 0i+0d 0maxrss 0+0pf 2000+0csw ┘ <送信側> > ttcp -t -u -l 1500 -n 2000 -fg 10.10.10.1 ttcp-t: buflen=1500, nbuf=2000, align=16384/0, port=5001 udp -> 10.10.10.1 ttcp-t: socket ttcp-t: 3000000 bytes in 0.47 real seconds = 0.05 Gbit/sec +++ ┐ ttcp-t: 2022 I/O calls, msec/call = 0.24, calls/sec = 4268.58 │2 ttcp-t: 0.0user 0.0sys 0:00real 4% 18i+246d 242maxrss 0+1pf 16+0csw ┘
- 全データ受信後に表示
- 全データ送信後に表示
[表示説明]
ttcpコマンドの表示内容を次の表に示します。
表10-24 ttcpコマンドの表示内容
表示項目 表示内容 表示詳細情報 buflen=<buf_len> 送受信サイズ 一回の送受信で送信/受信できるデータの最大サイズ<buf_len>をバイト単位で表示します。 nbuf=<n_buf> 送信回数 データを送信する回数<n_buf>を表示します。 align=<align>/<offset> バッファ領域情報 <align>の倍数となる値から<offset>だけずれた位置がバッファ領域の先頭アドレスとなります。 port=<port_num> ポート番号 送信・受信で使用する受信側のポート番号<port_num>を表示します。 sockbufsize=<sock_buf_len> ソケットバッファサイズ ソケットバッファサイズ<sock_buf_len>をバイト単位で表示します。ただし,送信側では送信バッファサイズ,受信側では受信バッファサイズを表示します。 tcpまたはudp 送受信モード tcp/udpのどちらを利用するかを表示します。 -><host> 送信先 データの送信先<host>を表示します。 socket socket生成 socketを生成したことを表します。 sndbuf 送信ソケットバッファサイズ 送信ソケットバッファサイズを変更したことを表します。 rcvbuf 受信ソケットバッファサイズ 受信ソケットバッファサイズを変更したことを表します。 nodelay TCP_NODELAY TCPのNagleアルゴリズムの利用が禁止されたことを表します(TCP_NODELAY)。 connect 接続完了 対象ホストに接続したことを表します。 accept from <host> 接続受け付け <host>からの接続を受け付けたことを表します。 <sum_data>bytes in <r_second> real seconds 合計データサイズおよび実行実時間 送信/受信したデータサイズ<sum_data>の合計をバイト単位で表示します。送信・受信にかかった実時間<r_second>を秒単位で表示します。 =<data_per_sec>
<fmt>/sec+++平均データ送受信サイズ(実時間ベース) 実時間一秒当たりに送信・受信したデータの平均サイズ<data_per_sec>を-fオプションで指定した単位<fmt>で表示します。 <sum_data>bytes in <c_time>CPU seconds 合計データサイズおよび実行CPU時間 送信/受信したデータサイズ<sum_data>をバイト単位で表示します。送信・受信にかかったCPU時間<c_time>を秒単位で表示します。 <data_per_csec> <fmt>/cpu sec 平均データ送受信サイズ(CPU時間ベース) CPU時間一秒当たりに送信・受信したデータの平均サイズ<data_per_csec>を-fオプションで指定した単位<fmt>で表示します。 <io>I/O calls I/Oコール回数 送信側:ソケットへのデータ書き出し回数<io>を表示します。
受信側:ソケットからのデータ読み込み回数<io>を表示します。msec/calls=<t_per_call> 平均I/Oコール間隔 平均I/Oコール間隔<t_per_call>をミリ秒単位で表示します。 calls/sec=<c_per_sec> 平均I/Oコール回数 一秒当たりのI/Oコール回数<c_per_sec>を表示します。 <U>user ユーザー命令実行時間 ユーザー命令の実行にかかった時間<U> を秒単位で表示します。 <S>sys OS命令実行時間 OS命令の実行にかかった時間<S>を秒単位で表示します。 <R>real プログラム実行実時間 ttcpの実行にかかった実時間<R>を秒単位で表示します。 <P>% ttcp実行CPU/実時間比 CPU時間と実行実時間の比<P>を表示します。
(<P> = ( <U> + <S> ) / <R> )<X>i + <D>d メモリ利用状況 text領域のメモリサイズの合計<X>とdata,stack領域のメモリサイズの合計<D>をキロバイト単位で表示します。 <M>maxrss 最大RSS プロセスが利用する物理メモリサイズ<M>の最大値をキロバイト単位で表示します。 <F>+<R>pf ページフォルト回数 I/O割り込みがない場合のページフォルト回数<F>とI/O割り込みがある場合のページフォルト回数<R>を表示します。 <C>+<I>csw プロセススイッチ回数 プロセスが能動的に行ったプロセススイッチの回数<C>とプロセスが非能動的に行ったプロセススイッチの回数<I>を表示します。 buffer address <addr> バッファ領域先頭アドレス バッファ領域の先頭アドレス<addr>を表示します。
[ユーザ通信への影響]
あり。
大量のデータを送信するとCP congestionが発生する可能性があります。CP congestionが発生すると他のアプリケーションから送信されたパケットが廃棄されてしまい,ルーティングプロトコルやftp,telnetなどの通信に影響を与えます。また,大量のデータを受信した場合もCP congestionが発生し,ftp,telnetなどの通信に影響を与えます。
[応答メッセージ]
ttcpコマンドの応答メッセージを次の表に示します。
表10-25 ttcpコマンドの応答メッセージ一覧
メッセージ 内容 備考 bad hostname: Connection refused ホスト名を解決できないため,接続できません。 送信側 bad hostname: Undefined error ホスト名解決時,未定義のエラーが発生しました。 − socket: Too many open files in system. システム全体のファイルオープン数が多すぎます。 − bind: Address already in use 指定したポートはすでに使用されています。 受信側 bind: Permission denied 指定したポートを利用する権限がありません。 受信側 connect: Connection refused ホストへの接続が拒否されました。 送信側 connect: No route to host ホストまでのルーティングテーブルがないために接続できません。 送信側 connect: Permission denied 指定したIPアドレスが不正です。 送信側 connect: Can't assign requested address 指定したポート番号が無効です。 送信側 connect: Operation timed out 接続はタイムアウトしました。 送信側 connect: Network is unreachable. 対象ホストのあるネットワークに接続できません。 送信側 accept: Too many open files in system. システム全体のファイルオープン数が多すぎます。 受信側 getpeername: Connection reset by peer. accept後,送信側によって切断されました。 受信側 IO: Broken pipe データ送信中にパイプが切断されました。 送信側 IO: Socket is not connected ソケットが接続されていません。 − IO: Permission denied 指定ホストへのデータ送信の権限がありません。 送信側 IO: Message too long 送信しようとしているデータが大きすぎます。 送信側 malloc: Cannot allocate memory 指定したサイズのバッファ領域を確保できません。 − malloc: Result too large 指定したバッファ領域のサイズが大きすぎます。 −
[注意事項]
- 大量のデータを送信するとCP congestionが発生する可能性があります。CP congestionが発生すると他のアプリケーションから送信されたパケットが廃棄されてしまい,ルーティングプロトコルやftp,telnetなどの通信に影響を与えます。また,大量のデータを受信しても,CP congestionが発生し,ftp,telnetなどの通信に影響を与えます。
- CP congestionが発生した場合,パケットの送信を断続的に中断するため,テストが終了するまでに時間がかかり,スループット結果が極端に悪くなります。
- ttcpを実行してスループットを計測する際には,受信側を先に立ち上げておく必要があります。
- udpモードの送信側が-lオプションでバッファサイズを指定する場合,-bオプションで指定するソケットバッファサイズよりも大きなバッファサイズを指定するとIOエラーが発生します。-bオプションを指定しない場合,この上限値は9216となります。
- udpモードで計測を行う場合,受信側は-Sオプションを指定しないでください。このオプションの指定がある場合,送信側がデータの送信を終了しても受信側はデータ待ち受け状態を維持します。この場合,受信側で[Ctrl+C]を入力することによって,データ待ち受け状態を抜け出せますが,計測結果の表示はされません。
- 送信側で-Sオプションを指定し,送信データを手入力する場合,送信は[Ctrl+D]を入力することによって終了します。
- udp送信モードでデータを自動生成する場合,-lオプションで送信データサイズを4バイト以下に設定するとデータサイズは自動的に5バイトに調整されます。
- udp送信モードで-Sオプションを指定し,ファイルからのリダイレクトで送信データを読み込む場合,受信側で正しく計測されないことがあります。
- udpモードで計測を行う場合,受信側では,データの終了を示す4バイトの短いデータを受信した後で計測結果を表示します。udp通信では,このデータ終了を示す4バイトデータが転送途中に失われることがあります。その場合,データの受信が終了しても計測結果が表示されません。このときは,受信側で[Ctrl+C]を入力することによって,データ待ち受け状態を抜け出せますが,計測結果の表示はされません。
Copyright (c) 2005, 2011, ALAXALA Networks Corporation. All rights reserved.