MTU を調整することで、フラグメンテーションを抑え、レイテンシーを低減し、ネットワークパス全体のスループットを向上させることができます。
MTU の分類
MTU の種類は、ネットワークレイヤーとユースケースによって異なります。
リンク層 MTU
データリンク層における最大データペイロードサイズです。Ethernet では、MTU は通常 1500 バイトです (イーサネットヘッダーを除く)。標準のイーサネットフレームは 1518 バイトです:宛先 MAC (6 バイト) + 送信元 MAC (6 バイト) + Type/Length (2 バイト) + データペイロード (1500 バイト) + フレームチェックシーケンス (4 バイト)。
IP MTU
ネットワーク層で処理できる最大パケットサイズです。IP ヘッダーとデータペイロードは含みますが、イーサネットフレームのヘッダーとトレーラーは含みません。Alibaba Cloud では、MTU は通常 IP MTU を指します。
最小の IP および TCP ヘッダーサイズ (オプションにより増える可能性があります) の場合、1500 バイトの IP MTU は次のとおりです:IP ヘッダー (20 バイト) + TCP ヘッダー (20 バイト) + データペイロード (1460 バイト)。
ジャンボフレーム MTU
ジャンボフレームは、標準のイーサネットフレームを 9 KB まで拡張します。ジャンボフレームにはレイヤー 2 の Ethernet ヘッダーと CRC フィールドが含まれますが、これらは IP MTU には含まれません。ジャンボフレームはパケット数を削減し、効率を向上させます。Alibaba Cloud は最大 8500 バイトのジャンボフレームをサポートしています。ジャンボフレームをご参照ください。
パス最大伝送単位 (PMTU)
PMTU は、フラグメンテーションなしで 2 つのノード間のパス全体を通過できる最大パケットサイズです。パスには、送信元から宛先までのすべてのデバイスとリンク (ルーター、vSwitch、通信リンク) が含まれます。
パス MTU 検出 (PMTUD) は、フラグメンテーションを回避するために、パス上の PMTU を動的に検出します。パス MTU 検出 (PMTUD)をご参照ください。
MTU サイズに影響する要因
MTU サイズは、複数の要因によって決まります。
ネットワークデバイス:ルーターや vSwitch の最大 MTU 値は、ハードウェアによって決まります。パス上で最小の MTU が、そのパス上のすべての通信を制限します。
ネットワークタイプ:ネットワークタイプによって MTU 要件は異なります。ワイヤレスネットワークでは、信号が不安定で大きなパケットが失われるリスクが高いため、より小さい MTU が使用されることがよくあります。
伝送媒体:ツイストペアケーブル、光ファイバー、無線媒体では、MTU 制限が異なる場合があります。
ネットワークプロトコル:プロトコルは独自の MTU を定義します。標準 Ethernet の MTU は 1500 バイトです。
アプリケーション要件:特定のアプリケーションでは非標準の MTU が必要になる場合があり、ネットワーク全体の MTU に影響します。
MTU がネットワークパフォーマンスに与える影響
MTU が不適切な場合、パフォーマンスに次の影響が出ます。
フラグメンテーションと再構成
パケットが、より小さい MTU のネットワーク境界を跨ぐと、より小さなフラグメントに分割されます。これらのフラグメントは宛先で再構成する必要があります。これにより、レイテンシーが増加し、効率が低下し、処理負荷が増えます。
伝送効率の低下
フラグメンテーションのオーバーヘッドにより、全体のスループットが低下します。フラグメントが 1 つ失われると、不要な TCP 再送が発生し、パフォーマンスがさらに低下する可能性があります。
ネットワーク輻輳
MTU が小さすぎるとフラグメントが過剰に生成され、輻輳が増加します。MTU を大きくするとパケット数が減り、輻輳が緩和され、スループットが向上します。
パス上のすべてのデバイスで MTU を統一し、いずれのリンク制限も超えない範囲で可能な限り大きく設定してください。これにより、フラグメンテーションを最小化し、効率を向上させます。ビデオ会議や大容量ファイル転送などの高帯域幅シナリオでは、MTU を調整することで伝送品質が向上します。
Elastic Compute Service (ECS) ネットワークインターフェイスの MTU の確認
すべての ECS インスタンスのデフォルト MTU は 1500 バイトです。ジャンボフレームを有効にしたインスタンスは 8500 バイトをサポートします。インスタンスに接続し、次のコマンドを実行して現在の NIC MTU を確認してください。
Windows インスタンスの MTU の確認
サンプル OS:Windows Server 2022。
サンプルインスタンスファミリー:ecs.g8i.large。
ECS インスタンスに接続します。
Workbench を使用して Windows インスタンスに接続するをご参照ください。
コマンドプロンプトまたは Windows PowerShell を開きます。
現在のネットワークインターフェイスの MTU を確認します。
netsh interface ipv4 show subinterfacesジャンボフレームを有効にする前
Ethernet という名前のプライマリ NIC と、Ethernet 2 という名前のセカンダリ Elastic Network Interface (ENI) の MTU は 1500 です。これはデフォルト値です。

