すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:MTU

最終更新日:Feb 21, 2024

ネットワーク接続の最大送信単位 (MTU) は、接続を介して送信できる最大パケットのサイズです。 MTUにはIPヘッダーとペイロードのサイズが含まれ、イーサネットヘッダーのサイズは含まれません。 接続のMTUが大きいほど、単一のパケットで渡すことができるデータが多くなります。 このトピックでは、ジャンボフレームと、Elastic Compute Service (ECS) インスタンスのネットワークインターフェイスのMTUを変更する方法について説明します。

ジャンボフレーム

ジャンボフレームは、1500バイトを超えるペイロードを有するイーサネット (登録商標) フレームであり、IEEE 802.3規格によって設定される制限である。 ジャンボフレームは、高いスループットと高いネットワークパフォーマンスを提供するために、パケットあたりのペイロードサイズと、パケットオーバーヘッドではないパケットの割合を増加させます。 Alibaba Cloudは、サイズが8,500バイトのジャンボフレームをサポートしており、8,500バイトのペイロードを持つイーサネットフレームを送信できます。

すべてのECSインスタンスは1,500 MTUをサポートしています。 次の第8世代インスタンスファミリーのインスタンスは、MTUおよび8,500 MTU 1,500購入サポートされています。 g8a、c8a、およびr8a. 詳細については、「インスタンスファミリーの概要」をご参照ください。

ネットワークパスのMTUとピアホストのMTUも、ジャンボフレームを使用できるかどうかを決定する要因です。 サイズがMTUを超えるパケットは、Alibaba Cloud転送コンポーネントによって断片化またはドロップされます。 ネットワークパスのMTUは、パス内の各ホップのMTUの最小値である。 詳細については、「ネットワークパスのMTUを超えるパケットの処理」をご参照ください。

重要 次のシナリオでジャンボフレームを使用すると、接続性またはパフォーマンスの問題が発生する可能性があります。
  • Server Load Balancer (SLB) インスタンスに関連付けられているECSインスタンスまたはホストにアクセスするためにUDPまたはICMP (Internet Control Messages Protocol) ジャンボフレームを使用すると、断片化されたパケットがSLBインスタンスによって期待どおりに転送されず、ドロップされる可能性があります。 これにより、ネットワーク接続の問題が発生します。 詳細については、このトピックの「クラウドネットワークサービスのMTU」セクションをご参照ください。
  • MTUミスマッチシナリオで通信を確立するためにUDPまたはICMPジャンボフレームが使用される場合、パケットが断片化され、ネットワークパフォーマンスが低下する可能性があります。 詳細については、このトピックの「ホスト間のネットワークパスのMTU」セクションおよび「クラウドネットワークサービスのMTU」セクションをご参照ください。

ジャンボフレームが有効になっているECSインスタンスにビジネスをデプロイする前に、インスタンスでビジネスをテストして、MTUの不一致が原因で接続性またはパフォーマンスの問題が発生していないか確認し、パケットサイズを管理してパフォーマンスの低下を軽減することを推奨します。

ジャンボフレームを有効または無効にする

次のいずれかの方法を使用して、ECSインスタンスのジャンボフレームを有効または無効にします。

  • 方法1: ECSインスタンスの作成時にジャンボフレームを有効または無効にします。 詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
  • 方法2: ECSインスタンスの作成後、インスタンスの詳細ページでジャンボフレームを有効または無効にします。
    1. [インスタンスの詳細] タブの [ネットワーク情報] セクションで、More > [ジャンボフレーム設定の変更] を選択します。 Modify Jumbo Frames Configurations
    2. [ジャンボフレーム設定の変更] ダイアログボックスで、ジャンボフレームを有効または無効にします。
  • 方法3: ModifyInstanceAttribute操作を呼び出して、ジャンボフレームを有効または無効にします。
