Sumit が AWS VPN 接続を介した
パフォーマンスの問題の
調査をお手伝いします

Sumit_SYD_0218

VPN 接続でパケット損失と高レイテンシーの問題が継続的または断続的に発生します。Amazon Virtual Private Cloud (Amazon VPC) に起因する問題でないことを確認するには、どのようなテストを実行すればよいですか?

パフォーマンステストを開始する前に、Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスを起動して設定します。

  1. インスタンスを起動する」のステップに従って、ネットワークパフォーマンステストを実行する同じ VPC 内の少なくとも 2 つの異なるアベイラビリティーゾーンで Linux インスタンスを起動します。
  2. 最適なネットワークパフォーマンスを得るには、Linux の拡張ネットワーキングをサポートしているインスタンスを確実に選択し、同じ VPC 内で起動します。
  3. 配置先が同一グループではないインスタンス間またはジャンボフレームをサポートしていないインスタンス間で、ネットワークテストを実行する場合は、「Linux インスタンス上の MTU の確認および設定」のステップに従います。
  4. Linux インスタンスへの接続」の手順を完了して、インスタンスにアクセスできることを確認します。

mtr を使用して ICMP または TCP パケット損失とレイテンシーを確認する

両方のインスタンスに mtr ネットワークツールをインストールして、ICMP または TCP パケット損失とレイテンシーを確認します。mtr は、継続的に更新される出力により、時間の経過に伴うネットワークパフォーマンスの分析を可能にします。このネットワーク診断ツール 1 つに tracerouteping の機能が一体化されています。

Amazon Linux に mtr をインストールします:  

sudo yum install mtr

Ubuntu に mtr をインストールします:

sudo apt-get install mtr

EC2 インスタンスのプライベートおよびパブリック IP アドレスとオンプレミスホストの間で双方向に以下のテストを実行します。TCP/IP ネットワークでは、方向が逆転するとノード間のパスが変わる場合があるため、両方向で mtr の結果を取得することが重要です。

最初の mtr テストは ICMP ベースですが、2 番目のテストの -T オプションでは TCP ベースの結果が返されます。TCP ベースの結果から、接続においてアプリケーションベースのパケット損失やレイテンシーがあるかどうかを判断できます。TCP オプションは、MTR バージョン 0.85 以上で使用できます。

プライベート IP のテスト:

mtr -n -c 200 <Private IP EC2 instance/on-premises host> --report
mtr -n -T -c 200 <Private IP EC2 instance/on-premises host> --report

パブリック IP のテスト:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report
mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

Linux の traceroute ユーティリティを使用してレイテンシーまたはルーティングの問題を確認する

Linux の traceroute ユーティリティは、クライアントノードから指定された送信先ノードへのパスを識別します。また、パス内の識別された各ルーターがリクエストに応答するまでの時間をミリ秒単位で識別します。このユーティリティは、各ホップが送信先に到達するまでの所要時間も計算して表示します。traceroute がインストールされていない場合は、インスタンスに必ずインストールしてください。

Amazon Linux に traceroute をインストールします。

sudo yum install traceroute

Ubuntu に traceroute をインストールします。

sudo apt-get install traceroute

EC2 インスタンスのプライベートおよびパブリック IP アドレスとオンプレミスホストの間で双方向に以下のテストを実行します。TCP/IP ネットワークでは、方向が逆転するとノード間のパスが変わる場合があるため、両方向で traceroute の結果を取得することが重要です。

プライベート IP のテスト:

sudo traceroute <private IP of EC2 instance/on-premises host>
sudo traceroute -T -p 80 <private IP of EC2 instance/on-premises host>

パブリック IP のテスト:

sudo traceroute <public IP of EC2 instance/on-premises host>
sudo traceroute -T -p 80 <public IP of EC2 instance/on-premises host>

注意: 引数 -T -p 80 -n は ポート 80 で TCP ベースのトレースを実行します。ポート 80 またはテストを実行するポートが両方向に開いていることを確認してください。

ほとんどのインターネットデバイスでは ICMP ベースのトレースリクエストに設定される優先度が低いため、ICMP の代わりに Linux の traceroute オプションで TCP ベースのトレースを指定することをお勧めします。いくつかのリクエストがタイムアウトしていることがよくあるため、送信先までの経路やルートの最終ホップでのパケット損失を監視します。複数のホップにわたって蓄積されたパケット損失も問題として示されることがあります。

注意: traceroute を使用してネットワーク接続のトラブルシューティングを行う場合は、クライアントからサーバーへ、さらにサーバーからクライアントへと、両方向でコマンドを実行するのが有効です。

hping3 を使用してレイテンシーまたは TCP パケット損失の問題を確認する

hping は、コマンドライン指向の TCP/IP パケットアセンブラー/アナライザーです。ICMP エコーリクエストに加えて TCP、UDP、および RAW-IP プロトコルをサポートし、トレースルートモードがあり、対象チャンネル間でファイルを送信するなど、多くの機能を備えています。

hping3 がインストールされていない場合は、Amazon Linux で次のコマンドを実行します。

sudo yum --enablerepo=epel install hping3

次に、以下のコマンドを実行します。

hping3 -S -c 50 -V <Public IP of EC2 instance or on-premises host>
hping3 -S -c 50 -V <Private IP of EC2 instance or on-premises host>

注意: デフォルトでは、hping3 からターゲットホストのポート 0 に TCP ヘッダーが winsize の 64 および tcp フラグなしで送信されます。

tcpdump を使用したパケットキャプチャのサンプル

問題の複製時に EC2 インスタンス (複数のアベイラビリティーゾーン内に存在) やオンプレミスホストでパケットキャプチャを実行すると、VPN 接続においてアプリケーションまたはネットワークレイヤーの問題があるかどうかを判断できます。パケットキャプチャを実行するには、インスタンスに tcpdump をインストールします。

Amazon Linux に tcpdump をインストールします。

sudo yum install tcpdump

Ubuntu に tcpdump をインストールします。

sudo apt-get install tcpdump

注意: 分析とトラブルシューティングのためにネットワークデバイスをチェックする手順については、該当するベンダーのドキュメントを参照してください。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 2 月 23 日

更新 : 2018 年 7 月 27 日