要約

  • BGP Graceful Restart は、対応する隣接ルータにセッション再起動中の経路保持を認めるが、その制御状態だけでは再起動中のルータが対象通信を転送し続けている証拠にならない。
  • 必要な運用証跡は、アドレスファミリー別に能力ビット、保持タイマー、実測したパケット継続性、End-of-RIB、古い経路の最終処理を結び付けた再起動記録である。

明示的に仮定した保守作業を考える。ルータが BGP プロセスを再起動し、隣接ルータは学習済みプレフィックスを保持する。画面上では即時撤回ではなく整然とした復旧に見える。しかし一つのアドレスファミリーの通信は止まっている。隣接ルータはタイマーか後続イベントが削除するまで古い経路を選び続ける。短い制御停止を隠すための仕組みが、保持判断と同じ長さまで転送障害を延ばした。

これは Graceful Restart の欠陥を主張するものではない。制御プレーン復旧と転送状態保持を一つに扱ったことが問題である。プロトコルが前者を調整しても、古い情報を使う間は後者が真でなければならない。

能力広告が示す範囲

RFC 4724 は Graceful Restart capability を定義する。Restart State ビットは話者が再起動したことを示す。各 AFI/SAFI の Forwarding State ビットは、そのファミリーの転送状態が保持されたかを示す。装置全体への曖昧な約束ではない。

転送状態が保持されなかったファミリーについて、RFC 4724 は受信側に古い経路の削除を求める。保持が示された場合、ヘルパーはセッションと経路交換の復帰中に経路を維持できる。この違いが安全境界になる。

Restart Time はセッション再確立の見込み時間であり、ヘルパーにはローカルな古い経路の保持上限もある。どちらもパケット継続性を測る値ではない。制御プレーンが保持宣言を信頼する期間を制限する値である。

End-of-RIB が閉じる別の問い

セッション復帰後、End-of-RIB は当該ファミリーの初期更新が完了したことを示す。更新された経路は現在の状態となり、未更新の古い経路は削除できる。経路整合は完了するが、それ以前のパケット配送は証明されない。

セッション復帰、End-of-RIB、通信成功は三つの観測である。「再起動成功」にまとめれば、サービスを守ったのか、経路を表に残しただけなのか判別できない。

長期保持は証明負担を増やす

RFC 9494 の Long-Lived Graceful Restart は、より長い保持と LLGR_STALE community を定義し、代替経路が勝てるよう当該経路の優先度を下げることを推奨する。転送が実際に長く保たれる場合は有用だが、保持が終わった場合には誤った仮定も長く残る。

長いタイマー自体が常に誤りなのではない。タイマー、優先度、代替経路が実機とトポロジーの証拠に支えられているかが重要である。あるファミリーやラインカードの試験は別の対象を保証しない。

NOTIFICATION は転送の証明ではない

RFC 8538 は、特定の BGP NOTIFICATION の後にも Graceful Restart の手順を適用できるようにする。メッセージはセッション終了理由と隣接ルータが採る手順を説明できるが、イベント中にパケットが装置を通過した証拠にはならない。経路が撤回されないことは、ヘルパーに求めた動作そのものであり、配送結果とは限らない。

ファミリー別の再起動記録

両ピア、AFI/SAFI、能力、Restart State と Forwarding State、Restart Time、ローカル上限、LLGR 方針、代替経路を記録する。セッション断、最初の成功パケット、セッション復帰、End-of-RIB、最終的な撤回または更新の時刻も残す。

パケット観測は対象サービスを代表すべきだ。ループバックへの ping は顧客プレフィックスや別 FIB を保証しない。IPv4 の成功は IPv6 を保証せず、あるラインカード、FIB、VRF、サービス群の試験は別の対象を保証しない。記録は保持対象のファミリー、装置、表、通信と一致しなければならない。

情報源