MTU

読み:えむてぃーゆー / 英語表記:Maximum Transmission Unit

1つの回線(データリンク)で、1回に送ることのできるデータの最大の大きさ。IPパケットの最大長にあたり、イーサネットでは標準で1,500オクテット。

イマシルちゃんの解説

宅配便には、「この大きさまでの箱なら1回で運べます」っていうサイズの上限があるよね。

MTUは、ネットワークの回線ごとに決まっている「箱の最大サイズ」なんだ。
イーサネットなら、だいたい千数百オクテットまで。
それより大きいパケットは、分割するか、最初から小さく作って送らないといけないんだよ!

より深い解説

定義

MTU(Maximum Transmission Unit:最大転送単位)は、データリンク層の1つのフレームで運べる、上位層のデータ(IPパケット)の最大長である。イーサネットのフレームでいえば、MACヘッダーとFCSを除いたデータ部(MACクライアントデータ)の最大長にあたる。

イーサネットのフレーム
| MACヘッダー(14) | IPヘッダー(20) | TCPヘッダー(20) | データ | FCS(4) |
                   └──────────── MTU(1,500)────────────┘

MTUには、IPヘッダーやTCPヘッダーは含まれるが、MACヘッダーとFCSは含まれない。

TCPで送れるデータの最大長

MTUが1,500オクテットで、IPv4とTCPのヘッダーにオプションがない場合、1つのセグメントに入れられるデータの最大長(MSS)は、次のようになる。

MSS = MTU − IPヘッダー − TCPヘッダー
    = 1,500 − 20 − 20 = 1,460オクテット

MACヘッダー(14)とFCS(4)は、MTUの外側にあるため、引いてはいけない。

項目長さ(オクテット)
MTU1,500
IPv4ヘッダー(オプションなし)20
TCPヘッダー(オプションなし)20
UDPヘッダー8
TCPのデータの最大長(MSS)1,460
UDPのデータの最大長1,472
IPv6ヘッダー40
IPv6でのTCPのMSS1,440

主な回線のMTU

回線MTU
イーサネット1,500
ジャンボフレーム対応のイーサネット9,000程度(機器による)
PPPoE(フレッツなど)1,492(PPPoEとPPPのヘッダー8オクテットを引いた値)
IPv6の最小MTU1,280

MTUを超えるとき

IPパケットがMTUより大きいと、そのままでは送れない。IPv4では、途中のルータがパケットを分割(フラグメンテーション)して送ることができる。しかし、分割は、ルータの負荷、1つでも失われると全体が使えないこと、ファイアウォールでの検査の難しさなどの問題があるため、避けることが望ましい。IPv6では、途中のルータは分割せず、送信元だけが分割する。

分割を避けるため、次の方法が使われる。

方法内容
パスMTU探索経路上で最小のMTUを調べて、それを超えない大きさで送る
MSSの調整TCPの接続時に、MSSを小さく通知する(ルータが途中でMSSの値を書き換える「MSSクランプ」も使われる)

トンネルとMTU

VPN(IPsec)やPPPoE、GREなどのトンネルを使うと、元のパケットに追加のヘッダーが付くため、実質的に運べる大きさが小さくなる。MTUが小さくなったことに気づかずに大きなパケットを送ると、分割が増えたり、パスMTU探索に必要なICMPが遮断されていて通信が止まったり(一部のWebページだけが表示されない、など)するトラブルが起こる。

実際の試験ではここに出る!

この用語が出てくる記事

↑