Road to ネットワークスペシャリスト > ネットワーク基礎 > Path MTU Discovery

  Path MTU Discovery

  ◆Path MTU Discoveryとは

IPv4においては、パケットサイズがNW機器のインタフェースのMTU値を超えた場合、そのNW機器上でパケットを分割して MTU値以下にする"フラグメンテーション"という機能があります。

しかしフラグメンテーションする場合、ルータでパケットを分割する処理負荷、PC側でパケットを再構築する処理負荷がかかり、効率的ではありません。

そのため、通信元と通信先の組合せ毎に、フラグメンテーションを必要としない最大のMSS値を把握できる仕組みが考え出されました。 それがPath MTU Discoveryです。

なお、IPv6においてはこの考えに基づき、フラグメンテーションはしてはならないことになりました。

スポンサーリンク


  ◆Path MTU Discoveryの動作

Path MTU Discoveryの基本的な動作としては以下の通りです。



スポンサーリンク

まず、Path MTU DiscoveryをサポートしているOSは、通信する際にIPパケットにdfビット(don't fragment)を立てます。

データを送るPCは、PCのMTU値に従ってパケットサイズを決めます。通常はEthernetインタフェースなので、Ethernetの最大サイズ1518Byteに 合わせて1500Byteとなります。

経路上の全てでPCのMTU値を超えない場合、そのまま通信が行なわれます。

経路上のどこかでこのMTU値を超えてしまう場合、dfビットが立っているため、フラグメントができないので、データが破棄されますが、 それと同時に、データの送信元のPCにICMPのタイプOx03/コードOx04 (Destination Unreachable/Fragmentation needed and Don't Fragment was set)が送られます。

このICMPのタイプOx03/コードOx04には、破棄される原因となったMTU値(Next-Hop MTU)が含まれています。



スポンサーリンク

  ◆ブラックホール問題 その他

Path MTU Discoveryの仕組みにおいて、ICMPが送信元に届かなかった場合、通信はずっと届かなくなってしまいます。 これをブラックホール問題と言います。

具体的には、サーバがクライアントにデータを送ろうとしてパケットが破棄された場合を考えます。 このとき、サーバは不要な通信を止める目的でICMPを全て止めてしまっていると、上記の問題が起きます。

そのため、DoS攻撃の心配は出てきますが、ICMPのDestination Unreachableだけは通信が届くようにしておくのがよい場合もあります。

また、特殊な状態として、ICMPメッセージを出すNW機器がNATも行なう場合、サーバ側ではクライアントのIPアドレスを(NAT変換後の) グローバルIPアドレスとして認識しているが、パケットが破棄されるのはIPをグローバルからプライベートに戻した後に インタフェースから送出しようとしたタイミングなので、ICMPメッセージの中に入るIPヘッダのIPアドレスはプライベートIPアドレスに なってしまいます。

この場合、サーバではメッセージを受け取っても、どのクライアントに対してMSS値を変更すればよいか理解できないため、 MSS値を変えられない状態になります。


inserted by FC2 system