ジャンボフレームを有効にした後
Ethernet という名前のプライマリ NIC と、Ethernet 2 という名前のセカンダリ ENI の MTU は 8500 です。

Linux インスタンスの MTU の確認
サンプル OS:Alibaba Cloud Linux 3.2。
サンプルインスタンスファミリー:ecs.g8i.large。
ECS インスタンスに接続します。
Workbench を使用して Linux インスタンスに接続するをご参照ください。
現在のネットワークインターフェイスの MTU を確認します。
ip aジャンボフレームを有効にする前
プライマリ NIC eth0 とセカンダリ ENI eth1 の MTU は 1500 です。これはデフォルト値です。

ジャンボフレームを有効にした後
プライマリ NIC eth0 とセカンダリ ENI eth1 の MTU は 8500 です。

ping コマンドを使用した PMTU の手動プローブ
ping コマンドを使用して PMTU を手動でプローブします。
このテストはネットワーク通信に影響する可能性があります。オフピーク時に実施してください。
テスト方法:Don't Fragment (DF) フラグを設定したパケットを送信します。パケットサイズを段階的に増やし、ICMP の "Fragmentation needed and DF set" エラーを受信するまで繰り返します。エラーが発生する直前のパケットサイズは、PMTU から IP ヘッダー (20 バイト) と ICMP ヘッダー (8 バイト) を差し引いた値に等しくなります。
テストコマンド:ネットワークリンクの MTU サイズをテストします。
ping -c 1 -M do -s [packet_size] [destination_address]パラメーター:
-c 1:パケットを 1 つ送信します。
-M do:Don't Fragment (DF) フラグを設定します。
-s [packet_size]:ICMP PDU サイズです。1472 などの一般的な値から開始します。
説明ping コマンドは、IP 上の ICMP を使用します。ICMP ヘッダーは 8 バイト、IP ヘッダーは 20 バイトです。そのため、-s 1472 では合計 IP パケットが 20 + 8 + 1472 = 1500 バイトになります。
テスト例:
両端のホストの MTU 情報:
FROM:172.17.0.127。ECS インスタンスでジャンボフレームが有効になっています (MTU = 8500 バイト)。ジャンボフレームを有効または無効にするをご参照ください。
TO:172.17.0.128。MTU は 1500 です。
テスト:パケット (IP ヘッダーと ICMP ヘッダーを除く) を 8472 バイトで送信します。
ping -c 1 -M do -s 8472 172.17.0.128結果:"Frag needed and DF set(mtu=1500)" という ICMP エラーが返されます。これは、パケットがパス MTU (1500 バイト) を超過していることを示します。DF フラグが設定されているため、転送デバイスはパケットをフラグメント化できず、パケットは破棄されます。

