要約

  • RFC 791では、DF付きデータグラムをルーターは分割できないが、破棄はできる。
  • RFC 1191はICMPタイプ3コード4とNext-Hop MTUによって、その破棄を情報に変えた。
  • RFC 2923は、ICMP通知が届かない場合のPMTUDブラックホールを記録した。

禁止が測定になるまで

IPv4のFlagsにあるDFは Don't Fragment を示す。DFが0なら分割でき、1ならルーターはデータグラムを分けてはならない。次のリンクのMTUが小さければ、パケットは破棄される。DFだけでは配送もMTU発見も保証しない。

RFC 1191では、この失敗を探索の起点にする。送信元は最初のリンクを基準に見積もり、DF付きデータグラムを送る。中継ルーターが分割なしに転送できなければ、データグラムを破棄し、ICMP Destination Unreachable、タイプ3コード4、つまり「分割が必要でDFが設定されている」という通知を返す。

Next-Hop MTUは通知を数値化する。フィールド下位16ビットは、報告したルーターが分割せずに転送できた最大のIPデータグラムを示す。IPヘッダーとデータは含むが、下位層のオーバーヘッドは含まない。送信元は推定値を下げ、次の送信サイズを変える。

収束を担うのは送信元である。ホストは、データグラムを小さくするかDFを使わないことで、直後の再発を避ける必要がある。増加探索も頻繁には行えない。大きすぎる通知の後は少なくとも5分、増加試行が成功した後は少なくとも1分待つ。RFC 1191はその倍の間隔を推奨する。

古いルーターはNext-Hop MTUをゼロのまま返すことがある。ホストはこの互換性ケースを処理し、既知のMTU候補などを使って範囲を絞る。精度は落ちるが、異なる世代をまたいで動作できる。

通知が消えるとき

RFC 2923は、ルーターがICMPを送らない、またはフィルターが抑止する状況を示す。送信元はサイズを下げる理由を得られず、大きすぎるDFデータグラムを送り続ける。短いパケット、ping、TCP接続確立、小さな書き込みは成功しても、大量転送だけが停止し、タイムアウトすることがある。

ブラックホール検出やフォールバックはサイズを下げられるが、遅延を増やし故障を隠す。望ましい対処はICMPの経路を直すことだ。PMTUDはDF単独の機能ではなく、制限を検出するルーター、戻り経路、送信元の適応からなる協調ループである。

出典