方法2または方法3を使用してECSインスタンスのジャンボフレームを有効または無効にした後、設定を有効にするには、インスタンスのオペレーティングシステムに基づいて次の手順を実行する必要があります。
  1. インスタンスを再起動します。
  2. オプション: インスタンスにログインし、MTU設定を変更します。 この操作は、Windowsインスタンスのジャンボフレームを有効にする場合にのみ必要です。 詳細については、このトピックの「ECSインスタンスのネットワークインターフェイスのMTU値の変更」をご参照ください。
    説明
    • Linuxでは、Dynamic Host Configuration Protocol (DHCP) サーバーが自動的にMTUを取得します。 インスタンスのジャンボフレームを有効にした後にLinuxインスタンスを再起動すると、インスタンスで8,500 MTUが自動的に有効になり、1,500 MTUが自動的に無効になります。
    • Windowsインスタンスのジャンボフレームを無効にしてインスタンスを再起動すると、標準のMTU (1,500 MTU) が自動的に有効になり、有効になります。 MTU設定を変更するためにインスタンスにログインする必要はありません。

ホスト間のネットワークパスのMTU

デフォルトでは、Alibaba Cloudネットワーク上のパスは1,500 MTUをサポートしています。 ジャンボフレームをサポートしていないECSインスタンスの場合、仮想プライベートネットワーク (VPN) ゲートウェイなどの関連するネットワークデバイスのMTUのみを考慮してください。 詳細については、このトピックの「クラウドネットワークサービスのMTU」セクションをご参照ください。

ジャンボフレームをサポートするECSインスタンスをソースホストとして使用する場合、ターゲットホストでサポートされる最大MTUはシナリオによって異なります。 次の表に、最大MTUを示します。
宛先ホストサポートされる最大MTU
ジャンボフレームが有効になっており、同じVPCまたはピアリングVPCに存在するECSインスタンス8500
ジャンボフレームが無効で、同じVPCまたはピアリングVPCに存在するECSインスタンス1500
Cloud Enterprise Network (CEN) を使用して接続されているVPC内のECSインスタンス
Connect Expressを使用して接続されているオンプレミスデータセンターのホスト
elastic IPアドレスまたはpipを使用してアクセスできる外部ホスト
詳細については、「VPCピアリング接続の概要」および「VPC接続の管理」をご参照ください。
重要 パケットがネットワークパスのMTU制限を超える場合、Alibaba Cloud転送コンポーネントはパケットをフラグメント化するか、RFC標準に基づいてネゴシエーションを実行します。 これは、ネットワーク接続を確保するのに役立ちますが、ネットワーク通信パフォーマンスは確保しません。 1,500バイトの最大MTUをサポートするパスの場合、UDPまたはICMP通信にジャンボフレームを使用しないことを推奨します。 転送コンポーネントがネットワークパスでMTU制限を超えるパケットを処理する方法については、このトピックの「ネットワークパスのMTUを超えるパケットの処理」を参照してください。

クラウドネットワークサービスのためのMTU

UDPやICMPなどの非TCPプロトコルを介して特定のネットワークサービスにアクセスする場合は、ネットワークサービスのMTU制限に注意してください。 ほとんどのAlibaba Cloudサービスはジャンボフレームをサポートしていません。 次の表に、特定のAlibaba Cloudネットワークサービスでサポートされる最大MTUを示します。
ネットワークサービスサポートされる最大MTU説明
NAT Gateway1500なし。
SLB (Application Load Balancer (ALB) 、Network Load Balancer (NLB) 、およびClassic Load Balancer (CLB) を含む)ALBインスタンスとCLBインスタンスは、断片化されたパケットを転送できません。 ECSインスタンスから送信される各パケットのサイズ制限を、UDPまたはICMP通信用に1,500バイトに設定します。
OSS (Object Storage Service) やApsaraDB RDSなどのその他のAlibaba CloudサービストラフィックはSLBサービスを通過します。 SLBサービスの制限に注意してください。
Global Acceleratorなし。
Cloud Firewallなし。
PrivateLinkなし。
VPN Gateway1399詳細については、「MTUの設定」をご参照ください。
重要 パケットがクラウドサービスのMTU制限を超える場合、Alibaba cloud転送コンポーネントはパケットを断片化するか、RFC標準に基づいてネゴシエーションを実行します。 これは、ネットワーク接続を確保するのに役立ちますが、ネットワーク通信パフォーマンスは確保しません。 1,500バイトまたは1,399バイトの最大MTUをサポートするクラウドサービスの場合、UDPまたはICMP通信にジャンボフレームを使用しないことを推奨します。 転送コンポーネントがクラウドサービスのMTU制限を超えるパケットを処理する方法については、このトピックの「ネットワークパスのMTUを超えるパケットの処理」をご参照ください。

