network

Linux、Mac、Windows間のネットワーク速度をiperf3で調べる

投稿日:2019年8月5日

  • なんかネットワークが遅いから調べたい。
  • あのLANケーブルひょっとして100Mbps用じゃない?1Gbpsじゃないかも。
  • 試験的にネットワーク帯域を絞ったから通信速度を確認したい。

こういった時、通信する両端末にiperf3をインストールすると簡単に通信速度が分かるようになります。

iperf3を使ったネットワーク速度計測

iperfサーバとiperfクライアントで通信を行い速度を計測、表示してくれます。

iperfは3になった時に下位互換がなくなり、明確にiperf3というコマンドになりました。iperf2サーバにiperf3クライアントで接続したり、その逆をすることは出来ないのでiperf3で揃えます。

今回は以下のようにCentOSに立てたiperf3サーバに、Mac、Windowsのiperf3クライアントから接続します。

-c、-sを切り替えればクライアント、サーバの変更が出来ます。

CentOSにiperf3インストール、サーバモードで起動

yumでインストールした後、5201ポートを開放。
(iperf2までは5001ポート使用でしたがiperf3では5201ポートに変更されています)

# yum install iperf3

# firewall-cmd --zone=public --add-port=5201/tcp --permanent
success

# firewall-cmd --reload
success

iperf3をサーバモードで起動。クライアントが接続してくるまで待機状態になります。

# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

Windowsにiperf3インストール、クライアントモードで起動

iperf公式サイトからWindows用zipファイル(iperf-3.1.3-win64.zip)をダウンロード。
https://iperf.fr/iperf-download.php

解凍して適当なディレクトリに配置したらコマンドプロンプトを開き、クライアントモードで起動してサーバに接続します。

C:\tmp\iperf-3.1.3-win64>iperf3 -c 192.168.0.4
Connecting to host 192.168.0.4, port 5201
[  4] local 192.168.0.5 port 55199 connected to 192.168.0.4 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   106 MBytes   891 Mbits/sec
[  4]   1.00-2.00   sec   112 MBytes   936 Mbits/sec
[  4]   2.00-3.00   sec   111 MBytes   931 Mbits/sec
[  4]   3.00-4.00   sec   112 MBytes   940 Mbits/sec
[  4]   4.00-5.00   sec   112 MBytes   942 Mbits/sec
[  4]   5.00-6.00   sec   111 MBytes   935 Mbits/sec
[  4]   6.00-7.00   sec   113 MBytes   944 Mbits/sec
[  4]   7.00-8.00   sec   112 MBytes   943 Mbits/sec
[  4]   8.00-9.00   sec   112 MBytes   937 Mbits/sec
[  4]   9.00-10.00  sec   113 MBytes   944 Mbits/sec
[  4]  10.00-10.05  sec  5.38 MBytes   927 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.05  sec  0.00 Bytes  0.00 bits/sec                  sender
[  4]   0.00-10.05  sec  1.09 GBytes   934 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

秒間100Mバイト転送出来ているので1Gbps出ていることが確認できます。

MacOS Xにiperf3インストール、クライアントモードで起動

HomeBrewで入れる方法があるのでそちらを使います。
http://macappstore.org/iperf3/

brewコマンドが必要なのでwhich brewして出てこない場合は入れておきましょう。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

brewでiperf3をインストール。

brew install iperf3

iperf3サーバに接続。古めのWiFiルータなので100Mbpsでした。

$ iperf3 -c 192.168.0.4

Connecting to host 192.168.0.4, port 5201
[  5] local 192.168.0.203 port 60217 connected to 192.168.0.4 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  11.9 MBytes  99.4 Mbits/sec
[  5]   1.00-2.00   sec  11.9 MBytes  99.9 Mbits/sec
[  5]   2.00-3.00   sec  11.8 MBytes  99.0 Mbits/sec
[  5]   3.00-4.00   sec  12.0 MBytes   101 Mbits/sec
[  5]   4.00-5.00   sec  10.5 MBytes  87.7 Mbits/sec
[  5]   5.00-6.00   sec  12.2 MBytes   102 Mbits/sec
[  5]   6.00-7.00   sec  11.3 MBytes  94.6 Mbits/sec
[  5]   7.00-8.00   sec  11.3 MBytes  95.0 Mbits/sec
[  5]   8.00-9.00   sec  12.0 MBytes   100 Mbits/sec
[  5]   9.00-10.00  sec  11.9 MBytes  99.3 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   117 MBytes  97.8 Mbits/sec                  sender
[  5]   0.00-10.00  sec   117 MBytes  97.8 Mbits/sec                  receiver

iperf Done.

拠点間のネットワーク性能測定ができました。

2000年代初頭くらいまでは、全国に散らばるシステムだと「あの拠点はISDNで128Kbpsしか出ないからシミュレーションしておかないと」とか結構あるあるなニーズでした。

tc qdiscで帯域を絞ってiperf3で確認して疑似環境を作り、開発システムを結合テストしてみるとか。回線速度上げればいいのに、と思ったものです。

今後1Gbpsが遅いと言われる時代になっても障害原因追及には使えると思うので覚えておきたいところです。

-network
-

執筆者:

関連記事

JavaとPerlでUDPソケット通信

目次1 はじめに2 対象読者3 実装3.1 UDPサーバ(Perl)3.2 UDPクライアント(Java)3.3 実行4 まとめ はじめに 本棚を整理していたらラクダ本が出てきました。うわー懐かしい、 …

JavaとPerlでTCPソケット通信

目次1 はじめに2 対象読者3 実装3.1 TCPサーバ(Perl)3.2 TCPクライアント(Java)3.3 実行4 まとめ はじめに 前回の続きです。One IT ThingJavaとPerlで …

グローバルIPアドレスの確認をコマンド化する

「Dynamic DNSサービスで定期的にDNS更新をしなきゃいけないけど、固定IPじゃなくて変わった時に調べるのが煩わしい」 といった時に手作業が発生しないようにWeb APIがあるサービスを使って …

インターネット速度テストサービスの結果を比較してみる

「インターネット疎通の速度が帯域通りになっているか確かめたい」 仕事でもプライベートでもそんなニーズがあります。 数多あるインターネット速度計測サービスを試してみて「日本国内で使う場合、最も正確な速度 …

宅内CentOS8にSoftEtherをインストールしてインターネット外部からLAN参加出来るVPN環境を無料で作る

2020/04現在、COVID-19の影響を受けて自宅から会社のVPNに繋いでリモートワークに移行している方も増えてきたんじゃないでしょうか。(残念ながら私はまだ出社必須ですが(-_-; そもそも、も …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。