shiichan

経路リークを防ぐ BGP の「OTC 属性」、まさか Tier-1 ネットワークが消してた!

やっほー、しぃちゃんだよ!今日は Cloudflare のブログで見つけた、BGP のセキュリティに関するちょっと面白い調査結果を紹介するね。ネットワークの根っこの部分の地味な話に見えて、実は思わぬ発見があったみたいなの!

Cloudflare Blog blog.cloudflare.com

なにが発表されたの?

Cloudflare のブログで、経路リーク(route leak)を自動で防ぐための仕組み「BGP Role」と「Only to Customer(OTC)属性」——まとめて RFC 9234 という仕様——が、インターネット上でどれくらい普及しているかを Cloudflare 自身が調査した結果が公開されたよ。

しかも調べている途中で、大手 Tier-1 ネットワークが 2 社、通過する経路から OTC 属性をこっそり取り除いてしまっていることが分かったんだって。Cloudflare はこの 2 社に直接連絡を取って、改善に向けて働きかけを進めているの。

なぜ重要なの?

BGP のルーティングは、ネットワーク同士の「プロバイダーと顧客」「ピア同士」といった関係性の上に成り立っているの。ルートは基本的に上流(プロバイダー)から下流(顧客)へは自由に流れていいけど、顧客から受け取ったルートを別のプロバイダーに横流ししちゃうと、意図しない経路に大量のトラフィックが流れ込む「経路リーク」が起きちゃうんだって。実際に過去にはこうしたリークが原因でインターネットの広い範囲に影響する障害が起きたこともあるの。

今までは、この「上流から下流へしか流してはいけない」というルールを、各ネットワークがそれぞれ自前のフィルタリング設定で守るしかなかったの。しかもこの設定は複雑でミスが起きやすくて、経路リークが繰り返し起きてしまう一因になっていたんだって。

RFC 9234 は、この関係性そのものを BGP のプロトコルレベルで表現してしまおうっていう仕様なの。対応さえしていれば、運用者がポリシーを個別に書かなくても、ルーターが自動的にリークを検出して拒否できるようになるんだ。だからこそ、実際にどこまで普及しているかを正確に把握することが重要だったんだね。

これで何が変わるの?

Cloudflare は世界中に張り巡らせたピアリング網を使って、どのネットワークが OTC 属性をちゃんと送ってきているかを直接観測する、独自の調査方法を編み出したの。この調査の過程で、Tier-1 ネットワークの AS3257(GTT)と AS1299(Arelion)の 2 社が、通過するルートから OTC 属性を消してしまっていることが分かったんだって。

Tier-1 ネットワークはインターネットの中心に近い場所に位置しているから、ここで属性が消えてしまうと、その先にいる RFC 9234 対応ネットワークまで OTC 属性が届かなくなって、経路リーク検出の効果が薄まっちゃうの。

Cloudflare がこの 2 社に調査結果を伝えたところ、両社とも「過去に起きた BGP のエラーハンドリング絡みの障害を受けて、防御的にオプション属性を落とす設定にしていた」と認めたんだって。そのうち Arelion は、Cloudflare とのやり取りのあとすぐに設定を変更して、OTC 属性を保持するようになったことが確認できたの。一方 GTT の方は、記事執筆時点でもまだ OTC 属性を取り除く設定のままなんだって。

深く潜ってみよう

ここからは、BGP Role と OTC 属性の仕組み、そして調査方法をしぃちゃんが詳しく見ていくよ!

BGP Role って何? BGP セッションの両端が、お互いの関係性を明示的に合意する仕組みだよ。有効な組み合わせは実質 3 パターンしかなくて、

  • プロバイダー ⇔ カスタマー
  • ピア ⇔ ピア
  • ルートサーバー(RS)⇔ RS クライアント

のどれかを両端で正しく設定する必要があるの。もし双方が Role を送り合っていて、その組み合わせが上のどれにも当てはまらなかったら、BGP セッション自体が「Role Mismatch」エラーで確立できなくなるんだって。関係性の食い違いを、障害が起きる前にセッション確立の段階で弾けるのがポイントだね。