ネットワークインターフェイスの MTU の手動変更
VPN ゲートウェイやトラフィックミラーリングなどの一部のネットワークサービスでは、ECS インスタンスからのパケットをより小さくする必要があります。これらの要件を満たすために、ECS の NIC MTU を変更します。
MTU を変更する前に、MTU の変更がネットワークパフォーマンスに与える影響を理解してください。不適切な値を設定すると、フラグメンテーションが発生して効率が低下する可能性があります。
Linux の MTU は DHCP サーバーから自動的に取得されます。DHCP が有効になっており、トンネリングシナリオ (VPN ゲートウェイなど) でない場合、通常は NIC MTU を手動で変更する必要はありません。
ジャンボフレームなどのシナリオでは、MTU を手動で変更するのではなく、関連するベストプラクティスに従ってください。ジャンボフレームを有効または無効にするをご参照ください。
新しい MTU が、インスタンスでサポートされる最大 MTU を超えないようにしてください。最大値は、ジャンボフレームが有効な場合は 8500 バイト、ジャンボフレームが無効になっているか、サポートされていない場合は 1500 バイトです。
次の例では、ECS の NIC の MTU を 1399 バイトに変更します。
Windows インスタンス
サンプル OS:Windows Server 2022。
Windows インスタンスに接続します。
Workbench を使用して Windows インスタンスに接続するをご参照ください。
コマンドプロンプトまたは Windows PowerShell を開きます。
Ethernet NIC の MTU を確認します。
netsh interface ipv4 show subinterfaces応答には、Ethernet NIC の現在の MTU が 1500 と表示されます。

Ethernet インターフェイスの MTU を 1399 に永続的に設定します。
netsh interface ipv4 set subinterface "Ethernet" mtu=1399 store=persistent「Ok.」 は、コマンドが成功したことを示します。エラーが返された場合は、表示される内容に従って対処してください。

Ethernet NIC の MTU を確認します。変更が適用されていることがわかります。

Linux インスタンス
サンプル OS:Alibaba Cloud Linux 3.2。
ip コマンドを使用した MTU の一時変更
この操作は NIC MTU を一時的に変更します。ネットワークサービスまたはインスタンスを再起動すると、変更は元に戻ります。
Linux インスタンスに接続します。
Workbench を使用して Linux インスタンスに接続するをご参照ください。
NIC の現在の MTU を確認します。
ip aプライマリ NIC eth0 とセカンダリ ENI eth1 の MTU はいずれも 1500 です。

eth1 の MTU を 1399 に一時的に変更します。
sudo ip link set dev eth1 mtu 1399NIC 情報を確認します。eth1 の MTU が 1399 に変更されていることがわかります。

ネットワーク設定ファイルの編集による永続化
ネットワーク設定ファイルを編集して MTU を永続的に変更します。適用するには、ネットワークサービスまたはインスタンスを再起動してください。
ネットワーク設定ファイルは、Linux ディストリビューションとバージョンによって異なります。以下の例では、Red Hat Enterprise Linux (RHEL) および CentOS と互換性のある Alibaba Cloud Linux 3.2 イメージを使用します。
eth1 などのセカンダリ ENI をアタッチしており、その MTU を変更する必要がある場合は、ENI が正しく設定されていることを確認してください。セカンダリ ENI を設定するをご参照ください。
Linux インスタンスに接続します。
Workbench を使用して Linux インスタンスに接続するをご参照ください。
NIC の現在の MTU を確認します。
ip aプライマリ NIC eth0 とセカンダリ ENI eth1 の MTU は 1500 です。

ネットワークインターフェイスの設定ファイルを確認します。
ls /etc/sysconfig/network-scripts応答には、eth0 と eth1 の設定ファイルが表示されます。

