要約

  • RFC 8210のキャッシュシリアルは、一つのキャッシュ系譜内で循環しながら増える論理版であり、別のキャッシュ、セッション、プロトコル版とは比較できない。
  • ルーターによる完全受信、キャッシュセッション、更新・失効タイマー、上流検証の観測は別々の証拠であり、シリアル値だけからは導けない。
  • 鮮度監視には、シリアル番号によるキャッシュの世界順位ではなく、観測時刻を伴う同期台帳が必要である。

キャッシュAがシリアル90,000、キャッシュBが12,000を返したとする。ダッシュボードが数値順に並べ、Aを「より新しい」と表示するのは簡単だ。表示された値がすべて正しくても、その結論には根拠がない。

RFC 8210はSerial Numberを、循環する32ビット符号なし整数で、厳密に増加する値と定義する。これは一つのキャッシュの論理版を表す。キャッシュは親キャッシュまたは主要RPKIデータから更新を正常に取得した後に値を増やし、その取得が完了する前に新しいシリアルのデータを送ってはならない。

これは順序ではあるが、有効なのは正しい範囲の中だけだ。同じRFCは、異なるキャッシュやプロトコル版のシリアルは通約できず、キャッシュのリセット後に維持される必要もないと明記する。Session IDはキャッシュの一インスタンスを識別し、そのインスタンスが生成するシリアル列を結び付ける。完全に比較できるのは、プロトコル版、Session ID、シリアル番号がそろった場合である。

したがってシリアルは、普遍的な時計ではなく、一つのローカルな列における位置である。起動直後のキャッシュが低い番号で最新データを保持することもある。長期間動いたキャッシュは高い番号でも、最後に上流を正常更新した時刻が古いかもしれない。番号だけを比較すると、その番号に意味を与える識別情報が失われる。

ルーターとキャッシュの交換には、もう一つの境界がある。ルーターはSerial Queryを送り、現在値以降の変更を求める。キャッシュに十分な履歴があれば、同期に必要な最小の統合変更集合を送る。なければCache Resetを要求して全データを送る。ルーターがEnd Of Data PDUのシリアルを採用するのは、応答全体を受信した後だけである。

この完了イベントは重要だ。キャッシュが新しい論理版に進んでいても、ルーターがまだ受け取っていない場合がある。通知は照会を促す合図にすぎない。ルーターの現在のシリアルが証明するのは、そのキャッシュから完全に受信した最後のデータ集合であって、他の場所で利用可能な最新状態ではない。

RFC 8210は時間と列も分離している。RefreshとRetryの間隔は次の照会を導く。Expireの間隔は、再び正常照会できない状態で以前のデータを使える上限を定める。その計時はEnd Of Data PDUを受信した時から始まる。シリアル番号を見ても、失効までの残り時間は分からない。

リポジトリのマニフェストもこの違いを裏付ける。RFC 9286は単調増加するmanifestNumberを使う一方、thisUpdateとnextUpdateという時刻を別に持ち、古いマニフェストや早すぎる発行を検査する。単一の公開系譜でも、列の順序と実時間上の有効性は異なる証拠である。

そのため鮮度台帳には、キャッシュ識別子、プロトコル版、Session ID、シリアル、End Of Dataの正常受信時刻、提示されたRefresh・Retry・Expire値、最後に正常だった上流検証の観測、トラストアンカーと方針の文脈を記録すべきだ。上流リポジトリの証拠があるなら、マニフェスト時刻は別の欄に保存し、RTRシリアルから推測してはならない。

この構造は不確実性も明示する。あるルーターが10時04分にセッションXのシリアル200を完全受信し、データが未失効だと証明できるとする。それでも、その事実だけでは別キャッシュにもっと新しい上流状態がなかったこと、全リポジトリが収束したこと、別ルーターが同時刻に同じペイロードを得たことまでは証明できない。

ここでは特定のキャッシュ障害や古い経路情報の事故を主張していない。論点は証拠の境界である。シリアルは、比較可能な系譜の中で状態を順序付けるからこそ有用だ。それを世界時計として扱えば、信頼性を支える範囲そのものを失う。

出典