ネットワークパスのMTUを超えるパケットの処理

Alibaba Cloudの転送コンポーネントは、ネットワーク接続を確保するために、次のいずれかの機能を使用して、RFC標準に基づくネットワークパスのMTUを超えるパケットを処理します。

TCPトラフィックのTCP最大セグメントサイズ (MSS)

TCP MSSは、パケットの断片化を防止するために、TCPヘッダおよびIPヘッダを除くTCPセグメントのサイズを制限する。 送信元ホストと送信先ホストの間にTCP接続を確立するには、両方のホストがMSS値をアドバタイズします。 MSS値は、以下の式に基づいて計算される。MSS = MTU − (IPヘッダサイズ + TCPヘッダサイズ) 。 ネットワークパスに沿ってパケットを期待どおりに送受信できるようにするには、MSSとTCPヘッダー (20バイト) とIPヘッダー (IPv4ヘッダーあたり20バイトまたはIPv6ヘッダーあたり40バイト) がネットワークパスのMTU以下である必要があります。

MSSがネットワークパスのMTUに適していない場合、Alibaba Cloud転送コンポーネントは、MSSクランプを実行して、同期シーケンス番号 (SYN) パケットで送信元ホストによってアドバタイズされたMSS値、またはSYN-ACKパケットで送信先ホストによってアドバタイズされたMSS値を下げます。

非TCPトラフィック (UDPトラフィックまたはICMPトラフィック) のPMTUD

TCP以外のパケットの場合、Alibaba Cloudの転送コンポーネントは、TCP MSSの代わりにPath MTU Discovery (PMTUD) メカニズムを使用してMTUを検出し、ネゴシエートします。

パケットがネットワークパスのMTUを超えると、Alibaba Cloudの転送コンポーネントは、MTUに基づいてDon't fragmentフラグを含まないパケットをフラグメントし、Don't Fragmentフラグが1に設定されているパケットをドロップします。 パケットがドロップされた後、転送コンポーネントは次のシナリオに基づいて操作を実行します。
  • パケットのIPv4ヘッダ内でDon't-Fragmentフラグが1に設定されている場合、転送コンポーネントは、ネットワークパスのMTUを示すICMP Fragmentation-Neededパケットをパケットの送信側に送信します。
  • パケットのIPv6ヘッダ内でDon't-Fragmentフラグが1に設定されている場合、転送コンポーネントは、ネットワークパスのMTUを示すICMPv6 packet-Too-Longパケットをパケットの送信者に送信します。
重要
  • PMTUDはパケット損失を引き起こし、ネットワーク接続のみを保証します。 カーネル内のリソースとECSインスタンスの基盤となる転送コンポーネントは、PMTUパケットの構築と応答、および断片化されたパケットの処理に消費されます。 PMTUDはパフォーマンスに大きな影響を与えます。 パフォーマンスを向上させるために、ModifyInstanceAttribute操作を呼び出してECSインスタンスのジャンボフレームを無効にし、インスタンスを再起動して変更を有効にすることを推奨します。
  • ECSインスタンスがPMTUDに応答できるようにするには、インスタンスのセキュリティグループにICMPインバウンドルールが設定され、異なる転送コンポーネントからICMPパケットを受信するようにします。 また、インスタンスのオペレーティングシステムがPMTUDをサポートしていること、およびオペレーティングシステムに対してPMTU応答が有効になっていることを確認する必要があります。 たとえば、LinuxのPMTUレスポンスを有効にするには、/proc/sys/net/ipv4/ip_no_pmtu_discで必要なオプションを0に設定します。

