EC2 インスタンスのネットワークの最大送信単位 (MTU) - Amazon Elastic Compute Cloud

EC2 インスタンスのネットワークの最大送信単位 (MTU)

ネットワーク接続の最大送信単位 (MTU) とは、接続を介して渡すことができる最大許容パケットサイズ (バイト単位) です。接続の MTU が大きいほど、より多くのデータを単一のパケットで渡すことができます。イーサネットパケットは、フレーム (送信している実際のデータ) とそれを囲むネットワークオーバーヘッド情報で構成されています。

イーサネットフレームの形式はさまざまで、最も一般的な形式は、標準イーサネット v2 フレーム形式です。これはインターネットのほとんどでサポートされている最大のイーサネットパケットサイズである 1500 MTU をサポートします。インスタンスでサポートされている最大 MTU は、インスタンスタイプによって異なります。すべての Amazon EC2 インスタンスタイプで 1500 MTU がサポートされており、現在の多くのインスタンスサイズで 9001 MTU またはジャンボフレームがサポートされています。

インスタンスが Wavelength Zone で実行されている場合、MTU の最大値は 1300 です。

Windows インスタンスのネットワーク MTU 情報を表示するには、Windows インスタンスの Amazon EC2 ユーザーガイド ガイド:「EC2 インスタンスのネットワークの最大送信単位 (MTU)」でこのページに切り替えます。

ジャンボフレーム (9001 MTU)

ジャンボフレームでは、パケットあたりのペイロードサイズを拡張し、パケットオーバーヘッド以外のパケットの割合を高めることによって、1500 バイトを超えるデータを送信できます。同じ量の使用可能なデータを少ないパケットで送信することができます。ただし、特定の AWS リージョン (EC2-Classic)、1 つの VPC、または VPC ピア接続の外側では、最大パスが 1500 MTU になることがあります。VPN 接続およびインターネットゲートウェイを介して送信されるトラフィックは 1500 MTU に制限されます。パケットが 1500 バイト以上ある場合は、フラグメント化されます。または、Don't Fragment フラグが IP ヘッダーに設定されている場合は削除されます。

ジャンボフレームを、インターネットバウンドトラフィックや VPC を出るトラフィックに使用する場合には慎重に行ってください。パケットは中間システムによってフラグメント化されるため、このトラフィックの速度が低下します。VPC 外に向かうトラフィックの速度を低下させずに VPC 内のジャンボ フレームを使用するには、ルートごとに MTU サイズを設定するか、または MTU サイズやルートの異なる複数の Elastic ネットワークインターフェイスを使用します。

クラスタープレイスメントグループ内にコロケーションされたインスタンスでは、考えられる最大のネットワークスループットの実現するうえでジャンボフレームが役立ちます。この場合は、ジャンボフレームを使用することが推奨されています。詳細については、「プレイスメントグループ」を参照してください。

AWS Direct Connect を経由した VPC とオンプレミスのネットワーク間のトラフィックにはジャンボフレームを使用できます。詳細や、ジャンボフレーム対応を確認する方法については、『AWS Direct Connect ユーザーガイド』の「ネットワーク MTU 設定」を参照してください。

すべての現行世代のインスタンスは、ジャンボフレームをサポートしています。以下の前世代のインスタンスは、ジャンボフレームとして C3、G2、I2、M3、ぉよび R3 をサポートしています。

トランジットゲートウェイでサポートされる MTU サイズの詳細については、Amazon VPC トランジットゲートウェイの「MTU」を参照してください。

パス MTU 検出

パス MTU 検出 (PMTUD) は、ネットワークパスの最大送信単位 (MTU) を決定するために使用します。パス MTU は、送信側ホストと受信側ホストの間の最大パケットサイズです。ホストが受信側ホストの MTU よりも大きなパケット、またはデバイスの MTU よりも大きなパケットをパスに沿って送信する場合、受信側ホストまたはデバイスは ICMP メッセージ Destination Unreachable: Fragmentation Needed and Don't Fragment was Set (タイプ 3、コード 4) を返します。これによって、パケットが送信できるようになるまで MTU を調整するように元のホストに指示されます。

デフォルトでは、セキュリティグループはインバウンド ICMP トラフィックを許可しません。ただし、セキュリティグループはステートフルであるため、アウトバウンドのリクエストに対する ICMP レスポンスはセキュリティグループのルールに関係なく受信できます。そのため、インスタンスが ICMP メッセージのレスポンスを受信できるように ICMP のインバウンドルールを明示的に追加する必要はありません。ネットワーク ACL での ICMP ルールの設定の詳細については、Amazon VPC ユーザーガイドの「 パス MTU 検出」を参照してください。

