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 です。

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

  • Outposts のインスタンスからリージョンのインスタンスへ送られるトラフィックの MTU は 1300 です。

Linux インスタンスのネットワーク MTU 情報を表示するには、Linux インスタンス用 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、I2、M3、R3 のジャンボフレームをサポートしています。

サポート対象の MTU サイズの詳細については、次を参照してください。

  • NAT ゲートウェイについては、「Amazon VPC ユーザーガイド」の「NAT ゲートウェイの基本」を参照してください。

  • Transit Gateway の詳細については、「Amazon VPC Transit Gateway ユーザーガイド」の「MTU」を参照してください。

  • ローカルゾーンについては、「AWS ローカルゾーンユーザーガイド」の「考慮事項」を参照してください。

パス 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 の確認

mturoute.exe コマンドを使用して 2 つのホスト間のパス MTU を確認できます。このコマンドは、http://www.elifulkerson.com/projects/mturoute.php からダウンロードしてインストールできます

mturoute.exe を使用してパス MTU を確認するには
  1. http://www.elifulkerson.com/projects/mturoute.php から mturoute.exe をダウンロードします。

  2. コマンドプロンプトウィンドウを開いて、mturoute.exe をダウンロードしたディレクトリに移動します。

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

    .\mturoute.exe www.elifulkerson.com * ICMP Fragmentation is not permitted. * * Speed optimization is enabled. * * Maximum payload is 10000 bytes. * + ICMP payload of 1472 bytes succeeded. - ICMP payload of 1473 bytes is too big. Path MTU: 1500 bytes.

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

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

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

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

ENA ドライバー

ドライバーバージョン 1.5 以前の場合

デバイスマネージャまたは Set-NetAdapterAdvancedProperty コマンドを使用して、MTU 設定を変更できます。

Get-NetAdapterAdvancedProperty コマンドを使用して現在の MTU 設定を取得するには、次のコマンドを使用します。インターフェイス名 MTU のエントリを確認します。値 9001 は、ジャンボフレームが有効であることを示します。ジャンボフレームはデフォルトで無効化されています。

Get-NetAdapterAdvancedProperty -Name "Ethernet"

次のようにジャンボフレームを有効にします。

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 9001

次のようにジャンボフレームを無効にします。

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 1500

ドライバーバージョン 2.1.0 以降の場合

デバイスマネージャまたは Set-NetAdapterAdvancedProperty コマンドを使用して、MTU 設定を変更できます。

Get-NetAdapterAdvancedProperty コマンドを使用して現在の MTU 設定を取得するには、次のコマンドを使用します。インターフェイス名 *JumboPacket のエントリを確認します。値 9015 は、ジャンボフレームが有効であることを示します。ジャンボフレームはデフォルトで無効化されています。

Get-NetAdapterAdvancedProperty を実行するか、ワイルドカード (アスタリスク) を使用して、対応するすべてのイーサネット名を検出します。

Get-NetAdapterAdvancedProperty -Name "Ethernet*"

次のコマンドを実行し、クエリを実行するイーサネット名を含めます。

Get-NetAdapterAdvancedProperty -Name "Ethernet"

次のようにジャンボフレームを有効にします。

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9015

次のようにジャンボフレームを無効にします。

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514

インテル SRIOV 82599 ドライバー

デバイスマネージャまたは Set-NetAdapterAdvancedProperty コマンドを使用して、MTU 設定を変更できます。

Get-NetAdapterAdvancedProperty コマンドを使用して現在の MTU 設定を取得するには、次のコマンドを使用します。インターフェイス名 *JumboPacket のエントリを確認します。値 9014 は、ジャンボフレームが有効であることを示します。(MTU のサイズには、ヘッダーとペイロードが含まれる点に注意してください)。ジャンボフレームはデフォルトで無効化されています。

Get-NetAdapterAdvancedProperty -Name "Ethernet"

次のようにジャンボフレームを有効にします。

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9014

次のようにジャンボフレームを無効にします。

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514

AWS PV ドライバー

デバイスマネージャーを使用して MTU 設定を変更することはできませんが、netsh コマンドを使用して変更することはできます。

次のコマンドを使用して、現在の MTU 設定を取得します。インターフェイスの名前は異なる場合があります。出力では、「Ethernet」、「Ethernet 2」、または 「Local Area Connection」 という名前のエントリを探してください。ジャンボフレームを有効または無効にするには、インターフェイス名が必要です。値 9001 は、ジャンボフレームが有効であることを示します。

netsh interface ipv4 show subinterface

次のようにジャンボフレームを有効にします。

netsh interface ipv4 set subinterface "Ethernet" mtu=9001

次のようにジャンボフレームを無効にします。

netsh interface ipv4 set subinterface "Ethernet" mtu=1500

トラブルシューティング

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