6.1 Layering (レイヤリング)
6.1 Layering (レイヤリング)
IP アーキテクチャでは, どのサイズのデータグラムを送信するかの選択は, IP より上のレイヤーのプロトコルによって行われます。このようなプロトコルを "packetization protocol" (パケット化プロトコル) と呼びます。パケット化プロトコルは通常トランスポートプロトコル (たとえば TCP) ですが, より高いレイヤーのプロトコル (たとえば UDP の上に構築されたプロトコル) であることもあります。
パケット化層に PMTU Discovery を実装すると, 一部のレイヤー間の問題が簡略化されますが, いくつかの欠点があります。各パケット化プロトコルに対して実装をやり直す必要があり, 異なるパケット化層間で PMTU 情報を共有することが難しくなり, 一部のパケット化層が維持する接続指向の状態は PMTU 情報を長期間保存するように簡単に拡張できない可能性があります。
したがって, IP 層が PMTU 情報を保存し, ICMP 層が受信した Datagram Too Big メッセージを処理すべきだと考えます。パケット化層は, 送信するデータグラムのサイズを変更することによって Path MTU の変化に応答できる必要があり, また DF ビットを設定してデータグラムを送信するように指定できる必要があります。IP 層がすべてのパケットで単純に DF ビットを設定することは望ましくありません。なぜなら, パケット化層, おそらくカーネル外の UDP アプリケーションが, そのデータグラムサイズを変更できない可能性があるからです。意図的な断片化を伴うプロトコルは, 洗練されていないものの, 時には成功します (NFS が主な例)。そのようなプロトコルを壊したくありません。
このレイヤリングをサポートするために, パケット化層は [1] で定義されている IP サービスインターフェースの拡張を必要とします:
MMS_S (最大送信トランスポートメッセージサイズ) の値の変化を知る方法。これは最小 IP ヘッダーサイズを Path MTU から引くことによって導出されます。