フラグメンテーション ふらぐめんてーしょん
フラグメンテーションMTUパケット分割IPv4IPv6Path MTU Discovery
フラグメンテーションについて教えて
簡単に言うとこんな感じ!
大きすぎるデータをネットワーク上で分割して送る仕組みだよ。引越しで大きな家具をバラして小さいトラックで運んで、届いたら組み立て直すイメージ。IPv6では端末側だけが分割するルールに変わったんだよ!
フラグメンテーションとは
フラグメンテーション(Fragmentation)は、IPパケットが経路上のMTU(最大転送単位)より大きい場合に分割して送る仕組みです。受信側ではバラバラになったパケットを番号順に並べて元のデータに再組み立て(Reassembly)します。
IPv4では、ルーターがパケットを分割することを認めています。ただし分割・再組み立てはCPU処理を消費するため、できるだけ行わないほうが効率的です。そのためPath MTU Discovery(PMTUD)という仕組みで経路上の最小MTUを事前に検出し、最初から適切なサイズで送ることが推奨されています。
IPv6では設計を見直し、ルーターによるフラグメンテーションを廃止しました。IPv6ではパケットが大きすぎる場合、ルーターはパケットを破棄してICMPv6の「Packet Too Big」エラーを送信者に返します。送信者側がサイズを調整して再送する責務を負います。
IPv4とIPv6のフラグメンテーション比較
| 項目 | IPv4 | IPv6 |
|---|---|---|
| ルーターによる分割 | 可能 | 禁止 |
| 送信端末による分割 | 可能 | 可能(拡張ヘッダ使用) |
| 分割禁止フラグ | DFビット(Don’t Fragment)で設定 | デフォルトで禁止 |
| MTU超過時の動作 | ルーターが分割 | ICMPv6 Packet Too Bigを返して送信者に通知 |
歴史と背景
- 1981年:RFC 791でIPv4フラグメンテーションが定義
- 1995年:Path MTU Discoveryの重要性が認識される(RFC 1191)
- 1998年:IPv6ではフラグメンテーションの設計を根本から見直し(RFC 2460)
- 2000年代:ファイアウォールがICMPをブロックしPMTUDが機能しない「PMTUD Black Hole」問題が発生
- 現在:VPN・トンネリング環境でのMTU設定ミスは今もよくあるトラブルの原因
フラグメンテーションの問題点
フラグメンテーションを避けるためのベストプラクティス
- Path MTU Discoveryを機能させる:ICMPをファイアウォールでブロックしない
- MSS Clampingを設定:ルーター・ファイアウォールでTCPのMSSを適切に制限
- VPN設定でMTUを調整:トンネリングのヘッダ分(50〜100バイト)を差し引く
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 791 | IPv4フラグメンテーションの仕様 |
| RFC 1191 | Path MTU Discovery(IPv4) |
| RFC 8200 | IPv6仕様(ルーターによるフラグメンテーション禁止) |
| RFC 8201 | Path MTU Discovery(IPv6) |