要約

  • RFC 3478 は、LDP が制御上の意味を再構築する間、MPLS 転送エントリーと label-FEC binding を stale 状態として存続させた。
  • 再接続、生存、回復、保持の各タイマーとラベル早期再利用の禁止により、連続性は回復証明ではなく期限付きの猶予となった。

Graceful Restart という名称は、停止した仕組みが無傷で戻る印象を与える。RFC 3478 が設計したのは、それより慎重な取引だった。LDP 制御コンポーネントが状態を失い、再び学び直す間も、MPLS 転送面は再起動前の規則でパケットを運べる。転送が生きていることと、その意味を説明する制御状態が完全であることは別だった。

仕様が要求した保存量は最小限である。LSR は LDP 状態のすべてを残さなくてもよく、実際の MPLS 転送状態だけを保存できればよい。中継なら入力ラベルから出力ラベルと next hop への対応、入口なら FEC から出力ラベルと next hop への対応である。既存 LSP を直ちに壊さないには十分だが、各ラベルの理由を制御面が理解しているという証明にはならない。

再起動後、保存エントリーは stale とされた。新たな Label Mapping を受けると、LSR はその出力ラベルと、相手の Address メッセージで得た next hop を照合する。Implicit NULL、penultimate hop、egress では、label pop や FEC も含む条件が必要になった。再構築されたプロトコルから正しい結合が届いて初めて、状態は stale ではなくなる。

代替手順では、回復中の同一 FEC に二つのローカル binding が一時共存することさえあった。一つは再起動前から保持されたもの、もう一つは再起動後に通常手順で作ったものだ。両方は同じ出力ラベルと next hop を使い、古い binding は再起動完了時に削除される。連続転送は、制御面の真実が常に一つであることを意味しなかった。

この取引を支配したのは時間である。LDP Initialization の FT Session TLV は FT Reconnect Timeout と Recovery Time を運んだ。前者は、LDP 通信断を検知した相手に古い状態をどれほど保ってほしいかを示す。後者は、再起動 LSR が実際に保存できた転送状態をどれほど保持する意思があるかを示す。

ゼロには明確な意味があった。FT Reconnect Timeout がゼロなら、送信側は自分の転送状態を保存しないが、保存可能な隣接の helper にはなれる。Recovery Time がゼロなら、古い MPLS 転送状態は利用できない。相手は保持していた stale binding を直ちに削除すべきであり、無期限の猶予として解釈してはならない。

ローカル設定は相手の希望を短くできた。セッション再確立前は、相手が広告した FT Reconnect Timeout と自分の Neighbor Liveness Timer の短い方だけ stale binding を保つ。非ゼロ Recovery Time で再接続した後も、その Recovery Time とローカル Maximum Recovery Time の短い方までである。再起動装置自身の MPLS Forwarding State Holding timer が切れた時、まだ stale のエントリーは削除される。

これらは重複した時計ではない。相手が必要時間を申し出て、ローカル運用者が信頼の上限を決め、再起動装置が自分の保存能力を限定する。実際の信頼窓は最大値ではなく、すべての制約が重なる部分だった。

RFC 3478 は Recovery Time の半分以内にラベルマッピング交換を終えるよう推奨した。しかし TCP/LDP セッションが戻っただけでは、全マッピング到着を証明できない。原仕様には明示的な完了印がなかった。RFC 5919 は後に End-of-LIB Notification を導入した。この後年の仕組みは証拠の不足を説明するが、2003 年の wire contract に存在したことにはできない。

ラベル再利用禁止はタイマーを囲む安全壁である。下流 LSR がラベルを解放し、上流が旧意味で送り続けている間に同じ数値へ新しい意味を与えれば、別の宛先へ誤転送されうる。そこで RFC 3478 は、Graceful Restart 対応隣接に対し、解放ラベルを少なくとも FT Reconnect Timeout と Recovery Time の合計期間は再利用しないよう求めた。隔離対象は番号ではなく、その古い意味だった。

Security Considerations は時間境界が攻撃面になることも示した。偽装や改変で Recovery Time をゼロにされれば、相手はラベルを解放する。一方、下流が早く失敗と判断して platform-wide label を再利用し、上流が旧対応で送信を続ければ誤転送が生じる。認証は必要だが、監査には双方がいつ何を信じたかも必要である。

無停止トラフィックは有用だが狭い証拠だ。ある転送エントリーが残り、観測したパケットに使えたことは示せる。すべての FEC が refresh されたこと、新 LDP セッションが旧 LIB を再構築したこと、BGP や RSVP-TE とラベル所有権を区別できたこと、最後のタイマー後も安全だったことは示さない。

Heng Lu の現実レイヤーに従う監査は、旧・新 LDP セッション、TCP 切断と再接続、FT TLV、広告値と全ローカルタイマーから始める。転送エントリー、LIB binding、プロトコル所有情報を分けて棚卸しする。stale 化、Mapping と peer address による refresh、ラベル変更、削除、再利用隔離を時刻付きで記録する。

その後にだけパケット観測を結合する。無損失グラフは再構築ログではない。緑の session-up は End-of-LIB ではない。非ゼロ Recovery Time は保存の主張であって測定ではない。転送できるエントリーも、制御証拠が更新するまでは stale のままである。

RFC 3478 の歴史的価値は、継続を規律ある疑いの上に置いたことだ。データ面は制御の物語より一時的に長く生きられるが、旧状態は永続の真実にならない。ラベルは猶予時間で転送を続け、プロトコルは誰がその猶予を延ばし、誰が短くし、いつ旧意味を消すべきかを定めた。

出典