インターネットゲートウェイを介した VPC とオンプレミスホストの Amazon EC2 Linux インスタンス間のネットワークパフォーマンスのトラブルシューティングを行う方法を教えてください。

最終更新日: 2021 年 1 月 21 日

インターネットゲートウェイを介した Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスとオンプレミスホストの間でパケット損失やレイテンシ―が生じています。この問題をネットワークパフォーマンスで解決する方法を教えてください。

簡単な説明

パケット損失やレイテンシ―などのネットワークの問題を診断するために、まずネットワークを問題源から隔離することを試します。以下の手順は問題源がネットワークかアプリケーションかを判断するのを助けます。

トラブルシューティングを開始する前に、以下を確認してください:

  • ネットワークユーティリティーが両方のエンドポイント(EC2インスタンスおよびオンプレミスホスト)にインストールされていることを確認します。
  • 拡張ネットワークをサポートする EC2 インスタンスを使用し、ドライバーが最新のものであることを確認します。拡張ネットワーキングは低い CPU 使用率でより高い I/O を提供するので、パフォーマンステストを実行するときにインスタンスレベルの問題を回避するのに役立ちます。拡張ネットワークが有効でない場合は、インスタンスでの拡張ネットワーキングの有効化を参照してください。
  • Linux インスタンスに接続してインスタンスにアクセスし、EC2 インスタンスとオンプレミスホストの間のエンドツーエンドの接続があることを確認します。

解決方法

トラブルシューティングに役立つ次のツールをインストールして、ネットワークをテストします。

  • パケット損失、レイテンシー、MTR、 tcptraceroute、および tracepath などのネットワークメトリックスを収集する AWSSupport-SetupIPMonitoringFromVPC
  • ICMP または TCP パケット損失とレイテンシーの問題をチェックする MTR。
  • Traceroute を使用してレイテンシーまたはルーティングの問題を解決します。
  • エンドツーエンドTCPパケットロスおよびレイテンシーの問題を解決するHping3
  • パケットキャプチャーサンプルを分析するためのTcpdump。

ボトムアップアプローチを使用して、tracerouteまたはMTRレポートのホップをレビューします。例えば、最後のホップ/送信先でのロスを確認し、以下のホップをレビューします。最後のホップを通してパケット損失またはレイテンシーの問題が引き続き発生する場合は、ネットワークまたはルーティングの問題がある可能性があります。パケット損失/レイテンシーがパス内の 1 つのホップでのみ見られる場合は、そのノードのコントロールプレーンレート制限に問題がある可能性があります。レポートされた最後のホップがコマンドに含まれる送信先であることを確認してください。そうでない場合は、制限セキュリティーグループによる原因で起こった問題がある可能性があります。

AWSSupport-SetupIPMonitoringFromVPCを使用して性能をテストする

この組み込みツールはネットワークの問題を解決する必要のあるメトリックスの多くを収集します。詳細については、「Amazon VPC のネットワーク接続のデバッグツール」をご覧ください。

MTRを使用して性能をテストする

Linux MTR コマンドは最新の出力を継続して提供するので、ネットワークパフォーマンスの分析に役立ちます。このネットワーク診断ツール 1 つに traceroute と ping の機能が一体化されています。大部分のLinux配信は、すでにインストールされているtraceroute および MTRとセットになっています。しかし、それは配信ソフトウェアパッケージ責任者からもダウンロードできます。

MTRをインストールするためには、以下のコマンドを実行します。

Amazon Linux:

sudo yum install mtr

Ubuntu:

sudo apt-get install mtr

MTRを使用してネットワークの性能をテストするためには、このテストをEC2インスタンスのパブリックIPアドレスおよびオンプレミスホストとの間で相互方向に実行します。方向が逆になった場合は、TCP/IPネットワークのノード間のパスは変化します。よって、両方向のためにMTR結果を獲得することは重要です。ほとんどのインターネットデバイスでは ICMP ベースのトレースリクエストに設定される優先度が低いため、ICMP の代わりに TCPベース のトレースを使用できます。

パケットロスをレビューします。シングルホップのパケットロスは通常問題を示しません。このロスは「ICMP時間超過」のメッセージがデロップ表示される原因となる、コントロールプレーンポリシーの結果である可能性があります。送信先ホップまで持続するパケットロス、または複数のホップのパケットロスに気づいた場合は、このロスは問題である可能性があります。

