要約

  • RFC 9722 は RT-4 に絶対的な Service Carving Time(SCT)を載せ、T 能力を持つ PE が同じ目標時刻を基準に選出する。正しい形式の SCT が示すのは送信者の時刻宣言までだ。
  • 同期復旧を主張するには、時計品質、経路受信、能力集合、タイマー、DF/NDF のハードウェア反映、フロー単位の観測を同じ復旧世代に結び付ける必要がある。
  • 無損失は顧客データ面の結果であり、BGP 更新や選出の成功、アラームの沈黙からは導けない。

予定時刻は完了時刻ではない

障害から戻った EVPN PE はマルチホームの相手を発見し、自身の現在時刻に発見待ち時間を加え、Ethernet Segment Route で SCT を通知する。相手は DF 選出の共通予定を得る。だがその瞬間、ある ASIC はフィルターを書き込み中で、別の装置の時計は数ミリ秒ずれ、さらに別の PE には経路がまだ届いていないかもしれない。制御プレーンのログが整っていても、顧客パケットは欠落、重複、短いループを経験し得る。

2025 年 5 月の Standards Track 文書である RFC 9722 は、RFC 8584 の DF 選出手続きを更新した。各 PE がローカルタイマーを別々に満了させる競合を、将来の絶対時刻によって調整する仕組みだ。分散トランザクションや顧客サービスの合否判定を定義したわけではない。

交代には二つの危険な端がある。新 DF が旧 DF の停止前に転送すれば重複やループが起き、旧 DF が先に止まればブラックホールが生じる。発見タイマーを伸ばせば早過ぎる動作を抑えられる一方、停止時間も延びる。RFC 9722 は交代を予約可能にするが、準備完了を自動的に観測可能にはしない。

SCT が実際に証明する範囲

SCT は Ethernet Segment Route(RT-4)の BGP Extended Community に入る。IANA は Transitive Opaque Extended Community の subtype 0x0F を Service Carving Time に割り当てている。値は 32 ビットの秒と小数部上位 16 ビットからなる短縮 NTP タイムスタンプで、表現粒度は約 15 マイクロ秒。NTP Era は運ばれない。

復旧 PE はローカル現在時刻に partner discovery period を加える。従って、妥当な更新を受け取って確認できるのは、送信者が「今」と待ち時間を宣言したことだけだ。時計の正しさ、全 PE の Era とオフセット、BGP の到着期限、ハードウェア処理の完了は別の証拠を要する。

DF Election Capabilities の bit 3 が T 能力である。同じ Ethernet Segment の全 PE が対応しなければならない。非 T 対応の相手を検出すると、SCT 対応 PE は直ちに基本手順へ戻り、SCT に基づく遅延を取り消す。この安全策は、構成員の認識自体が証拠であることを意味する。古い資産台帳ではなく、その ES、その復旧世代で実際に観測した能力集合を残す必要がある。

受信は受理とは限らない

受信側は SCT をローカル時計と比較する。過去の値、または将来への差がローカル peering timer を超える値は破棄し、相手の選出は既に行われたものとして扱う。古すぎる値や遠過ぎる値を制限する合理的な規則だが、時計や設定が異なる二つの正しい実装が同じ広告に別の判断を下す余地も生む。

監査記録には、生の RT-4、受信時刻、解析 SCT、算出したローカル差、タイマー上限、受理・破棄の判断が PE ごとに必要だ。「BGP 経路を受信」だけでは決定的な分岐が消える。形式は正しくても運用上は拒否され得るし、受理後に時計の信頼性が崩れることもある。

同時復旧では、RFC 9722 は既知の SCT を順に並べ、最大、つまり最も遅い SCT で一度だけ選出する。早い予定は取り消すか後ろへ動かす。全参加者が期限内に同じ候補集合を見た場合に限り、その最大値は共同の意味を持つ。候補、順序、置き換えたタイマー、最終値の理由を残さなければ、遅着した RT-4 や発火してしまった取消済みタイマーを発見できない。

「NTP 稼働中」は誤差上限ではない

RFC 5905 は offset、delay、dispersion、jitter、root distance で時計の不確かさを表す。RFC 8633 は正確な時刻が必要な場合、少なくとも四つの独立かつ多様な時刻源と継続監視を勧める。複数源でも共通障害や leap smear 方針の違いは起こり得る。RFC 8915 の NTS は相手と交換を認証しリプレイを防ぐが、時刻値そのものの客観的正しさは保証しない。

SCT に時計の確からしさを付けるなら、復旧中の時刻源集合、選択状態、offset、root distance、dispersion、jitter、leap 状態、最終更新、step または slew を保存すべきだ。単なるプロセス状態は PE 間誤差の上限ではない。

RFC 9722 の skew は設定可能で、既定値は 10 ミリ秒である。DF から NDF へ移る PE は SCT − skew で NDF 状態を適用し、SCT で選出結果を適用する。重複転送を避けるための窓だが、安全な幅は規模、ハードウェア、時計精度に依存する。既定値は測定値ではない。時計誤差、経路処理、選出計算、データ面プログラミングの実測分布が要る。

選出結果と転送結果の間

アルゴリズムが返すのは役割である。ソフトウェアは VLAN や Ethernet Tag ごとのフィルターと複製規則に変換し、ASIC やラインカードへ投入し、反映確認を得なければならない。API の成功が実表への即時反映を意味するとは限らず、多数サービスはキューを通って順に変わる可能性がある。

サービスごとに、選出決定、投入、ハードウェア確認、最初に観測した転送状態の四時刻を残す。旧・新 DF、ES、VLAN または Ethernet Tag、復旧世代、エラー経路も必要だ。一つの「DF 収束」値は、少数顧客に残るブラックホールや二重転送を隠す。

最後はパケットで閉じる。明示した観測区間で、時刻とシーケンス番号を持つ双方向プローブまたは顧客テレメトリーを用い、欠落、並べ替え、重複、予期しない経路を数える。ループの恐れがあるなら入口と出口の両方を見る。苦情がないことは損失ゼロではない。サンプルが証明できるのは、そのフロー、観測点、時間帯に限られる。

出典

一次資料:RFC 9722、RFC Editor 情報、IETF Datatracker、RFC 8584、RFC 7432、RFC 5905、RFC 8633、RFC 8915、IANA BGP Extended Communities registry。