解決策
ルートリークはトラフィックを意図しない経路へ流し、インターネットの大部分をオフラインに陥れたことがあるが、それを防ぐには手書きの誤りやすいルーティングポリシーが必要だった。RFC 9234はその意図をBGPに移す。Roleケイパビリティにより隣接関係についてネイバー間で合意でき、Only to Customer(OTC)属性は下方向にのみ伝播すべきルートをマークするため、準拠したルーターはオペレータポリシーなしでリークを拒否する。
RFC 9234の採用状況の測定は難しい。OTCは送信側がegressで、または受信側がingressで刻印できるため、公開された経路からは誰が設定したか分からない。RouteViewsとRIPE RISで異なるOTC値を数えると361の候補が見つかったが、フィラーがそれを膨らませる。OTCを経路の最初のASと照合すると9に減り、ヒューリスティクスで推定は36に上がった。Cloudflare自身のネットワークは曖昧さを取り除く。数千の直接ピアを持つため、BMPフィードでOTCがピアのASNと等しい経路を調べ、3か月間で67のASがこの属性を設定していることを見つけた。
剥ぎ取り側を見つけるため、Cloudflareは全ピアリング拠点からOTCを自身のASNに設定したIPv4とIPv6のプレフィックスを告知し、その後撤回して経路探索を誘発した。CloudflareのASNで終わる経路のうちOTCがないものは、直前のASによって剥ぎ取られたものであり、公開コレクターと自社ルーターからのUPDATEを解析して特定した。最初のパスで6つの脱落者、うち2つのTier-1、GTT(AS3257)とArelion(AS1299)が見つかった。信頼済みセットの反復でさらに9つが見つかった。この2つのTier-1はIPv4のOTC欠落経路の96.6%、IPv6の92.9%に現れ、全体ではIPv4の33.1%、IPv6の17%の経路がOTCを失った。
剥ぎ取りが重要なのは、OTCがオプションの推移的属性だからである。RFC 9234をサポートしないルーターでも転送しなければならず、剥ぎ取ると数ホップ先の準拠ASに対するリーク防止が無効になる。GTTとArelionはCloudflareに対し、過去のBGPエラー処理インシデント、その一つでは不正なOTCがセッションをリセットしたが、その後、防御的慣行として属性を削除したと述べた。Cloudflareは両社に調査結果を共有した。ArelionはほどなくOTCを保持する設定を展開し、公開データで検証可能である一方、GTTの設定は依然としてOTCを剥ぎ取っている。
達成したこと
OTCを刻印したテストプレフィックスを告知し、誰がそれを剥ぎ取るかを監視する
うまくいった理由
数千の直接ピアにより、CloudflareはOTCを1つのASに帰属できる観測点を得て、公開RIBダンプを汚染するingress/egressの曖昧さを取り除ける。
OTCをCloudflare自身のASNに設定したテストプレフィックスを告知し、その後撤回することで、最終ホップでOTCが欠けていれば、名前の挙がったネイバーが剥ぎ取ったとしか考えられない経路のストリームが生まれた。
RIBスナップショットではなくUPDATEメッセージを解析することで、告知と撤回の両フェーズを捉え、帰属アルゴリズム向けにはるかに多くの経路を浮かび上がらせた。
OTCはオプションの推移的属性であるため、少数の剥ぎ取りTier-1が、その背後にいる準拠ASのリーク防止を静かに壊していた。だからこそ2つのネットワークへの働きかけに労力を費やす価値があった。
各ネットワークに証拠を提示したことで、測定は変化に変わった。Arelionは会話から数日以内にOTCを保持し始めた。
応用できること
公開データで誰がプロトコルに従っているか分からないときは、多くの観測点から独自のテスト信号を発し、誰がそれを落とすかを見よ。直接観測は曖昧さを名前へ、名前を修正へと変える。
その後
ArelionはCloudflareが調査結果を共有した直後にOTC属性を保持し始め、その変更はCloudflareのテストプレフィックスに対するmonocleクエリを通じて公開コレクターデータで検証できる。GTTの設定は依然としてOTCを剥ぎ取っており、Cloudflareは、GTTが属性を保持するかBGP Rolesを設定するまで、AS3257を通じたRFC 9234のルートリーク防止を妨げ続けると述べている。Cloudflareは自社ルーター全体でRole設定の段階的な展開を開始しており、採用データをCloudflare RadarのRoutingセクションで公開する予定である。
出典をたどる
出典
- BGP Role model: tracking the adoption of RFC 9234 The Cloudflare Blog · blog.cloudflare.com ·