ネットワークトラブルの調査をしていると、通信はできているのに「なぜか遅い」「パケットロスが発生する」というケースに遭遇することがあります。

回線帯域にも余裕があり、CPU使用率も問題ない。
それでも通信品質が悪い場合、原因として疑われるのがMTUです。

MTUの設定が適切でない場合、パケットのフラグメントが発生し、通信効率が大きく低下します。

実際の現場でも、MTU設定が原因でIPsecトンネルの通信が遅くなるケースは珍しくありません。

この記事では、MTUの基本と、なぜ通信遅延の原因になるのかを解説します。

MTUとは

MTU(Maximum Transmission Unit)は、
一度に送信できるパケットサイズの最大値を指します。

簡単に言うと

「ネットワークで一度に送れるデータのサイズ」

です。

一般的なEthernetでは、MTUは次のサイズになっています。

1500 bytes

つまり、1500バイトより大きなデータを送信する場合、パケットは分割されます。

この分割を「フラグメント」と呼びます。

フラグメントとは

MTUより大きなパケットを送信すると、
ルータや機器がパケットを分割します。

例えば

送信データ
2000 bytes

MTU
1500 bytes

この場合、次のように分割されます。

1500 bytes
500 bytes

この処理がフラグメントです。

フラグメントが発生すると

・CPU処理が増える
・再構築処理が必要
・パケットロスが発生しやすい

などの問題が発生します。

MTUが原因で通信が遅くなる理由

MTUが適切でないと通信効率が大きく低下します。

主な理由は次の3つです。

フラグメント処理が増える

ルータがパケットを分割する処理はCPUを使用します。

通信量が多い環境では、この処理がボトルネックになることがあります。

特にVPNやトンネル通信では発生しやすいです。

再送が発生する

フラグメントされたパケットは、1つでも欠けると再送が発生します。

そのためパケットロスが発生しやすくなります。

結果として通信速度が低下します。

IPsecやGREトンネルで発生しやすい

トンネル通信ではヘッダが追加されるため、実際に送信できるデータサイズが小さくなります。

通常Ethernet
MTU 1500

IPsecトンネル
MTU 1400前後

もし1500のパケットをそのまま送ると、トンネル内でフラグメントが発生します。

MTUの確認方法

Windowsでは次のコマンドでMTUを確認できます。

netsh interface ipv4 show subinterfaces

Linuxでは

ip link

Cisco機器では

show interface

で確認できます。

出力例

MTU 1500 bytes

MTU問題の調査方法

MTU問題はpingコマンドで調査できます。

Windowsの場合

ping -f -l 1472 8.8.8.8

1472という値は

1500 – 28

です。

28バイトはIPヘッダとICMPヘッダのサイズになります。

もしMTUが小さい場合

Packet needs to be fragmented

というメッセージが表示されます。

この方法で通信経路のMTUを確認できます。

MTU問題が発生しやすいケース

MTU問題は次の環境で発生しやすいです。

・IPsec VPN
・GREトンネル
・PPPoE回線
・クラウド接続

PPPoE回線ではMTUは

1492

になることが多いです。

この場合1500のパケットはフラグメントされます。

MTU問題の対策

MTU問題の対策は主に次の2つです。

MTUを調整する

トンネルインターフェースのMTUを調整します。

MTU
1400

この設定でフラグメントを防ぐことができます。

MSSを調整する

TCP通信ではMSS調整を行う方法もあります。

Ciscoルータ例

ip tcp adjust-mss 1360

この設定によりTCPパケットサイズを制御できます。

MTU問題は意外と見落とされる

ネットワークトラブルの調査では

・ルーティング
・VLAN
・ACL

などに目が行きがちですが、MTUが原因のケースも多く存在します。

特にVPN環境ではMTU問題が通信品質に大きく影響します。

通信が遅い、パケットロスが発生する場合は、MTU設定も確認することが重要です。