MTUとは
MTU (Maximum Transmission Unit)とは、 ノードが隣接したネットワークへ、1回の通信で転送可能な最大のデータグラムサイズです*1。
TCP/IPの階層モデル*2においては、 リンク層の通信メディア(Ethernetなど)の違いによってMTUのサイズが異なるため、 その上位のインターネット層におけるIPデータグラム(IPパケット)のサイズもこのMTUに合わせて決められます。 さらにトンネリングなどの追加ヘッダを利用する通信方式を利用する場合には、 増えたヘッダの分だけペイロードを減らす必要があるので、 MTUがネットワーク層において、より小さな値となります。 ある伝送区間でMTUを超えるサイズのデータグラムを伝送する場合には、 ホストやネットワーク機器が分割して送信可能な単位に変換する対応が必要です。 これをフラグメンテーションと呼びます。
また、送信元と送信先のネットワークが離れている場合は、 単一の伝送路では無いため、途中にMTUが異なる機器・媒体が介在している可能性があります。 送信元ホストから送信先ホストへの経路中で、 中継するネットワーク機器が分割しないで送信できるMTUを探す技術を、 Path MTU Discovery(経路MTU探索)*3*4と呼びます。
IPv4ではMTUを超えるパケットについて経路の途中にあるルータが分割をすることがありますが、 IPv6では経路の途中では分割をしない仕様となっており、 Path MTU Discoveryにて送信可能なMTUサイズを確認することが重要となります。
TCPでは通信を始める際、 MTUからTCPヘッダ・IPヘッダのサイズを除いたMSS(Maximum Segment Size)*5を計算し、 ホスト間で伝送可能なデータの最大サイズを確認してからホストが適宜データのフラグメンテーションを実施し、 送信する仕組みがあります。一方、UDPではこの仕組みが無いため、大きなデータが送られると、 経路途中のMTUに応じてフラグメンテーションが発生します。 発生したフラグメンテーションについて適切に対応できない場合は、通信に障害が起こるときがあります。
*1 RFC 791: INTERNET PROTOCOL
https://tools.ietf.org/html/rfc791
*2 RFC 1122: Requirements for Internet Hosts -- Communication Layers
https://tools.ietf.org/html/rfc1122
*3 RFC 1191: Path MTU Discovery
https://tools.ietf.org/html/rfc1191
*4 RFC 8201: Path MTU Discovery for IP version 6
https://tools.ietf.org/html/rfc8201
*5 RFC 6691: TCP Options and Maximum Segment Size (MSS)
https://tools.ietf.org/html/rfc6691
■参考
RFC 1983: Internet Users' Glossary
https://tools.ietf.org/html/rfc1983