Ishita がインスタンスおよび
オンプレミスホスト間の
問題解決のお手伝いをします

私はAmazon Elastic Compute Cloud (Amazon EC2) Linux インスタンス およびインターネットゲートウェイ上のオンプレミスホスト間のパケットロスまたは待機時間の問題に着目しています。これらの問題をネットワークの性能によりどのように解決することができますか?

パケットロスまたは待機時間のようなネットワーク問題を診断するために、まずネットワークを問題源から隔離することを試します。以下の手順は問題源がネットワークかアプリケーションかを判断するのを助けます。

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

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

以下のツールをインストールして、問題解決を助け、ネットワークをテストします。

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

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

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を行い、--レポートオプションは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 -T -p 22 –n <Public IP of EC2 instance/on-premises host>

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

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

Hping3はTCP接続上でエンドツーエンドパケットロスおよびレイテンシーを測定する、コマンドライン指向のTCP/IPパケットアセンブラおよびアナライザーです。ICMP エコーリクエストに加えて、hping3は TCP、UDP、および RAW-IP プロトコルをサポートします。hpingはトレースルートモードがあり、対象チャンネル間でファイルを送信することができます。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)を使用してこれらのテストを行い、結果を比較します。


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

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

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

公開日: 2017 年 10 月 26 日

更新日: 2019 年 02 月 14 日