注意: リクエスト時間切れが数回見られることは一般的です。

ICMPベースMTR:

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

TCPベースMTR:

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

引数 -T は TCP ベースの MTR を実行し、--report オプションは MTR をレポートモードにします。MTR は -c オプションで指定されたサイクル数実行します。統計を出力して終了します。

注意: MTR の一部のバージョンでは、TCP が使用された場合に最終ホップが間違った値をレポートするという既知の問題があります。

traceroute を使用したパフォーマンスのテスト

Linux traceroute ユーティリティはクライアントノードから送信先ノードへのパスを識別します。このユーティリティは、各ルーターがリクエストに応答するごとに1000分の1秒の時間で記録します。このユーティリティは、各ホップが送信先に到達するまでの所要時間も計算します。

tracerouteをインストールするためには、以下のコマンドを実行します。

Amazon Linux:

sudo yum install traceroute

Ubuntu:

sudo apt-get install traceroute

注意: MTR レポートを実行する場合、traceroute は必要ありません。MTR はレイテンシーおよびパケット損失の統計を送信先に提供します。

ポート 22 またはテストするポートが両方向に開いていることを確認してください。traceroute を使用してネットワーク接続のトラブルシューティングを行うには、コマンドをクライアントからサーバーに対して実行し、サーバーからクライアントに対して実行します。方向が逆になった場合は、TCP/IPネットワークのノード間のパスは変化します。ほとんどのインターネットデバイスでは ICMP ベースのトレースリクエストに設定される優先度が低いため、ICMP の代わりに TCPベース のトレースを使用します。

ICMPベースのtraceroute:

sudo traceroute <Public IP of EC2 instance/on-premises host>

TCPベースのtraceroute:

sudo traceroute -n -T -p 22 <Public IP of EC2 instance/on-premises host>

引数 -T -p 22 -n は ポート 22 で TCP ベースのトレースを実行します。

hping3 を使用したパフォーマンスのテスト

Hping3 は、TCP 接続のエンドツーエンドのパケット損失およびレイテンシーを測定するコマンドライン指向の TCP/IP パケットアセンブラおよびアナライザーです。ICMP エコーリクエストに加えて、hping3 は TCP、UDP、および RAW-IP プロトコルをサポートします。Hping3 には、対象のチャネル間でファイルを送信できる traceroute モードも含まれています。Hping3 はホストのスキャン、侵入テストの支援、侵入検知システムのテスト、およびホスト間のファイルの送信を行うことを目的に設計されています。

MTR および traceroute はホップごとのレイテンシーをキャプチャします。しかし、hping3はパケットロスに加え、TCP上のエンドツーエンドの最小/平均/最大レイテンシーの結果を収量します。hping3をインストールするためには、以下のコマンドを実行します。

Amazon Linux:

sudo yum --enablerepo=epel install hping3

Ubuntu:

sudo apt-get install hping3

以下のコマンドはポート0上で50 TCP SYNのパケットを送信します。デフォルトでは、hping3 からターゲットホストのポート 0 に TCP ヘッダーが winsize の 64 および TCP フラグなしで送信されます。

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

次のコマンドはポート 22 から 50 TCP SYN パケットを送信します。

hping3 -S -c 50 -V <Public IP of EC2 instance/on-premises host> -p 22

注意: ポート 22 またはテストするポートが開いていることを確認してください。

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

パケット損失/レイテンシーの問題を診断する際、EC2 インスタンスおよびオンプレミスホスト上で同時パケットキャプチャを行うのがベストプラクティスです。それを行うことで、ネットワークおよびアプリケーションレイヤーから問題を隔離するのに役立ちます。tcpdumpをインストールするためには、以下のコマンドを実行します。

Amazon Linux:

sudo yum install tcpdump

Ubuntu:

sudo apt-get install tcpdump

分析とトラブルシューティングのためにネットワークデバイスをチェックする手順については、該当するベンダーのドキュメントを参照してください。マルチホームの場合は、別のインターネットサービスプロバイダー (ISP) を使用してテストを実行して結果を比較します。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?