重要

パス MTU 検出は、ジャンボフレームが一部のルーターによって破棄されないことを保証するものではありません。VPC のインターネットゲートウェイでは、最大 1500 バイトのパケットだけが転送されます。インターネットトラフィックでは、MTU が 1500 のパケットが推奨されています。

2 つのホスト間のパス MTU の確認

tracepath コマンドを使用して 2 つのホスト間のパス MTU を確認できます。このコマンドは、Amazon Linux を含む、多くの Linux ディストリビューションでデフォルトで提供されている iputils パッケージの一部です

tracepath を使用してパス MTU を確認するには

次のコマンドを使用して、EC2 インスタンスと別のホスト間のパス MTU を確認します。宛先として DNS 名または IP アドレスを使用できます。宛先が別の EC2 インスタンスの場合、セキュリティグループによりインバウンド UDP トラフィックが許可されていることを確認します。次の例では、EC2 インスタンスと amazon.com の間のパス MTU を確認します。

[ec2-user ~]$ tracepath amazon.com 1?: [LOCALHOST] pmtu 9001 1: ip-172-31-16-1.us-west-1.compute.internal (172.31.16.1) 0.187ms pmtu 1500 1: no reply 2: no reply 3: no reply 4: 100.64.16.241 (100.64.16.241) 0.574ms 5: 72.21.222.221 (72.21.222.221) 84.447ms asymm 21 6: 205.251.229.97 (205.251.229.97) 79.970ms asymm 19 7: 72.21.222.194 (72.21.222.194) 96.546ms asymm 16 8: 72.21.222.239 (72.21.222.239) 79.244ms asymm 15 9: 205.251.225.73 (205.251.225.73) 91.867ms asymm 16 ... 31: no reply Too many hops: pmtu 1500 Resume: pmtu 1500

この例では、パス MTU は 1500 です。

Linux インスタンスの MTU の確認および設定

一部のインスタンスでは、ジャンボフレームを使用し、それ以外のドライバには標準フレームサイズを使用するように設定されています。VPC 内のネットワークトラフィックにジャンボフレームを使用したり、インターネットトラフィックに標準フレームを使用したりしたい場合があります。いずれにしても、予想したとおりにインスタンスが動作することを確認することをお勧めします。このセクションの手順に従って、ネットワークインターフェイスの MTU 設定を確認し、必要に応じてそれらを変更することができます。

Linux インスタンス上の MTU 設定を確認するには

以下の ip コマンドを使用して、現在の MTU 値を確認できます。出力例では、mtu 9001 が、このインスタンスにジャンボフレームが使用されていると示していることに注意してください。

[ec2-user ~]$ ip link show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 02:90:c0:b7:9e:d1 brd ff:ff:ff:ff:ff:ff

Linux インスタンス上の MTU 値を設定するには

  1. MTU 値は、ip コマンドを使用して設定できます。次のコマンドで、目的の MTU 値を 1500 に設定できますが、代わりに 9001 を使用します。

    [ec2-user ~]$ sudo ip link set dev eth0 mtu 1500
  2. (オプション) 再起動後もネットワーク MTU 設定を維持するには、オペレーティングシステムのタイプに基づいて、次の設定ファイルを変更します。

    • Amazon Linux 2 の場合、次の行を /etc/sysconfig/network-scripts/ifcfg-eth0 ファイルに追加します。

      MTU=1500

      次の行を /etc/dhcp/dhclient.conf ファイルに追加します。

      request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-search, domain-name-servers, host-name, nis-domain, nis-servers, ntp-servers;
    • Amazon Linux の場合は、以下の行を /etc/dhcp/dhclient-eth0.conf ファイルに追加します。

      interface "eth0" { supersede interface-mtu 1500; }
    • その他の Linux ディストリビューションの場合は、特定のドキュメントを参照してください。

  3. (オプション) インスタンスを再起動し、MTU 設定が正しいことを確認します。

トラブルシューティング

ジャンボフレームを使用したときに EC2 インスタンスと Amazon Redshift クラスター間の接続に問題が発生する場合は、『Amazon Redshift Cluster Management Guide』の「クエリがハングしたようになる」を参照してください。