クラウドベースのデータセンターに合計4台のサーバーをセットアップしました。 これらのサーバーは、CentOSまたはUbuntu Linuxを実行しています。 私のサーバーは他のユーザーと共有しているため、クラスター化されたファイルシステムのパフォーマンスが適切であることを確認する必要があります。

Ubuntu/CentOS/Debian/Fedora Linux/Unixボックス間のネットワーク速度/スループットは、iperfコマンドを使用してテストすることができます。 Iperfコマンドは、帯域幅、遅延、ジッター、データグラム損失の情報を表示します。 Iperfは、ネットワークのスループットを測定するためのツールです。 TCPまたはUDPのスループットをテストすることができます。 iperfテストを行うためには、サーバー(トラフィックを破棄する)とクライアント(トラフィックを生成する)の両方を確立する必要があります。 このページでは、2台のLinuxサーバ間のネットワーク速度/スループットをテストする方法を説明します。

Tutorial details
難易度 level Easy
Root権限 Yes
Requirements Linux with iperf
Est.

2台のLinuxサーバー間のネットワーク速度/スループットをテストするための私のサンプルセットアップ

Fig.01 Test network speed between two Linux computers

Fig.01 Test network speed between two Linux computers

Step 1 – Installation

お使いのLinuxディストロのバージョンに合わせてiperfをインストールする必要があります。 iperfには2つのバージョンがあります:

  1. iperf
  2. iperf3

iperf/iperf3は、Linux、Unix、Windows、*BSDなどのOSで動作します。

Ubuntu/DebianのLinuxサーバーにiperfをインストールする

以下のapt-getコマンド/aptコマンドを入力して、両方のサーバーにiperfをインストールします:
$ sudo apt-get update
$ sudo apt-get install iperf

Ubuntu 20.04 LTSシステムでは以下のようになります。04 LTSシステムでの表示です。

 password for vivek: Reading package lists... DoneBuilding dependency tree Reading state information... DoneThe following NEW packages will be installed: iperf0 upgraded, 1 newly installed, 0 to remove and 23 not upgraded.Need to get 76.5 kB of archives.After this operation, 213 kB of additional disk space will be used.Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 iperf amd64 2.0.13+dfsg1-1build1 Fetched 76.5 kB in 1s (70.5 kB/s) Selecting previously unselected package iperf.(Reading database ... 344795 files and directories currently installed.)Preparing to unpack .../iperf_2.0.13+dfsg1-1build1_amd64.deb ...Unpacking iperf (2.0.13+dfsg1-1build1) ...Setting up iperf (2.0.13+dfsg1-1build1) ...Processing triggers for man-db (2.9.1-1) ...

Debian/Ubuntu Linuxにiperf3をインストールする際の注意点

以下のようにiperf3(最新版)をインストールすることも可能です。
$ sudo apt-get install iperf3
Outputs:

Reading package lists... DoneBuilding dependency tree Reading state information... DoneThe following additional packages will be installed: libiperf0The following NEW packages will be installed: iperf3 libiperf00 upgraded, 2 newly installed, 0 to remove and 23 not upgraded.Need to get 86.2 kB of archives.After this operation, 294 kB of additional disk space will be used.Do you want to continue? yGet:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 libiperf0 amd64 3.7-3 Get:2 http://archive.ubuntu.com/ubuntu focal/universe amd64 iperf3 amd64 3.7-3 Fetched 86.2 kB in 1s (97.4 kB/s) Selecting previously unselected package libiperf0:amd64.(Reading database ... 344807 files and directories currently installed.)Preparing to unpack .../libiperf0_3.7-3_amd64.deb ...Unpacking libiperf0:amd64 (3.7-3) ...Selecting previously unselected package iperf3.Preparing to unpack .../iperf3_3.7-3_amd64.deb ...Unpacking iperf3 (3.7-3) ...Setting up libiperf0:amd64 (3.7-3) ...Setting up iperf3 (3.7-3) ...Processing triggers for man-db (2.9.1-1) ...Processing triggers for libc-bin (2.31-0ubuntu9.2) ...

Fedora latest/RHEL/CentOS 8のLinuxサーバーにiperfをインストールする

以下のdnfコマンドを入力して、両方のサーバーにiperfをインストールします。
$ sudo dnf install iperf

CentOS/RHEL/SL/Oracle Linuxにiperf3をインストールする際の注意点

以下のコマンドを入力します。
$ sudo dnf install iperf3

CentOS/RHEL/Oracle/Scientific Linuxのサーバーにiperfをインストールする

以下のyumコマンドを入力して、両方のサーバーにiperfをインストールします(最初にCentOS/RHEL 7.x用のEPEL repoをオンにします)。
$ sudo yum install iperf
最新のFedoraとCentOS/RHEL 8.xを使用している場合は、以下のdnfコマンドを試してみてください。xの場合は次のようにdnfコマンドを試してみてください:
$ sudo dnf install iperf3

