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

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

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

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

Wavelength Zone にあるインスタンスには、次のルールが適用されます。

  • 同じ Wavelength Zone 内の VPC で、あるインスタンスから別のインスタンスへ送られるトラフィックの MTU は 1300 です。

  • Wavelength Zone 内のキャリア IP を使用し、あるインスタンスから別のインスタンスへ送られるトラフィックの MTU は 1500 です。

  • Wavelength Zone とパブリック IP アドレスを使用するリージョン間で、あるインスタンスから別のインスタンスへ送られるトラフィックの MTU は 1500 です。

  • Wavelength Zone とプライベート IP アドレスを使用するリージョン間で、あるインスタンスから別のインスタンスへ送られるトラフィックの MTU は 1300 です。

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

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

ジャンボフレームでは、パケットあたりのペイロードサイズを拡張し、パケットオーバーヘッド以外のパケットの割合を高めることによって、1500 バイトを超えるデータを送信できます。同じ量の使用可能なデータを少ないパケットで送信することができます。ただし次の場合には、トラフィックの MTU は最大 1500 に制限されます。

  • インターネットゲートウェイ経由のトラフィック

  • リージョン間 VPC ピアリング接続経由のトラフィック

  • VPN 接続経由のトラフィック

  • EC2-Classic 用の特定の AWSリージョン外部にあるトラフィック

パケットが 1500 バイト以上ある場合は、フラグメント化されます。または、Don't Fragment フラグが IP ヘッダーに設定されている場合は削除されます。

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

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

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

すべての Amazon EC2 インスタンスタイプは 1500 MTU をサポートし、すべての現行世代のインスタンスタイプはジャンボフレームをサポートします。次の前世代のインスタンスタイプは、A1、C3、G2、I2、M3、および R3 のジャンボフレームをサポートしています。

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

ローカルゾーンでサポートされる MTU サイズの詳細については、「AWS Local Zones ユーザーガイド」の「考慮事項」を参照してください。

パス MTU 検出

2 つのデバイス間のパス MTU を判断するために、パス MTU 検出 (PMTUD) が使用されます。パス MTU は、送信側ホストと受信側ホスト間のパスでサポートされている最大のパケットサイズです。2 つのホスト間のネットワークで MTU サイズに違いがある場合、PMTUD は、受信側ホストが ICMP メッセージで送信側ホストに応答するのを可能にします。この ICMP メッセージは、送信側ホストがネットワークパスに沿って最低の MTU サイズを使用し、リクエストを再送信するように指示します。このネゴシエーションがないと、リクエストが大きすぎて受信側ホストが受け取れないため、パケットドロップが発生する可能性があります。

IPv4 の場合、ホストがパスに沿って送信するパケットが、受信側ホストの MTU、あるいはデバイスの MTU よりも大きな場合、受信側ホストまたはデバイスはそのパケットをドロップし、次のような ICMP メッセージ Destination Unreachable: Fragmentation Needed and Don't Fragment was Set (タイプ 3、コード 4) を返します。このメッセージは送信側ホストに対し、ペイロードを複数の小さなパケットに分割し再送信することを指示します。

IPv6 プロトコルは、ネットワークのフラグメンテーションをサポートしていません。ホストがパスに沿って送信するパケットが、受信側ホストの MTU、あるいはデバイスの MTU よりも大きな場合、受信側ホストまたはデバイスはそのパケットをドロップし、次のような ICMP メッセージ ICMPv6 Packet Too Big (PTB) (タイプ 2) を返します。このメッセージは送信側ホストに対し、ペイロードを複数の小さなパケットに分割し再送信することを指示します。

NAT ゲートウェイやロードバランサーなどの一部のコンポーネントを介して行われる接続は、自動追跡されます。つまり、セキュリティグループの追跡は、アウトバウンド接続を試みると自動的に有効になります。接続が自動追跡されるか、セキュリティグループのルールでインバウンド ICMP トラフィックが許可されている場合は、PMTUD 応答を受信できます。

サブネットへの ICMP トラフィックを拒否するネットワークアクセスコントロールリストのエントリがある場合など、セキュリティグループレベルでトラフィックが許可されている場合でも、ICMP トラフィックはブロックされる可能性があることに注意してください。

重要

パス 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 管理ガイド」の「クエリがハングしたようになる」を参照してください。