OTC 属性の役割: OTC は経路に付ける「タグ」のようなもの。ルートが上向き(顧客からプロバイダー方向)の移動をやめた瞬間に、その AS の番号が書き込まれるの。一度 OTC が付いたルートは、それより下流(顧客方向)にしか流れちゃいけないというルールになっていて、ルーターはこれを見るだけで「このルートをプロバイダーやピアに流したらリークだ」と機械的に判断できるんだって。しかも OTC は「オプションだけど transitive(素通りさせる)属性」だから、対応していないルーターでも本来は中身を書き換えずに次へ渡すことになっているの。

普及状況をどう調べたの?: まず RouteViews や RIPE RIS が公開している BGP 収集データを分析したんだけど、単純に OTC の値の種類を数えると 361 の AS が候補として出てきちゃったんだって。でもこれは、経路を受け取った側が欠けている OTC を代わりに埋めてしまうケースが混ざっているせいで、水増しされた数字なの。収集データに対して直接 OTC を設定していると確実に言える AS まで絞り込むと 9 、経路の連なりを追跡する手法を追加しても、確度高く「設定している」と言えたのは合計 36 の AS にとどまったんだって。

そこで Cloudflare は、自社の大規模なピアリング網を活用して、BMP(BGP Monitoring Protocol)で直接受け取ったルートの OTC 値を、送信元のピア AS 番号と突き合わせる方法を採用したの。直近 3 か月分のデータを調べたところ、67 の AS が OTC 属性を設定していることが確認できたんだって。内訳を見ると、ルートサーバーや個人運用のネットワークの比率が目立って高かったみたい(オープンソースの BGP 実装を使っていることが多く、新機能への対応が早いからじゃないかと分析されているよ)。

OTC を消してしまうネットワークを探す実験: Cloudflare は IPv4・IPv6 それぞれ 1 個ずつのテスト用プレフィックスを用意して、OTC=13335(Cloudflare の AS 番号)を付けた状態で、Anycast で世界中の拠点から広告したの。世界に伝播したのを確認したあとにこのプレフィックスを取り下げて、経路が探索し直される「パスハンティング」をあえて引き起こし、より多くの経路パターンを観測できるようにしたんだって。

その結果、Cloudflare の直後に位置する AS の中から OTC を落としている AS が 6 つ見つかって、そのうち 2 つが Tier-1 の AS3257(GTT)と AS1299(Arelion)だったの。さらに経路をたどる手法を繰り返して、追加でもう 9 の AS が OTC を落としていることも判明したんだって。

全体で見ると、OTC が付いていない経路の割合は IPv4 で 33.1%、IPv6 で 17% にものぼったの。しかもそのうちの 96.6%(IPv4)・92.9%(IPv6)が、この GTT か Arelion のどちらか(または両方)を経由した経路だったんだって。GTT は一貫して OTC を落とし続けていたのに対して、Arelion は IPv4 で 71.4%、IPv6 で 40.7% の経路でだけ OTC が消えていて、ネットワーク内で対応がバラついていたみたい。

ベンダーの対応状況(2026 年 8 月時点):

  • Junos OS / Junos OS Evolved: 対応済み
  • RouterOS: 対応済み
  • BIRD: 対応済み
  • OpenBGPD: 対応済み
  • FRR: 対応済み
  • Cisco IOS XR: 26.4.1 リリースで対応予定
  • Arista EOS / Nokia SR OS / Huawei / Extreme SLX-OS / ArcOS / GoBGP / ExaBGP: 未対応

対応済みのベンダーを使っている場合でも、Role の設定変更には BGP セッションのリセットが必要になるから、メンテナンスウィンドウでの作業になる点は注意が必要だって。ちなみに Cloudflare 自身も、すでに自社のルーター群への RFC 9234 設定の展開を段階的に始めているんだって。

まとめ

  • 経路リークを自動で防ぐ BGP の仕様「RFC 9234」(BGP Role + OTC 属性)の普及状況を、Cloudflare が独自の観測方法で調査したよ
  • 調査の過程で、Tier-1 ネットワークの GTT(AS3257)と Arelion(AS1299)が OTC 属性を経路から消していたことが発覚したよ
  • OTC が消えている経路のうち 96% 以上がこの 2 社経由で、Arelion はすでに修正済み・GTT は記事執筆時点でまだ対応中だよ
  • Cloudflare 自身の観測では、直近 3 か月で OTC を設定している AS は 67 に留まっていて、普及はまだまだこれからみたい
  • BGP ルーターを運用しているネットワークオペレーターの人は、自分のベンダーが対応しているかチェックして、Role の設定を検討してみてね