要約

  • RFC 9884 は、出口が PSID ラベルと SR Policy、Candidate Path、Segment List のいずれかとの対応を検証するための LSP Ping 拡張を定めた。
  • 一つの PSID が複数の Segment List の一部を表す場合、リストごとに別の Ping が必要になる。一つのメッセージに複数の新しい sub-TLV を入れても、処理されるのは最初だけだ。
  • PSID を処理しない通過ノードはこの検証の証人にならないため、LSP Traceroute は対象外である。ECMP では PSID が示すのは SID リストであり、実際の転送経路ではない。

この仕組みを理解するには、出口で何が失われているかを見るとよい。SR-MPLS の headend は順序付きの命令をラベルスタックに書き込む。転送中にラベルは交換され、取り除かれる。出口に着くころには元のスタックが残らず、受信パケットだけからどの SR 経路だったかを区別できない場合がある。

RFC 9545 の PSID は、その出口にだけ意味を持つローカルラベルである。入口は最後の経路ラベルの直後に置き、出口が pop する。計数や時刻の照合、双方向経路の関連付け、保護処理に使えるが、その前提はラベルが正しい管理対象に結び付いていることだ。

検証範囲を先に選ぶ

RFC 9884 は、その結び付きを Target FEC Stack で問い合わせる。送信者は headend またはトポロジを把握する監視システムで、応答者は SR 経路の endpoint でなければならない。

問い合わせには三つの粒度がある。SR Policy なら Headend、Color、Endpoint を照合する。Candidate Path なら Protocol-Origin、Originator、Discriminator も加わる。個別の Segment List なら Segment-List-ID まで入る。IPv4 と IPv6 にそれぞれ形式があるため、新しい sub-TLV は合計六つになる。

粒度は単なる表示の違いではない。RFC 9256 では Policy、Candidate Path、Segment List は階層の別々の要素である。Policy の一致から、ある本番フローが選んだリストを推定してはならない。Candidate Path の一致を、その配下にある全リストの成功として扱うこともできない。

特に、PSID が複数リストのうち一部をまとめる場合、RFC 9884 は各リストに一通ずつ LSP Ping を要求する。複数の PSID sub-TLV を一つに詰めても、先頭しか評価されない。未送信のリストは不明であり、成功ではない。

応答コードの主語を失わない

不正な形式にはコード 1、提示した FEC とラベルの対応がなければコード 10、すべての対応検査を通ればコード 3 が返る。コード 3 の意味は、応答ルータが指定深度の FEC に対する出口だというものだ。

これは強い運用情報である。コントローラと出口の設定ずれを見つけ、単なる IP 到達性より具体的な対応関係を検査できる。しかし、サービス配送、認可、SLA、全メンバーの状態までを採点するコードではない。

途中を見なかった試験

RFC 9884 は PSID 用の LSP Traceroute を定めない。通過ノードが PSID 処理に関与しないからである。出口まで届いたことと、途中の各ノードが明らかになったことは別だ。

RFC 9545 は ECMP についてさらに慎重である。同じ SID リストでもパケットは複数の実経路へ分かれ得る。そのとき PSID はリストを識別できても、個々のパケットが通った線を識別できない。PSID の追加自体がハッシュ結果を変え、既存フローとは別の分岐へ探査を送る可能性もある。

したがって、意図した Policy、選択中の Candidate Path、リスト、PSID の対応、探査の通過経路、本番通信の通過経路と結果を分離して保存すべきである。RFC 8403 のようなトポロジ連携や RFC 8029 の traceroute は証拠を補えるが、出口応答の内側に含まれてはいない。

返信を受け入れる側も判断する

PSID sub-TLV は Reverse-Path Target FEC Stack や Reply Path にも載せられる。endpoint が echo reply で返し、headend が同じ妥当性検査を行う。失敗すれば返信を捨て、記録または報告すべきだが、endpoint の return code は書き換えない。

応答なし、形式不正、出口側不一致、headend 側拒否は異なる事象である。すべてをタイムアウト欄に落とすと、障害の位置だけでなく誰がどの判断をしたかも消える。

出典