6.3 Purging Stale PMTU Information (古い PMTU 情報のパージ)
6.3 Purging Stale PMTU Information (古い PMTU 情報のパージ)
インターネットワークトポロジは動的です。ルートは時間とともに変化します。指定された宛先に対して発見された PMTU は, 新しいルートが使用されるようになると間違っている可能性があります。したがって, ホストがキャッシュした PMTU 情報は古くなる可能性があります。
PMTU Discovery を使用するホストは常に DF ビットを設定するため, 古い PMTU 値が大きすぎる場合, 指定された宛先にデータグラムが送信されるとほぼ即座に発見されます。古い PMTU 値が小さすぎることを認識するためのメカニズムは存在しないため, 実装はキャッシュされた値を "エージング" する必要があります。PMTU 値がしばらくの間 (10 分程度のオーダー) 減少していない場合, PMTU 推定値を最初のホップデータリンク MTU に設定し, パケット化層にこの変更について通知する必要があります。これにより, 完全な PMTU Discovery プロセスが再び行われます。
注意: 実装は, タイムアウト期間を変更する手段を提供する必要があります。"infinity" (無限) に設定することも含みます。たとえば, FDDI ネットワークに接続され, その後低速シリアル回線を介してインターネットの残りの部分に接続されているホストは, 新しい非ローカル PMTU を発見することはないため, 10 分ごとに破棄されるデータグラムに耐える必要はありません。
上位層は, PMTU 推定値の増加に応答してデータグラムを再送信してはなりません (MUST not)。なぜなら, この増加は破棄されたデータグラムの指示に応答して来ることは決してないからです。
PMTU エージングを実装する 1 つのアプローチは, ルーティングテーブルエントリにタイムスタンプフィールドを追加することです。このフィールドは, PMTU が変更されたことがないことを示す "reserved" (予約済み) 値に初期化されます。Datagram Too Big メッセージに応答して PMTU が減少するたびに, タイムスタンプは現在時刻に設定されます。
1 分に 1 回, タイマー駆動プロシージャがルーティングテーブルを実行し, タイムスタンプが "reserved" でなく, タイムアウト間隔より古い各エントリに対して:
-
PMTU 推定値を関連する最初のホップの MTU に設定します。
-
このルートを使用しているパケット化層にこの増加について通知します。
ホストごとのルートが削除されると, PMTU 推定値はルーティングテーブルから消える可能性があります。これは ICMP Redirect メッセージに応答して発生する可能性があり, または特定のルーティングテーブルデーモンが数分後に古いルートを削除するために発生する可能性があります。また, マルチホームホストでは, トポロジの変化により異なる送信元インターフェースの使用につながる可能性があります。これが発生したときに, パケット化層が通知されない場合, 現在は小さすぎるキャッシュされた PMTU 値を使用し続ける可能性があります。1 つの解決策は, Redirect メッセージがルート変更を引き起こすたびに, またルートが単にルーティングテーブルから削除されるたびに, パケット化層に可能性のある PMTU 変更を通知することです。
注意: セクション 7.1 では, PMTU 増加を検出するためのより洗練された方法について説明しています。