AWS 仮想プライベートネットワーク (AWS VPN) 接続で、パケットロスが常に、または断続的に発生し、レイテンシーが高くなるという問題が発生します。Amazon Virtual Private Cloud (Amazon VPC) 内で問題が発生していないことを確認するために実行するテストを知りたい。
簡単な説明
パケット損失の原因は、AWS VPN インターネットトラフィックがオンプレミスネットワークと Amazon VPC の間を移動するにつれて異なる場合があります。パケットロスの原因を突き止めて確認するのがベストプラクティスです。
解決策
ネットワークの制限に達したかどうかを判断するには、ソースホストとターゲットホストにリソース使用率の問題がないかどうかを確認します。リソース使用率の問題は、CPUUtilization, NetworkIn と NetworkOut, または NetworkPacketsIn と NetworkPacketsOut などの値で確認できます。
MTR を使用して ICMP または TCP のパケット損失と遅延をチェックする
MTR は継続的に更新される出力を提供するため、ネットワークのパフォーマンスを経時的に分析できます。traceroute と ping の機能を単一のネットワーク診断ツールに統合しています。ICMP または TCP のパケット損失とレイテンシーを確認するには、VPC 内の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに MTR ネットワークツールをインストールします。
Amazon Linux:
sudo yum install mtr
Ubuntu:
sudo apt-get install mtr
Windows:
WinMTR をインストールするには、SourceForge のウェブサイトを参照してください。
**注:**Windows オペレーティングシステム (OS) の場合、WinMTR は TCP ベースの MTR をサポートしていません。
EC2 インスタンスとオンプレミスホストのプライベート IP アドレスとパブリック IP アドレスの間で次のテストを実行します。TCP/IP ネットワーク上のノード間のパスは、方向が逆になると変わる可能性があるため、MTR の結果は両方向から取得してください。
テストを実行する前に、次の構成を確認してください。
- セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) ルールが送信元インスタンスからの ICMP トラフィックを許可していることを確認してください。
- 宛先インスタンスでテストポートが開いていることを確認します。セキュリティグループとネットワーク ACL ルールが、プロトコルとポートで送信元からのトラフィックを許可していることを確認します。
TCP ベースの結果によって、接続にアプリケーションベースのパケット損失または遅延があるかどうかが決まります。MTR バージョン 0.85 以降には TCP オプションがあります。
プライベート IP アドレス EC2 インスタンスオンプレミスホストレポート:
mtr -n -c 200
プライベート IP アドレス EC2 インスタンスオンプレミスホストレポート:
mtr -n -T -c 200 -P 443 -m 60
パブリック IP アドレス EC2 インスタンスオンプレミスホストレポート:
mtr -n -c 200
パブリック IP アドレス EC2 インスタンスオンプレミスホストレポート:
mtr -n -T -c 200 -P 443 -m 60
traceroute を使用してレイテンシーまたはルーティングの問題を特定する
Linux traceroute ユーティリティは、クライアントノードから宛先ノードまでのパスを識別します。このユーティリティは、各ルータが要求に応答するまでの時間をミリ秒単位で記録します。traceroute ユーティリティは、各ホップが宛先に到達するまでにかかる時間も計算します。
いくつかのタイムアウトリクエストはよくあるので、宛先へのパケットロス、またはルートの最後のホップでのパケットロスをチェックしてください。数ホップにわたるパケット損失は、問題を示している可能性があります。
**注:**クライアントからサーバーに traceroute コマンドを実行するのがベストプラクティスです。次に、サーバーからクライアントにコマンドを実行し直します。
次のコマンドを実行して traceroute をインストールします。
Amazon Linux:
sudo yum install traceroute
Ubuntu:
sudo apt-get install traceroute
EC2 インスタンスとオンプレミスのプライベート IP アドレスをテストするには、次のコマンドを実行します。
Amazon Linux:
sudo traceroutesudo traceroute -T -p 80
Windows:
tracerttracetcp
**注:**これらのコマンドは、ポート 80 で TCP ベースのトレースを実行します。ポート 80 またはテストするポートのいずれかが両方向で開いていることを確認します。
Linux を使用している場合は、traceroute オプションを使用して ICMP の代わりに TCP ベースのトレースを指定します。これは、ほとんどのインターネットデバイスが ICMP ベースのトレース要求の優先順位を下げるためです。
hping3 を使用して、エンドツーエンドの TCP パケット損失と遅延の問題を特定します
die.netサイトの Hping3 は、TCP 接続でのエンドツーエンドのパケット損失と遅延を測定するコマンドライン TCP/IP パケットアセンブラおよびアナライザーです。
MTR と traceroute はホップごとのレイテンシーをキャプチャします。ただし、hping3 の結果には、TCP でのパケット損失と、エンドツーエンドの最小遅延、最大遅延、平均遅延が表示されます。hping3 をインストールするには、次のコマンドを実行します。
Amazon Linux:
sudo yum --enablerepo=epel install hping3
Ubuntu:
sudo apt-get 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 に winsize 64 で、tcp フラグをオンにせずに TCP ヘッダーを送信します。
tcpdump または Wireshark によるパケットキャプチャサンプル
問題を再現するときに、VPC 内のテスト EC2 インスタンスとオンプレミスホスト間で同時にパケットキャプチャを実行します。これは、VPN 接続にアプリケーション層またはネットワーク層の問題があるかどうかを判断するのに役立ちます。パケットキャプチャを実行するには、Linux インスタンスに tcpdump をインストールするか、Windows インスタンスに Wireshark をインストールします。
Amazon Linux の tcpdump:
sudo yum install tcpdump
Ubuntu に tcpdump をインストールします。
sudo apt-get install tcpdump
Windows OS 上の Wireshark:
Wireshark をインストールするには、Wireshark のウェブサイトを参照してください。次に、パケットキャプチャを行います。
ECN をオフにする
明示的な輻輳通知 (ECN) をオンにすると、Windows インスタンスに接続するときにパケット損失やパフォーマンスの問題が発生する可能性があります。パフォーマンスを向上させるには、ECN をオフにしてください。
ECN がオンになっているかどうかを確認するには、以下のコマンドを実行します。
netsh interface tcp show global
ECN 機能がオンになっている場合は、次のコマンドを実行してオフにします。
netsh interface tcp set global ecncapability=disabled
関連情報
VPC 内の EC2 Linux または Windows インスタンスと、インターネットゲートウェイ経由でのオンプレミスホスト間におけるネットワークパフォーマンスの問題をトラブルシューティングするにはどうすればよいですか?
Amazon が提供する DNS サーバーへの DNS クエリが VPC DNS スロットリングが原因で失敗しているかどうかを確認する方法を教えてください。