How to test the network speed throughput between two Linux servers

CentOSまたはRHEL 8.xサーバーにiperf3をインストールします。x server

CentOS/RHEL/SL/Oracle Linuxにiperf3をインストールする際の注意点

以下のコマンドを入力します:
$ sudo yum install iperf3

Step 2 – Start an iperf server on serverA (server mode)

以下のコマンドを入力して、iperfをserver modeで実行します。
iperf -s
OR
iperf3 -s
Sample outputs:

------------------------------------------------------------Server listening on TCP port 5001TCP window size: 85.3 KByte (default)------------------------------------------------------------

TCPポート#5001をメモしておいてください。

A note about firewall config

サーバーAでTCPポート5001を開く必要があることに注意してください。 Ubuntu/Debian Linuxでufwを使ってポートを開く方法を参照してください:
$ sudo ufw allow from 192.168.149.0/24 to 192.168.149.69 port 5001 proto tcp
CentOS/RHEL/Fedoraのユーザーは、Firewallを使ってポートを開く必要がありますD. CentOS 8でFirewallDを使ってファイアウォールを設定する方法を参照してください:
sudo firewall-cmd --zone=public --add-port=5001/tcp --permanent
また、以下のように-pオプションを渡すことでポートを変更することも可能です(例
iperf -s -p 2323
iperf3 -s -p 4242

-----------------------------------------------------------Server listening on 4242-----------------------------------------------------------

Step 3 – ServerBでiperfサーバーを起動する(クライアントモード)

以下のコマンドを入力して、192.168.149.69に接続し、クライアントモードで実行します。168.149.69:
iperf -c {ip-address-of-serverA-here}
iperf -c {ip-address-of-serverA-here} -p {tcp-port}
iperf -c 192.168.149.69 -p 2323
iperf -c 192.168.149.69

OR
iperf3 -c {ip-address-of-serverA-here}
iperf3 -c {ip-address-of-serverA-here} -p {tcp-port}
iperf3 -c 192.168.149.69 -p 2323
iperf3 -c 192.168.149.69

Sample outputs:

Fig.02: Linuxネットワークのスピードテスト結果

Fig.02: Linuxネットワークのスピードテスト結果

TCPではなくUDPを使用する方法

サーバー側:
iperf -s -u
クライアント側:
iperf -c 192.168.149.69 -u

こちらもご覧ください。 How To Install Speedtest-cli On a CentOS / RHEL / Scientific / Fedora Linux To Check Internet Speed From the Bash Shelll

How to set the number of parallel client threads to run (client mode options)

-Pオプションを渡します。
iperf -c 192.168.149.69 -P 3
また、以下のように送信する時間を秒単位で設定することができます(デフォルトは10秒):
iperf -c 192.168.149.69 -P 3 -t 30
出力例です。

------------------------------------------------------------Client connecting to 192.168.149.69, TCP port 5001TCP window size: 85.0 KByte (default)------------------------------------------------------------ local 192.168.181.40 port 54198 connected with 192.168.149.69 port 5001 local 192.168.181.40 port 54194 connected with 192.168.149.69 port 5001 local 192.168.181.40 port 54196 connected with 192.168.149.69 port 5001 Interval Transfer Bandwidth 0.0-30.0 sec 2.26 GBytes 647 Mbits/sec 0.0-30.0 sec 2.89 GBytes 828 Mbits/sec 0.0-30.5 sec 1.91 GBytes 539 Mbits/sec 0.0-30.5 sec 7.07 GBytes 1.99 Gbits/sec

以下はiperf3の出力です。
## on the server side ##
iperf3 -s
## on the client side ##
iperf3 -c 192.168.149.69

サンプルの出力です。

Connecting to host 192.168.149.69, port 5201 local 192.168.181.40 port 55522 connected to 192.168.149.69 port 5201 Interval Transfer Bandwidth Retr Cwnd 0.00-1.00 sec 235 MBytes 1.97 Gbits/sec 32 609 KBytes 1.00-2.00 sec 230 MBytes 1.93 Gbits/sec 21 670 KBytes 2.00-3.00 sec 159 MBytes 1.33 Gbits/sec 19 635 KBytes 3.00-4.00 sec 235 MBytes 1.97 Gbits/sec 7 686 KBytes 4.00-5.00 sec 229 MBytes 1.92 Gbits/sec 86 757 KBytes 5.00-6.00 sec 206 MBytes 1.73 Gbits/sec 6 537 KBytes 6.00-7.00 sec 210 MBytes 1.76 Gbits/sec 5 556 KBytes 7.00-8.00 sec 235 MBytes 1.97 Gbits/sec 10 617 KBytes 8.00-9.00 sec 245 MBytes 2.06 Gbits/sec 11 670 KBytes 9.00-10.00 sec 234 MBytes 1.96 Gbits/sec 10 713 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bandwidth Retr 0.00-10.00 sec 2.17 GBytes 1.86 Gbits/sec 207 sender 0.00-10.00 sec 2.16 GBytes 1.86 Gbits/sec receiver

ヘルプの取得は簡単

以下のコマンドを入力します。
$ man iperf
$ man iperf3
$ iperf --help
$ iperf3 --help

Server or Client: -p, --port # server port to listen on/connect to -f, --format format to report: Kbits, Mbits, Gbits, Tbits -i, --interval # seconds between periodic throughput reports -F, --file name xmit/recv the specified file -A, --affinity n/n,m set CPU affinity -B, --bind <host> bind to the interface associated with the address <host> -V, --verbose more detailed output -J, --json output in JSON format --logfile f send output to a log file --forceflush force flushing output at every interval -d, --debug emit debugging output -v, --version show version information and quit -h, --help show this message and quitServer specific: -s, --server run in server mode -D, --daemon run the server as a daemon -I, --pidfile file write PID file -1, --one-off handle one client connection then exit --rsa-private-key-path path to the RSA private key used to decrypt authentication credentials --authorized-users-path path to the configuration file containing user credentialsClient specific: -c, --client <host> run in client mode, connecting to <host> --sctp use SCTP rather than TCP -X, --xbind <name> bind SCTP association to links --nstreams # number of SCTP streams -u, --udp use UDP rather than TCP --connect-timeout # timeout for control connection setup (ms) -b, --bitrate # target bitrate in bits/sec (0 for unlimited) (default 1 Mbit/sec for UDP, unlimited for TCP) (optional slash and packet count for burst mode) --pacing-timer # set the timing for pacing, in microseconds (default 1000) --fq-rate # enable fair-queuing based socket pacing in bits/sec (Linux only) -t, --time # time in seconds to transmit for (default 10 secs) -n, --bytes # number of bytes to transmit (instead of -t) -k, --blockcount # number of blocks (packets) to transmit (instead of -t or -n) -l, --length # length of buffer to read or write (default 128 KB for TCP, dynamic or 1460 for UDP) --cport <port> bind to a specific client port (TCP and UDP, default: ephemeral port) -P, --parallel # number of parallel client streams to run -R, --reverse run in reverse mode (server sends, client receives) --bidir run in bidirectional mode. Client and server send and receive data. -w, --window # set window size / socket buffer size -C, --congestion <algo> set TCP congestion control algorithm (Linux and FreeBSD only) -M, --set-mss # set TCP/SCTP maximum segment size (MTU - 40 bytes) -N, --no-delay set TCP/SCTP no delay, disabling Nagle's Algorithm -4, --version4 only use IPv4 -6, --version6 only use IPv6 -S, --tos N set the IP type of service, 0-255. The usual prefixes for octal and hex can be used, i.e. 52, 064 and 0x34 all specify the same value. --dscp N or --dscp val set the IP dscp value, either 0-63 or symbolic. Numeric values can be specified in decimal, octal and hex (see --tos above). -L, --flowlabel N set the IPv6 flow label (only supported on Linux) -Z, --zerocopy use a 'zero copy' method of sending data -O, --omit N omit the first n seconds -T, --title str prefix every output line with this string --extra-data str data string to include in client and server JSON --get-server-output get results from server --udp-counters-64bit use 64-bit counters in UDP test packets --repeating-payload use repeating pattern in payload, instead of randomized payload (like in iperf2) --username username for authentication --rsa-public-key-path path to the RSA public key used to encrypt authentication credentials indicates options that support a K/M/G suffix for kilo-, mega-, or giga- iperf3 homepage at: https://software.es.net/iperf/Report bugs to: https://github.com/esnet/iperf

まとめ

このページでは、iperf3/iperfツールを使って、2台のLinuxまたはUnixサーバー間でネットワークスループットテストを行う方法を説明しました。

🐧 Linuxやオープンソースに関する最新のチュートリアルを& RSSフィードや週刊メールマガジンで入手することができます,
🐧 5 comments so far…. Add one ↓

です。

カテゴリー UnixとLinuxのコマンド一覧
ファイル管理
Firewall Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04
ネットワークユーティリティ dig – host – ip – nmap
OpenVPN CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04
パッケージ・マネージャー apk – apt
プロセスの管理 bg – chroot – cron – disown – fg – jobs – killall – kill – pidof – pstree – pwdx – time
探索 grep – whereis – which
ユーザー情報 groups – id – lastcomm – last – lid/libuser-。lid – logname – members – users – whoami – who – w
WireGuard VPN Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です