web-dev-qa-db-ja.com

2つのボックス間のネットワーク速度をどのようにテストしますか?

私の家にはギガビットネットワークがあり、Ubuntuベースのボックスがいくつかあります。完全な好奇心から、2つのボックス間の速度を確認したいと思います。私は速度など何の問題も抱えていません。本当に興味があるのは私の中のオタクです。加えて、改善の余地があるかどうか、または何かが間違って設定されていることを結果が知らせてくれるかもしれません。

それでは、Ubuntuボックス間のネットワーク速度をどのように適切にテストしますか?

165
Jacob Schoen

iperfを使用します。これは、クライアントサーバーの配置であり、一端でサーバーモードで実行し、ネットワークの反対側にある別のコンピューターから接続します。

両方のマシンが実行されます:

Sudo apt-get install iperf

いずれかのマシンでiperfサーバーを起動します。

iperf -s

次に、他のコンピューターで、iperfにクライアントとして接続するように指示します。

iperf -c <address of other computer>

クライアントマシンでは、次のように表示されます。

oli@bert:~$ iperf -c tim
------------------------------------------------------------
Client connecting to tim, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.4 port 37248 connected with 192.168.0.5 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    893 Mbits/sec

もちろん、サーバーマシンでファイアウォールを実行している場合は、ポート5001での接続を許可するか、-pフラグでポートを変更する必要があります。


あなたがそのように傾いているなら、普通のnc(netcat)でほとんど同じことをすることができます。サーバーマシン上:

nc -vvlnp 12345 >/dev/null

また、クライアントはddトンネルを介してncを介してゼロのギガバイトをパイプすることができます。

dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345

降格として:

$ dd if=/dev/zero bs=1M count=1K | nc -vvn 10.10.0.2 12345
Connection to 10.10.0.2 12345 port [tcp/*] succeeded!
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.11995 s, 118 MB/s

タイミングはddで指定されますが、パイプが取得する速度でしか出力できないため、十分に正確である必要があります。それに不満がある場合は、time呼び出しですべてをまとめることができます。

結果はメガバイトであるため、8を掛けるとメガビット-秒速度が得られることに注意してください。上記のデモは944mbpsで実行されています。

266
Oli

Oliのiperfに関する推奨事項と同じです。いくつかのポイントを追加したいだけです。

  1. プラットフォーム間でのテストを可能にするWindowsクライアントもあります。
  2. -t <seconds>はテストの長さを変更します。 -P <n>は、同時接続の数を変更します。たとえば、iperf -c [target IP] -P 10 -t 30は10の接続を30秒間テストし、10の個別の接続速度とともに集計結果を提供します。
  3. 須藤は必要ありません。 http://iperf.fr/ でバイナリをダウンロードできます。動作するはずです。 wgetでダウンロードし、chmodで実行可能にすると、バイナリを直接実行できます。完璧に機能します。

デフォルトの設定を使用すると、単一の接続速度がかなり変動することがわかりました。ただし、3 +並列接続の場合、ギガバイトスイッチでの結果はより一貫しています。 (一貫して@ 910-920Mbps)

21
wujj123456

このスクリプト を使用すると、マシンとリモートホスト間の接続速度を簡単にテストできます。使用例:

$ scp-speed-test.sh user@remote_Host 80000
  • user@remote_Hostは宛先ホストです(このホストへのsshアクセスが必要です)
  • 80000は、リモートホストに受信されるテストファイルのおおよそのサイズ(KB)です。これは必須の引数ではありません。
7
VeLKerr

イーサネットLANを低レベルでテストする場合は、無料のLinux CLIイーサネットテストツールであるEtherateを使用できます。

https://github.com/jwbensley/Etherate

IPerfのようなツール(非常に優れています!)をIPとTCPまたはUDPで動作するように混在させます。イーサネット/ OSIレイヤー2で直接テストをイーサレートします。

4
jwbensley

以下のコマンドには追加のパッケージは必要ありませんが、SSHアクセスが必要です。

ssh [email protected] 'dd if=/dev/zero bs=1GB count=3 2>/dev/null' | dd of=/dev/null status=progress

出力例:

2992238080 bytes (3.0 GB) copied, 27.010250 s, 111 MB/s
5859375+0 records in
5859375+0 records out
3000000000 bytes (3.0 GB) copied, 27.1943 s, 110 MB/s

このコマンドは、リモートサーバーの標準出力にゼロでいっぱいの3GB(1000 ^ 3バイト)のダミーファイルを出力します。これは、SSHを介してローカルサーバーの標準出力に印刷(転送)され、/dev/nullにローカルにパイプされます(つまり無視されます) )。実行中にテストの進行状況を確認することもできます。

確かに他のツールほど正確ではありませんが、私のユースケースは、追加のパッケージをインストールせずにネットワーク速度が問題かどうかをテストするバックアッププロセスをデバッグすることでした。

2
bm-bergmotte

2つのホスト間で帯域幅のベンチマークを行うためのその他のNiceコマンドラインツールもあります。

nuttcp

server$ nuttcp -S
client$ nuttcp -v -v -i1 1.1.1.1 ;# 1.1.1.1 is server's address

nepim

 server$ nepim
 client$ nepim -d -c 1.1.1.1 ;# 1.1.1.1 is server's address

goben

 server$ goben
 client$ goben -hosts 1.1.1.1 ;# 1.1.1.1 is server's address
1
Everton

私のコメントで最高の答えを指摘したように、クライアント/サーバーが最適化 to ...squeeze速度のあらゆるビット

私の解決策:

両側にramdiskを作成します(したがって、ストレージ速度に制限はありません。tmpfsではなくramfsで作成することをお勧めします。したがって、スワップに入らないようにしてください。少なくとも512Mの空きメモリを残さないよう注意してください。システムの場合、ギガイーサネットを使用している場合、SSDでも速度が低下する可能性があります)サーバーにApacheをインストールし、ramdiskへのリンクを作成し、ramdisk(100M-1G、/dev/randomからddまたは手元にコピーがある場合)、クライアント側に移動し、高度なダウンロードプログラムを使用して(その側のRAMディスクにも)ダウンロードします。lftpを使用しました

まあ、違いは大きなものでした。iperfと9.5M/sのnetcatによって報告された75Mbpsからです。

to 11.18M/s私のソリューションで:

1591129421 bytes transferred in 136 seconds (11.18M/s)
0
THESorcerer