要約

  • RFC 9568のActiveは、設定されたアドレス所有者、優先度、Advertisement、失効タイマーから決まる一つのVRRPインスタンスの役割であり、認証済みの権限やデータプレーンの健全性を示すものではない。
  • 切替成功を立証するには、選挙を仮想MAC、ARPまたはNeighbor Discovery、隣接関係、上流経路、独立したIPv4/IPv6インスタンス、実トラフィックの復旧へ結び付けなければならない。

障害時のログだけを読むと、復旧は完璧に見える。最後のAdvertisementが途絶え、Backupのタイマーが満了し、状態がActiveへ変わる。新しいAdvertisementも予定どおり送信される。ところが端末から外部サービスへの通信は戻らない。

この二つは矛盾しない。VRRPは同一LAN上の参加者から、仮想的な第一ホップを担当する一台を選ぶ仕組みである。選挙が完了したという事実と、その先の経路が利用可能だという事実は、観測対象が違う。

Advertisementが運ぶ範囲

VRRPv3のAdvertisementにはVRID、優先度、最大送信間隔、保護対象のIPv4またはIPv6アドレスが入る。設定上のアドレス所有者は優先度255、Backupは1から254を使い、既定値は100である。0はActiveが責任を手放す合図となる。チェックサムは偶発的な破損を検出し、TTLまたはHop Limitを255に固定することで遠隔ネットワークからの注入を制限する。

そこにFIB、上流リンク、隣接状態、ACL、状態同期、利用者の要求結果は含まれない。しかもRFC 9568はVRRPv3に認証がないことを明記する。同一LAN上の悪意あるノードや誤設定ノードはActiveらしく振る舞える。Hop Limitの検査は送信元をローカル範囲へ狭めるが、正当な送信者であることまでは証明しない。

優先度255も外部の所有証明ではない。あくまで「この装置を対象アドレスの所有者として設定した」という選挙入力である。複数装置が255を名乗れば、それは権威の確定ではなく矛盾の検出であり、記録して解消すべき状態になる。

タイマーが分かるのは受信の空白だけ

BackupはActiveが通知した間隔と自分の優先度からSkew_Timeを求め、三つの間隔にその値を加えたActive_Down_Intervalで失効を判断する。優先度が高いBackupほど少し早く動き、複数候補の順序を作る。

しかし満了が示すのは、その受信点で有効なAdvertisementが見えなかったということだけだ。旧Activeの電源断、マルチキャストのフィルタ、制御プロセスの停止、片方向障害、LAN分断は同じ現象を作る。逆に、データプレーンや上流が壊れていてもAdvertisementだけは送り続けられる。制御メッセージの有無は、障害原因の特定ではない。

間隔を短くすれば選挙は速くなるが、MAC学習や近隣キャッシュ、上流経路まで速くなるわけではない。高優先度のActiveが遅い間隔で送信し、低優先度のBackupが速い場合、一時的に役割が競合し得ることも規格は指摘している。優先度差が小さすぎれば複数Backupがほぼ同時にActiveへ進む。短時間化は安定性との交換条件を伴う。

仮想MACが現実のポートへ移るまで

新しいActiveは仮想MACを使い、IPv4ならARP、IPv6ならNeighbor Discoveryで新しい位置を周囲へ知らせる。送信自体が正しくても、すべての装置が同時に受け入れるとは限らない。スイッチが旧ポートを保持し、ある端末だけが更新し、別の端末が古い近隣情報を残すことがある。セキュリティ機能が非要求の通知を落とす場合もある。

RFC 9131は、非要求Neighbor Advertisementでキャッシュを更新するため追加設定が必要になり得ると説明する。新Active上のパケットキャプチャは送信証拠であって、全受信点の反映証拠ではない。仮想MACを複数のスイッチから観測し、端末側のキャッシュも確認して初めてリンク収束の輪郭が見える。

仮想アドレスへのpingも単純ではない。Accept_Modeの既定値はFalseであり、アドレス所有者ではないActiveは、そのアドレス自身宛ての通常パケットを受け取らなくても、第一ホップとして通過トラフィックを正しく転送できる。ping失敗だけで転送失敗とは言えない。成功しても、上流や最終アプリまで届くことは示さない。

デュアルスタックは一枚の状態ではない

IPv4とIPv6の仮想ルーターは独立したインスタンスとして扱われる。同じ筐体で動いていても、一方の選挙結果を他方へコピーしてはならない。IPv4のARPが更新済みでもIPv6の近隣キャッシュが古いことはあり、Activeとなる装置自体がアドレス族ごとに異なる場合もある。

IPv6のRouter Advertisementが特別なサービス情報を運ぶ場合、Backupがサービスを完全に引き継ぎ、必要な状態を同期できない限り、その情報を安易に引き継ぐべきではないとRFC 9568は述べる。アドレスを話せることと、アドレスの背後にある機能を提供できることは同じではない。

切替を証拠にするための記録

最低限、VRID・アドレス族・対象アドレス、所有者設定・優先度・間隔・preemption・accept mode、最後の有効Advertisement、失効計算、勝者とタイブレーク、スイッチ上の仮想MAC、複数地点のARPまたは近隣キャッシュ、新Activeのインターフェース・隣接・FIB・ポリシー、そしてIPv4/IPv6別の損失・復旧時間・アプリ結果を残す必要がある。

BFDは明示的に連携させれば双方向転送路の追加信号になる。VRRPのYANGモデルは状態とカウンターを可視化できる。それでもActiveという語の中に自動で含まれるわけではない。制御状態から実際の通信までを追跡可能に接続してこそ、可用性の主張になる。

RFC 9568は狭い仕事を正確に行う。問題は、その正確さを理由に、規格が一度も観測していない上流や利用者の結果まで確定したことにしてしまう運用側にある。

出典