PMTUDブラックホール(ピーエムティーユーディーブラックホール)とは | 意味や読み方など丁寧でわかりやすい用語解説
PMTUDブラックホール(ピーエムティーユーディーブラックホール)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
PMTUDブラックホール (ピーエムティーユーディーブラックホール)
英語表記
PMTUD black hole (ピーエムティーユーディーブラックホール)
用語解説
PMTUDブラックホールは、ネットワーク通信において特定のサイズのパケットだけが通過できなくなり、通信が途絶したり不安定になったりする現象を指す。これはPath MTU Discovery (PMTUD) という経路MTU探索の仕組みが正しく機能しない場合に発生するため、この名称が用いられる。システムエンジニアを目指す上では、ネットワーク障害の原因特定やトラブルシューティングにおいて、この現象への理解が不可欠となる。
PMTUDの「MTU」とはMaximum Transmission Unit(最大伝送単位)の略であり、データリンク層で一度に転送できるパケットの最大サイズを示す。例えば、イーサネットの標準的なMTUは1500バイトである。ネットワークは複数のリンクやルータを経由して構成されており、それぞれのリンクやルータが異なるMTUを持っている場合がある。経路上のMTUの中で最も小さい値をPath MTU(経路MTU)と呼び、効率的かつ確実にデータを転送するためには、このPath MTUに合わせたサイズのパケットで通信を行うのが理想である。
PMTUDは、この経路MTUを自動的に発見するための仕組みだ。TCP/IP通信において、送信元ホストは通常、自らのインターフェースMTU、例えば1500バイトのサイズのパケットを送信しようとする。この際、IPヘッダに「Don't Fragment (DF)」ビットと呼ばれるフラグメント禁止ビットを設定する。これは、パケットが途中のルータでMTUよりも大きい場合に、そのルータで分割(フラグメンテーション)されることなく、エラーとして送信元に通知されるようにするためのものだ。
もし経路上のルータが、自身のMTUよりも大きな、DFビットが設定されたパケットを受信した場合、そのパケットを破棄し、同時に送信元ホストに対してICMP (Internet Control Message Protocol) の「Packet Too Big」メッセージ(ICMP Type 3 Code 4)を送信する。このICMPメッセージには、受信側ルータのMTU値が含まれている。送信元ホストはこのICMPメッセージを受け取ると、そのMTU値を新たなPath MTUとして認識し、それ以降の通信でそのMTU値以下のサイズのパケットを送信するように調整する。この一連のプロセスを繰り返すことで、送信元ホストは経路上の最小MTU(Path MTU)を効果的に発見し、それに合わせてパケットサイズを最適化する。これにより、無駄なパケットの破棄やフラグメンテーションによるオーバーヘッドを避け、効率的な通信が実現される。
しかし、「PMTUDブラックホール」はこのPMTUDのプロセスが中断されることで発生する。その主な原因は、経路上のルータやファイアウォールが、送信元ホストへのICMP「Packet Too Big」メッセージを何らかの理由でブロックまたは破棄してしまうことにある。多くのネットワーク管理者は、不正なアクセスやDDoS攻撃への対策として、ICMPパケット全般をフィルタリングしたり、特定のICMPタイプを制限したりする傾向がある。セキュリティ強化の一環としてICMPトラフィックを制限することは有効な場合もあるが、ICMP Type 3 Code 4 をブロックしてしまうとPMTUDが正常に機能しなくなる。
ICMP「Packet Too Big」メッセージが送信元に届かないと、送信元ホストは自分の送ったパケットが破棄されたことを知ることができない。送信元ホストは、依然として最初のMTUサイズ(例えば1500バイト)のパケットをDFビット付きで送り続け、それが経路途中のMTUの小さいルータで繰り返し破棄される。結果として、送信元ホストは適切なPath MTUを学習できず、特定のサイズの大きなパケットが宛先に到達しない状態が続く。これがPMTUDブラックホールの実態である。
この現象が発生すると、ユーザー体験に様々な悪影響が出る。例えば、ウェブサイトへのアクセスで、小さなパケットで構成されるHTMLテキストは問題なく表示されるが、画像や動画などの大きなデータが途中で読み込み停止したり、表示が非常に遅くなったりすることがある。また、VPN接続が確立できなかったり、途中で切断されたりするケースも多い。FTPなどを使ったファイル転送が途中で失敗したり、特定のアプリケーションがタイムアウトを繰り返したりすることもある。厄介なのは、小さなパケットでの通信は問題なく行われるため、ネットワーク全体がダウンしているわけではなく、特定のプロトコルやデータサイズでのみ問題が発生するため、原因の特定が非常に困難である点だ。
PMTUDブラックホールへの対策としては、いくつかの方法が挙げられる。最も根本的な対策は、ネットワーク管理者がルータやファイアウォールの設定を見直し、ICMP Type 3 Code 4 (Packet Too Big) メッセージが経路上のすべてのルータから送信元ホストへ適切に通過できるようにすることである。セキュリティ上の懸念から全てのICMPを許可できない場合でも、少なくともPMTUDに必要なICMP Type 3 Code 4 だけは許可するように設定を調整すべきである。
また、代替策として「TCP MSS (Maximum Segment Size) クランピング」という技術がある。これは、TCPコネクションの確立時に行われる3ウェイハンドシェイクの過程で、ルータやファイアウォールがTCPのMSS値を書き換え、経路上のPath MTUに合わせて小さく調整する機能である。MSSはTCPデータ部分の最大サイズであり、IPヘッダやTCPヘッダを除いた部分のサイズを指す。例えば、Path MTUが1300バイトの場合、標準的なIPヘッダ20バイトとTCPヘッダ20バイトを差し引いた1260バイトにMSS値をクランプ(制限)することで、送信元ホストが送信するパケットが常に経路MTU以下になるように調整できる。これは特に、送信元ホスト側でPMTUDがうまく機能しない状況において有効な対策となる。
IPv6環境においては、IPフラグメンテーションが原則として送信元ホストでのみ許容されており、途中のルータでは行われないため、IPv6におけるPMTUDとICMPv6「Packet Too Big」メッセージの適切な処理はIPv4以上に重要となる。したがって、IPv6環境への移行が進むにつれて、ICMPv6 Type 2 (Packet Too Big) のフィルタリングを適切に行うことの重要性はさらに高まる。
PMTUDブラックホールは、ネットワークの透過的な性質とセキュリティポリシーが衝突した結果として発生する、典型的なネットワーク問題の一つだ。この現象とその原因、そして対策を理解することは、システムエンジニアとして安定したネットワーク環境を構築・運用するために不可欠な知識であると言える。特に、クラウドサービスやVPN利用が一般的になった現代において、この種のネットワーク問題はユーザーエクスペリエンスに直結するため、その発生メカニズムと解決策をしっかりと把握しておくことが求められる。