要約

  • RFC 3609 は、上位の IP ホップとトンネル内の下位ホップを別の証拠対象とした。外側の経路が最後まで見えても、内部転送が証明されたことにはならない。
  • ホップごとの要求と応答、制御面と転送面、戻り経路、対応状況、権限、プローブの同等性を記録して初めて、診断結果の限界を説明できる。

観測が対象を変えてしまう

経路診断には直感的な罠がある。より多くの情報を求めてパケットに特別な印を付けるほど、通常のパケットとは違う扱いを受ける可能性が高まる。応答が豊富になっても、それが本番通信の経路ではなく、診断用例外の経路なら、精密さは正しさを増やさない。

RFC 3609 は 2003 年 9 月に Informational RFC として発行された。通常の traceroute を超えて、IP 転送面を検証し、トンネルの詳細を発見するためのアプリケーションと支援プロトコルの要件を示した文書である。完成した汎用プロトコルの標準化でも、普及状況の報告でもない。要件と実装、実装と配備、配備と個別の観測は、それぞれ別の証拠である。

文書が区別したのは、最上位の IP ホップと、トンネルに含まれる下位ホップだ。GRE、MPLS、IPsec、GMPLS、IP-in-IP、L2TP、さらに異なる方式を重ねた入れ子のトンネルが、一つの外側ホップに畳み込まれることがある。入口と出口が見えることは、その間の内部経路を知ることではない。

一つのホップとして見る権利、内部を見る権利

アプリケーションは、トンネルを単一の IP ホップとして表示する場合と、詳細に展開する場合を想定した。展開は利用者の希望だけで決まらない。要求に含まれるセキュリティトークンが追跡者の権限を表し、ネットワーク要素が返せる情報を判断する。識別、認可、資源消費の制御も要件に含まれる。

したがって、可視性は固定された属性ではなく、権限の下で成立する応答である。外部利用者が一つのホップを受け取り、内部運用者が種類、名称、識別子、端点、構成要素、区間の往復遅延を受け取っても、直ちに矛盾ではない。結果には、誰が、どの権限で、どの深さを要求し、どこまで開示されたかを残す必要がある。

詳細なフィールドにも限界がある。名称は所有権を証明しない。識別子は現在の設定を保証しない。往復遅延は方向別の遅延ではない。構成要素の列は次のフローの経路を保証しない。権限付きの制御面情報は有用だが、実パケットの転送記録とは別である。

壊れた先からも部分的な答えを得る

RFC 3609 は、壊れた経路やトンネルでも部分的な追跡を行うよう求めた。そのため、各プローブは一つの応答を引き出し、各応答は一つの上位または下位ホップを表すというモデルを採る。一個のメッセージに全ホップが追記する方式では、障害点を越えられないと、それ以前の観測まで一つの成否に巻き込まれる。

ホップ単位の受領記録は最後に分かった境界を残す。しかし無応答の意味は一つではない。転送障害、フィルタ、レート制限、未対応、開示拒否、戻り経路の欠如、実装不具合が候補になる。文書は、未対応装置を利用者に知らせた上で、その先のインターフェースを探索しようとすることを求めた。「失敗」「未対応」「非開示」「不明」を同じ記号にしてはならない。

戻り経路も実験条件である。追跡ホストは対象経路の入口と、詳細を要求する各トンネル入口へ到達できなければならない。内部装置は追跡ホストそのものではなく、トンネル入口へ戻る経路を持てばよい。業務パケットが進めても、診断応答を返す設計条件が欠ける場合がある。これは観測不能であって、直ちに転送不能ではない。

Router Alert を退けた理由

RFC 3609 は、IP Router Alert オプションを付けた一個のプローブで情報を集める案を退けた。IP オプション付きパケットを通常とは異なる経路や処理へ送るネットワークがあるためだ。測定のための変更が、測定したい経路そのものを変えてしまう。

同じ問題はオプションだけに限らない。パケット長、アドレス族、フローキー、DSCP、カプセル化、送信時刻でも分類は変わる。証拠には対象パケットの仕様を添え、本番フローとの同等性を説明する必要がある。同じ宛先に届いたという一点だけでは、同じ経路を試したことにならない。

プロトコルは無状態で、UDP による運搬が望ましいとされた。これは拡張性とサービス妨害への配慮である。無状態という設計は、連続するメッセージの間にノードが状態を保持しないという意味であり、応答内容の真正性、トポロジーの所有、配信結果を自動的に保証するものではない。

制御面と転送面は別々に語る

要求されたアプリケーションは、制御面、転送面、または両方を追跡できる。制御面ではホップの入口装置が詳細を報告する。転送面では、TTL 減少または類似の仕組みを持つトンネルについて、ホップの出口装置が報告する。どちらを選ぶかで証言者が変わる。

制御面の意図が整っていても、転送状態が古いことはある。転送面の応答は一つのプローブが通ったことを示しても、なぜその経路が選ばれたかを説明しない。一致は信頼を強めるが、二つの証拠を同一にはしない。設計、プログラム済み状態、観測された転送、サービス結果を分離して保存すべきである。

TTL の伝播と減少も別の性質だ。RFC 3609 は、内部 TTL が入口で外側へコピーされるかどうかにかかわらず、減少機構を持つトンネルの転送面を追えることを求めた。内部が見えた、または隠れたという事実だけで、設定の正誤は判断できない。

後続の仕様は具体的な観測手段を増やした。GRE と MPLS の仕様は外側の抽象が生まれる仕組みを示し、RFC 3443 は MPLS の TTL 処理を扱う。RFC 4379 と、その後継 RFC 8029 は MPLS LSP の ping と traceroute に独自の検証・応答規則を与えた。RFC 4884 と RFC 4950 は ICMP に追加情報を運ぶ方法を示す。どれも重要だが、一つの報告を全経路の権威へ変えるものではない。

線ではなく受領記録の束を作る

最小の記録は、送信元、宛先、フロー情報、長さ、オプション、マーキング、時刻から始まる。次に外側経路の観測点と方法を置く。トンネルを推定または開示した場合は、入口、出口、要求深度、権限、応答平面を加える。内部ホップごとにプローブ、応答、戻り条件、否定状態を保持する。配送、サービス実行、利用者結果は別の受領記録で検証する。

この構造なら、共通仕様は証拠の形式をそろえつつ、各ネットワークは機微な情報をローカルに統治できる。動いているコードが現実を作り、経路図はその一部を時点付きで投影する。完全に見える図ほど、自分が何を見ていないかを明示しなければならない。

情報源