メインコンテンツまでスキップ

2. Protocol Overview (プロトコル概要)

2. Protocol Overview (プロトコル概要)

このメモでは, IP ヘッダーの Don't Fragment (断片化禁止, DF) ビットを使用してパスの PMTU を動的に発見する技術について説明します。基本的なアイデアは, 送信元ホストが最初にパスの PMTU が最初のホップの (既知の) MTU であると仮定し, そのパスで送信されるすべてのデータグラムに DF ビットを設定することです。データグラムのいずれかがパス上の一部のルータによって断片化なしで転送するには大きすぎる場合, そのルータはそれらを破棄し, "fragmentation needed and DF set" (断片化が必要だが DF が設定されている) を意味するコードを持つ ICMP Destination Unreachable (宛先到達不能) メッセージを返します [7]。このようなメッセージ (以下 "Datagram Too Big" (データグラムが大きすぎる) メッセージと呼ばれます) を受信すると, 送信元ホストはそのパスに対する PMTU の仮定を減らします。

ホストの PMTU の推定値が十分に低くなり, データグラムが断片化なしで配信できるようになると, PMTU 発見プロセスは終了します。または, ホストはデータグラムヘッダーで DF ビットの設定を停止することによって発見プロセスを終了することを選択できます。たとえば, 特定の状況でデータグラムを断片化することを望んでいる場合にそうすることができます。通常, ホストはすべてのデータグラムで DF を設定し続けます。そのため, ルートが変更され, 新しい PMTU が低くなった場合, それが発見されます。

残念ながら, 現在指定されている Datagram Too Big メッセージは, 拒否されたデータグラムが大きすぎたホップの MTU を報告しないため, 送信元ホストは仮定した PMTU をどれだけ減らすべきかを正確に知ることができません。これを修正するために, Datagram Too Big メッセージの現在未使用のヘッダーフィールドを使用して, 制限ホップの MTU を報告することを提案します。これは, PMTU Discovery (PMTU 発見) をサポートするためにルータに指定された唯一の変更です。

パスの PMTU は, ルーティングトポロジの変化により, 時間とともに変化する可能性があります。PMTU の減少は Datagram Too Big メッセージによって検出されますが, ホストが DF ビットの設定を停止したパスを除きます。パスの PMTU の増加を検出するために, ホストは定期的に仮定した PMTU を増やします (停止していた場合は DF ビットの設定を再開します)。これはほとんどの場合, データグラムが破棄され Datagram Too Big メッセージが生成される結果となります。なぜなら, ほとんどの場合パスの PMTU は変更されていないからです。したがって, これは頻繁に行うべきではありません。

このメカニズムは基本的に, PMTU Discovery を実行しているピアからホストが断片を受信しないことを保証するため, (不適切に) 断片化されたデータグラムを再構成できない特定のホストとの相互運用に役立つ可能性があります。