ECSインスタンスのネットワークインターフェイスのMTU値の変更

Alibaba Cloudでは、VPCゲートウェイやトラフィックミラーリングなどの特定のシナリオまたはネットワークデバイスでは、ECSインスタンスから送信されるパケットのサイズに厳しい要件があります。 ネットワーク接続を確保したり、ユーザーエクスペリエンスを向上させるには、パケットサイズを減らす必要があります。 次の操作を実行して、上記のシナリオまたはネットワークデバイスのパケットサイズ要件を満たすようにECSインスタンスのネットワークインターフェイスのMTU値を変更できます。
警告 ECSインスタンスのネットワークインターフェイスのMTU値を変更するときは、指定されたMTU値がインスタンスレベルでMTU制限を超えないようにしてください。 指定されたMTU値がインスタンスレベルでMTU制限を超えると、インスタンスはネットワーク接続を失う可能性があります。 インスタンスレベルのMTUは、ジャンボフレームが有効になっている場合は8,500バイト、ジャンボフレームが無効になっている場合、またはインスタンスがジャンボフレームをサポートしていない場合は1,500バイトです。
  • Linuxでは、VPNゲートウェイが使用されるシナリオなどのトンネリングシナリオを除いて、DHCPサーバーは自動的にMTUを取得します。 この方法では、ネットワークインターフェイスのMTU値を変更する必要はありません。
  • Windowsでは、DHCPサーバーは自動的にMTUを取得しません。 Windowsインスタンスのジャンボフレームを有効または無効にする場合は、インスタンスのネットワークインターフェイスのMTU値を変更する操作を実行します。

次のセクションでは、異なるオペレーティングシステムを実行するECSインスタンスでネットワークインターフェイスのMTU値を1,399バイトに変更する方法の例を示します。

Windows

この例では、Windows Server 2019を実行するECSインスタンスが使用されています。 インスタンスのネットワークインターフェイスのMTU値を変更するには、次の手順を実行します。

  1. Windowsインスタンスに接続します。
    詳細については、「パスワードまたはキーを使用したWindowsインスタンスへの接続」をご参照ください。
  2. PowerShellを開始します。
  3. 次のコマンドを実行して、インスタンスのネットワークインターフェイスを表示します。
    Get-NetAdapter
    次の図は、ネットワークインターフェイスがEthernetという名前であることを示すコマンド出力のサンプルを示しています。 Network interfaces
  4. 次のコマンドを実行して、イーサネットネットワークインターフェイスのMTU値を表示します。
    Get-NetAdapterAdvancedProperty -Name "Ethernet"
    次の図は、EthernetネットワークインターフェイスのMTU値が1,514であることを示すコマンド出力のサンプルを示しています。 MTU of the network interface
    説明 Windowsでは、MTUの計算に使用されるメソッドはドライバーによって異なります。 ほとんどの場合、ドライバには、1,514バイトのデフォルトMTUを取得するために、MTU計算で14バイトのサイズのイーサネットヘッダーが含まれています。
  5. 次のコマンドを実行して、ネットワークインターフェイスのMTU値を変更します。
    Get-NetAdapterAdvancedProperty -Name <"ネットワークインターフェイス名"> -RegistryKeyword "* JumboPacket" -RegistryValue <新しいMTU値>
    たとえば、次のコマンドを実行して、イーサネットネットワークインターフェイスのMTU値を1,413に設定します。 この値には、イーサネットヘッダーの14バイトが含まれます。
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "* JumboPacket" -RegistryValue 1413
    ネットワークインターフェイスのMTU値を変更した後、Get-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "* JumboPacket" コマンドを実行して、新しいMTU値が有効かどうかを確認します。

    次の図は、イーサネットネットワークインターフェイスのMTU値が1,413に変更されたことを示すコマンド出力の例を示しています。

    New MTU value

Ubuntu