cloud-init のネットワーク設定機能を無効にします。
sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg次の行を追加します。
network: {config: disabled}eth1 のネットワーク設定ファイルを編集し、MTU 設定を追加します。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth1
ネットワークサービスを再起動して設定を適用します。
sudo systemctl restart NetworkManagerネットワークインターフェイス情報を確認します。eth1 の MTU が 1399 に変更されていることがわかります。

実運用における MTU 制限
ECS 間通信における MTU 制限
ジャンボフレームをサポートする ECS インスタンスが送信元である場合、宛先への最大リンク MTU はシナリオによって異なります。
宛先ホスト | 許可される最大 MTU |
同一リージョンの同一 VPC、または同一リージョンのピアリングされた VPC 内で、ジャンボフレームが有効な ECS インスタンス | 8500 |
同一リージョンの同一 VPC、または同一リージョンのピアリングされた VPC 内で、ジャンボフレームが有効になっていない ECS インスタンス | 1500 |
CEN 経由で接続された VPC 内の任意の ECS インスタンス | |
Express Connect 経由で接続されたオンプレミスデータセンター内のホスト | |
EIP またはパブリック IP アドレス経由でアクセスされる外部ホスト |
VPC ピアリング接続および VPC 接続をご参照ください。
Alibaba Cloud ネットワークサービスの MTU 制限
ネットワークサービスの MTU 制限に注意してください。
Alibaba Cloud ネットワーク内では、リンクのデフォルト MTU は 1500 バイトです。ジャンボフレームをサポートしない ECS インスタンスと通信する場合は、VPN ゲートウェイなどのネットワークコンポーネントの MTU 制限に注意してください。
非 TCP プロトコル (UDP や ICMP など) を使用してネットワークサービスにアクセスする場合は、それらのサービスの MTU 制限に注意してください。
ほとんどの Alibaba Cloud サービスはジャンボフレームをサポートしていません。次の表に、一部のネットワークサービスの MTU 制限を示します。
ネットワーク製品 | サポートされる最大 MTU | 説明 |
NAT ゲートウェイ | 1500 | なし |
Server Load Balancer (ALB、NLB、CLB) | ALB と CLB はフラグメント化されたパケットを転送しません。UDP または ICMP を使用する場合、送信元の ECS インスタンスからのパケットは 1500 バイトを超えないようにする必要があります。 | |
Alibaba Cloud サービス (OSS や RDS など) | トラフィックは Server Load Balancer 製品を経由します。これらの制限に注意してください。 | |
Global Accelerator | なし | |
Cloud Firewall | なし | |
PrivateLink | なし | |
VPN ゲートウェイ | 1399 | IPsec-VPN 接続の MTU 設定をご参照ください。 |
MTU 設定のベストプラクティス
フラグメンテーションを抑え、レイテンシーを低減し、スループットを向上させるには、次のベストプラクティスに従ってください。
適切な MTU の決定:
Ethernet のデフォルト MTU は 1500 バイトです。MTU の分類をご参照ください。
ping コマンドを使用して PMTU をプローブします。ping コマンドを使用した PMTU の手動プローブをご参照ください。
PMTUD の有効化と適応:OS とネットワークデバイスで PMTUD を有効にし、パス MTU を動的に検出できるようにします。アプリケーションは ICMP メッセージに応じてパケットサイズを縮小し、フラグメンテーションを回避します。PMTUD の仕組みをご参照ください。
ネットワークデバイスの制限の考慮:フラグメンテーションやパケットドロップを防ぐために、ルーター、vSwitch などのネットワークデバイスの MTU を OS の MTU と一致させてください。
特定アプリケーションへの適応:VoIP やビデオ会議などのリアルタイムアプリケーションでは、レイテンシーを低減するために MTU を小さくした方がよい場合があります。
ネットワークパフォーマンスの定期的な監視:スループット、レイテンシー、アプリケーションパフォーマンスを追跡し、ネットワーク状況の変化に応じて MTU を調整してください。

