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


168

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

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

回答:


272

を使用します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

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

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を掛けビット -per-2速を。上記のデモは944mbpsで実行されています。


あなたは私の質問に対するすべての答えを持っています!私のネットワークは、714 MBytesと598 Mbits / secの帯域幅で転送するだけでなく、明らかにセットアップされていません。ダンノは、将来的にそれを検討するかもしれません。ありがとう。
ジェイコブシェーン

公平のために、もう1つのボックスはスイッチ1つ(およびcat5eの20メートル)だけ離れており、輻輳はありません。600mbpsはまだかなり高速です。
オリ

これは素晴らしいことですが、サーバーへのルートアクセス権がありません。
ジェフ

-P 10を試してください。単一接続での結果はjschoensに似ていますが、3 +並列接続では一貫して920Mbpsをプッシュします。
wujj123456

1
@CMCDragonkaiおそらくあなたのものではないリソースをテストすべきではありません。帯域幅の重いテストは、短期的な安定性に影響を与える可能性があります。
オリ

22

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

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

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


8

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

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

4
これは、SCPアプリケーションの速度をテストするようで、下層でのテストよりも遅くなります。たとえば、ncはL4を使用します。もちろん、これはSCPの速度をもっと気にするなら素晴らしいことです。
須藤

1
問題があります:このスクリプトはファイルをディスクに書き込み、読み取ります-これはRAMよりも遅いため、人為的な速度低下になる可能性があります。また、ゼロが送信されますが、それらが圧縮されている場合、それは大きな人為的な高速化です。あなたは擬似ランダムデータが必要な場合は、使用しない/dev/random(それはブロックすることができます)、またはurandom代わりに、DM-暗号を使用して、彼らはあまりにも非常に遅くなることがあります(リンクコメントがあることを示唆)(のcryptsetupのよくある質問を参照してくださいどのように私はクリプトでデバイスをワイプすることができ2.19ランダム性を等級分けしますか?)多分ラムのファイルと。
Xen2050

4

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

https://github.com/jwbensley/Etherate

iPerfのようなツール(非常に優れています!)をIPとTCPまたはUDPで動作するように組み合わせて使用​​します。イーサネット/ OSIレイヤー2で直接テストをイーサレートします。


2

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

ssh username@myserver.example.com '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

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

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


1

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

nuttcp

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

ネピム

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

御弁

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

2
これらは互いに、またiperfとはどう違うのですか?彼らは同じように機能しますか、彼らは何をしますか?nuttcpはDebianにあり、「nuttcpはnttcpに基づいています。これは、1984年12月より前にBRLでMike Muussによって書かれた元のttcpに対するSilicon Graphics(SGI)の誰かによる拡張で、 UC BerkeleyとBBNによるTCPスタックは、DARPAが最初のBSD Unixリリースに配置するバージョンを決定するのに役立ちます。」
Xen2050

0

私のコメントで最高の答えを指摘したように、クライアント/サーバーが最適化されていないため、その解決策は十分ではありません... あらゆる速度を絞る

私の解決策:

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

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

11.18M / sの私の解決策と:

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

9.5M * 8 = 76 mbps; 75 mbpsにかなり近い
Software

-4

最初のボックスにコンピューターを接続し、他のボックスを最初のボックスに接続するのは簡単です。次に、コンピューターから最初のボックスにpingを実行して結果を保存し、他のボックスにpingを実行して減算を実行します。


10
これは、速度の一部にすぎないネットワーク遅延を示しています。たとえば、私の電話の3G接続は非常に長い待ち時間(100〜300ミリ秒)を持っていますが、それでも5mbpsのスループットを管理できます。
オリ

彼が速度を求めたが、スループットを望んだ場合、私のせいではありません。
ニャミオウガレアンスロポ

1
遅延は反応時間であり、速度ではありません。
-wullxz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.