VPN 接続で低帯域幅が発生しています。Amazon Virtual Private Cloud (Amazon VPC) 内で生じている問題ではないことを検証するには、どのようなテストを実行すればよいですか?
解決方法
Linux を実行している 2 つの EC2 インスタンスをテスト用に起動する
パフォーマンステストを開始する前に、同じ VPC 内の少なくとも 2 つの異なるアベイラビリティーゾーンで Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスを起動します。これらのインスタンスは、ネットワークパフォーマンステストに使用します。インスタンスが Linux 用の拡張ネットワーキングをサポートしていることを確認します。
注: 配置先が同一プレイスメントグループではないインスタンス間、またはジャンボフレームをサポートしていないインスタンス間でネットワークテストを実行する場合は、Linux インスタンス上の MTU を確認および設定します。
次に、SSH 経由でインスタンスに接続できることを確認します。最後に、iperf3 で使用されるポート経由の通信を許可するようにインスタンスで使用されるセキュリティグループを設定します。TCP パフォーマンスをテストするためのデフォルトのポートは 5201 です。
注: -p を使用して、目的のポートを使用するように iperf3 を設定できます。
両方のインスタンスに iperf3 ネットワークベンチマークツールをインストールする
ターミナルセッションを使用して Linux インスタンスに接続し、iperf3 をインストールします。
RHEL ベースの Linux ホストに iperf3 インストールするには:
$ sudo yum install iperf3
Debian/Ubuntu ホストに iperf3 インストールするには:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install git gcc make
$ git clone https://github.com/esnet/iperf3
$ cd iperf3
$ ./configure
$ sudo make
$ sudo make install
# optionally run "make clean" to free up disk space
# by removing artifacts in the build tree.
$ sudo make clean
$ sudo ldconfig
次に、次のコマンドを実行して、デフォルトのポートでリッスンするサーバーとして 1 つのインスタンスを設定します。
$ sudo iperf3 -s -V
iperf3 を使用してネットワークテストを実行する
オンプレミスホストをクライアントとして設定し、インスタンスに対して次のテストを 1 つ以上実行します。
次のコマンドの出力には、TCP 接続ごとにウィンドウサイズが増加した 20 個のパラレルストリームの結果が表示されます。
sudo iperf3 -c <Private/public IP of instance> -P 20 -w 128K -V
sudo iperf3 -c <Private/public IP of instance> -P 20 -w 512K -V
sudo iperf3 -c <Private/public IP of instance> -P 20 -w 1024K -V
次のコマンドの出力は、UDP 接続あたりの帯域幅容量および 30 秒の時間枠の増加の結果を表示します。
iperf3 -c <Private/public IP of EC2 instance> -u -b 200M -t 30
iperf3 -c <Private/public IP of EC2 instance> -u -b 500M -t 30
iperf3 -c <Private/public IP of EC2 instance> -u -b 1G -t 30
EC2 インスタンスのプライベート IP アドレスとオンプレミスホストの間で iperf3 テストを双方向で実行し、VPN 接続のネットワークスループットをベンチマークします。その後、インスタンスの 2 つのパブリック IP アドレス間でこれらのテストを実行して、インターネット経由でスループットのベンチマークを行います。
注:-w オプションはウィンドウサイズを示します。
このサイズは、両方のインスタンスでカーネルパラメータ net.core.rmem_max および net.core.wmem_max より小さい値でなければなりません。
システムの構築によっては、rmem_max または wmem_max がデフォルトで 512 KB 未満になる場合があります。
デフォルトで 512 KB 未満の場合は、iperf テストの前に rmem_max および wmem_max を両インスタンスで増やします。
例:
現在の rmrm_max 値および wmem_max 値を確認します。
$ sudo sysctl net.core.rmem_max
net.core.rmem_max = 212992
$ sudo sysctl net.core.wmem_max
net.core.wmem_max = 212992
ウィンドウサイズを 2,048 KB に増やします。
$ sudo sysctl -w net.core.rmem_max=2097152
$ sudo sysctl -w net.core.wmem_max=2097152
関連情報
同じ VPC 内にある Amazon EC2 Linux インスタンス間のネットワークスループットをベンチマークするにはどうすればよいですか?