この例では、Ubuntu16.04を実行するECSインスタンスが使用されています。 インスタンスのネットワークインターフェイスのMTU値を変更するには、次の手順を実行します。

  1. インスタンスに接続します。
    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
  2. 次のコマンドを実行して、インスタンスのネットワークインターフェイスとネットワークインターフェイスのMTU値を表示します。
    ifconfig
    次の図は、eth0というネットワークインターフェイスのMTU値が1,500であることを示すコマンド出力のサンプルを示しています。 Network interfaces
  3. eth0ネットワークインターフェイスのMTU値を変更します。
    たとえば、次のコマンドを実行して、eth0ネットワークインターフェイスのMTU値を1,399に設定します
    。mtu=1399
    ifconfig eth0 mtu ${mtu}
    echo "/sbin/ifconfig eth0 mtu ${mtu}" > /etc/network/if-up.d/setmtu && chmod a + x /etc/network/if-up.d/setmtu 
    ネットワークインターフェイスのMTU値を変更した後、ifconfigコマンドを実行して、新しいMTU値が有効かどうかを確認します。

    次の図は、eth0ネットワークインターフェイスのMTU値が1,399に変更されたことを示すコマンド出力の例を示しています。

    New MTU Value

CentOS

この例では、CentOS 7.8を実行するECSインスタンスが使用されます。 インスタンスのネットワークインターフェイスのMTU値を変更するには、次の手順を実行します。

  1. インスタンスに接続します。
    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。
  2. 次のコマンドを実行して、インスタンスのネットワークインターフェイスとネットワークインターフェイスのMTU値を表示します。
    ifconfig
    次の図は、eth0というネットワークインターフェイスのMTU値が1,500であることを示すコマンド出力のサンプルを示しています。 Original MTU value
  3. eth0ネットワークインターフェイスのMTU値を変更します。
    たとえば、次のコマンドを実行して、eth0ネットワークインターフェイスのMTU値を1,399に設定します
    。mtu=1399
    echo "${mtu}" > /sys/class/net/eth0/mtu
    echo "echo \" "${mtu}"\" > /sys/class/net/eth0/mtu">> /etc/rc.d/rc.local && chmod + x /etc/rc.d/rc.local 
    ネットワークインターフェイスのMTU値を変更した後、ifconfigコマンドを実行して、新しいMTU値が有効かどうかを確認します。

    次の図は、eth0ネットワークインターフェイスのMTU値が1,399に変更されたことを示すコマンド出力の例を示しています。

    New MTU value

一般的な問題

  1. 問題の説明: UDPまたはICMPトラフィックにECSインスタンスでジャンボフレームを使用すると、インスタンスのパフォーマンスが大幅に低下します。

    解決策: パケットが断片化されているかどうかを確認し、ビジネス要件に基づいてインスタンスのジャンボフレームを無効にします。 詳細については、このトピックの「ジャンボフレームの有効化または無効化」をご参照ください。

  2. 問題の説明: ジャンボフレームが有効になっているECSインスタンスからUDPまたはICMPを介してクラウドサービス (OSSやAparaDB for RDSなど) にアクセスすると、サービスへのネットワーク接続を確立できません。

    原因: ECSインスタンスからのトラフィックは、パケットフラグメントを転送できないSLBインスタンスを通過します。 その結果、ネットワーク接続障害が発生する可能性がある。

    解決策: ECSインスタンスからクラウドサービスに送信されるパケットが断片化されないようにするには、各パケットのサイズ制限を1,500バイトに設定します。

  3. 問題の説明: ECSインスタンスはPMTUメッセージ (ICMPエラーパケット) を受信できません。

    原因: PMTUメッセージは、ECSインスタンスのセキュリティグループによってドロップされるか、抑制されます。

    解決策:
    1. インスタンスのセキュリティグループがICMPトラフィックを許可しているかどうかを確認します。 詳細については、「セキュリティグループルールの表示」をご参照ください。
    2. インスタンスのトラフィックレートがスロットル制限に達しているかどうかを確認します。