テーブルは木ではない
AS グラフの描き方について、一つも測る前に三つのルールを書き下した。本物のフルテーブルはその三つすべてを葬った。
Michel Wijnberg
最初の 12 本は、一つの強みに寄りかかっていました。自律システムの内側では、ルーター自身が 正解を持っているということです。モデルが何を主張していようと、実機に聞きに行けます。 第 3 回の AS をまたぐ経路ですら、私がログインできるネットワーク の中に収まっていました。このシリーズは、それが使えなくなったときに何が起きるかという話 です。扱う対象が、他人のネットワークだからです。
BGP テーブルはインターネットの絵ではありません。自分が立っている場所から見た インターネットの絵であり、そこから運用者が導く結論のほとんどは、誰もラベルを貼らないやり方 でその視点に依存しています。本物のテーブルが実際にどう見えるかについて 4 本、AS ビューを 作る者が必ず答えなければならない、いちばん素朴な問いから始めます。
どう描くのか。
私はこの問いに、何一つ測る前の設計文書で答えていました。自信をもって書いた三つのルール。 三つとも誤りでしたし、その外れ方のほうがルールそのものより面白いのです。
書き下した三つのルール
Osprey の AS フロービューは自分の AS を中央に置き、それ以外を距離順に周囲へ配置します。 設計は三つの性質を決めていました。
| # | ルール | 前提していたこと |
|---|---|---|
| 1 | 観測地平は円環である | ある距離より先でグラフは終わる |
| 2 | セクター幅は質量シェアに等しい | 各 AS の先行者は一つなので、円盤はきれいに分割できる |
| 3 | オリジンは葉である (暗黙) | トラフィックは端で生まれ、中央を通過する |
先に用語を一つ。ここから先の読み方が変わるからです。「先行者」も「親」も私の描画用語で あって、BGP が広告しているものではありません。 AS_PATH は順序つきの列であって、階層に ついては何も言っていません。私が先行者と呼ぶのは、実際に受け取った経路に沿って観測点に 一歩近い側の AS です。この関係は見る側が、見る側の位置から構成したものであり、それが議論 のすべてになります。
荷重を支えているのはルール 2 です。すべての AS がちょうど一つの先行者を通って自分に届くな ら、グラフは木になり、木は幅が量を表す入れ子のセクターとして描けます。あなたがこれまで見た BGP グラフの階層表現はどれもこの前提の上に乗っており、たいていそれを明言していません。
そこで、本物を測りました。
フルテーブルが語ること
フルの IPv4 テーブル。1,071,538 本のベストパス、経路のどこかに現れる AS は 79,168、上流 2 本を持つ観測点 1 つです。(オリジン AS はもっと少なく 78,538。二つの数は 別々の問いへの答えで、どちらもこのシリーズに出てきます。) 隣に置くのは DN42、まったく別 個の、一桁小さいネットワークです。どちらも実測で、どちらも同じコードにかけました。
| 前提 | DN42 | フルテーブル | 判定 |
|---|---|---|---|
| AS あたり先行者は一つ | 1,138 中 258 が複数、最大 29 | 79,168 中 22,371 (28.3%)、最大 202 先行者 | 偽 |
| エッジ質量は最重量の親から届く | 18.3% は届かない | 17.5% は届かない | 偽 |
| 閉路はない | 2 要素閉路が 41〜47 | 2 要素閉路が 240 | 偽 |
| オリジンは葉 | トランジット 192 中 187 (97.4%) が自らも起点 | 11,186 中 10,556 (94.4%) | 偽 |
| 経路は短い | 5 ホップ以上が 0.0% | 38.0%、最長 15 | 概念として誤り |
この二つの列は同じ種類の数字ではなく、そこが肝心です。フルテーブルは私が再取得できない フィードの一枚のスナップショットですが、DN42 は生きたネットワークで、いつでも問い直せます。 DN42 の列は 2026-08-23 に測った値です。その 6 日前、同じ問い合わせは off-tree 33.7%、 2 要素閉路 138、5 ホップ以上の質量 8.7% と答えていました。何も壊れておらず、コードも変わって いません。ピアが増え、また去り、グラフのあらゆる構造的性質がそれに合わせて動いただけです。 一部はもっと速く動きます。45 秒ごとに 2 時間サンプリングすると、2 要素閉路の数は 41 から 47 の あいだをさまよいます。あのセルが数値ではなく範囲なのはそのためです。この記事が実際に依拠している 三つの数、すなわちオリジン数、off-tree の割合、そして空の外側リングは、同じサンプル群のあいだ まったく動きませんでした。このシリーズの主張が、早々に、招かれもせずに顔を出したわけです。
2 行目をもう一度読んでください。階層として描かれるものすべてにとって、これが要です。 この視点から見える AS の 4 分の 1 以上が複数の先行者を持ち、そのうち一つは 202 を持って います。 そのノードを収められるセクター境界は存在しません。より良い幾何で解ける配置問題 ではなく、描こうとしている形のほうが存在しないのです。
ルール 2 に対して私が書いていた緩和策は「複数親のノードはセクター境界に置く」でした。 円盤全体に散らばる 202 の親を前にして、この指示には意味がありません。
それぞれの破綻が、絵から奪うものは違う
複数親は分割を壊します。 木のレイアウトは、セクターを内側へたどればそのトラフィックの 出どころが分かる、という含意を持ちます。エッジ質量の 17.5% が最重量の親を通らないグラフ では、セクターが語っているのは相対多数であって経路ではありません。断らずに描けば、多数派 が事実に化けます。
「オリジンは葉」は引き算を壊します。 内部ノードのほぼすべてが自前のプレフィックスを 起点にしています。トランジット AS の量を表示し、子の寄与を引けば自前の起点空間が分かる、 という読み方を許す描き方は、その 94% で誤ります。自前の起点はどの枠でも独立したものとして 描かねばならず、残りから暗に導かせてはいけません。
円環はそもそも距離ではありませんでした。 これは数値ではなく概念として間違えていた ものです。BGP は与えるどの経路についても AS_PATH 全体を与えます。ある距離から protocol が 切り詰め始める、ということはありません。経路が短くなることはありますが、遠いから短くなる のではありません。見えないものは地平の向こうにあるのではなく、理由があって不在なのです。
- そもそも自分に広告されなかった、
- 自分のポリシーが拒否した、
- アグリゲーターが
AS_SETに潰した、 - あるいは透過型ルートサーバーの向こうにあり、それは設計上 AS_PATH のホップを一切残しま せん (RFC 7947)。
どれも半径を持ちません。「ここから先はすべて」と書かれた円環は、protocol が支持しない 幾何の主張です。Osprey が代わりに描くのは 実際に観測された隣接関係の上での ホップ距離 であり、凡例も最小値をほのめかさず、まさにそう書いてあります。
これがこの記事の主題であるビューで、DN42 のフィードから描かれています。私が重視しているのは 上部の帯です。どんな木にも収まらない 18.3% の質量を含めて、自分が描いているグラフの形を明示 しており、絵が完全なものだと読者に思い込ませたままにしません。
「AS トポロジ」と呼ばれる二つのグラフ
二つを並べたとき面白いのは、違うことではありません。どこが違うかです。
| 性質 | DN42 | フルテーブル |
|---|---|---|
| 複数親の AS | 22.7% | 28.3% |
| 最重量の親を通らないエッジ質量 | 18.3% | 17.5% |
| 自らも起点となるトランジット | 97.4% | 94.4% |
| 5 ホップ以上の経路 | 0.0% | 38.0% |
この 4 行のうち 3 行は十分に近く、どちらかに合わせて調整したモデルでも、もう一方でそれなりに 見えてしまいます。4 行目は程度の差ではありません。DN42 では 5 ホップ以上に何一つ存在せず、 本物のテーブルでは質量の 3 分の 1 をゆうに超えます。小さいネットワークで検証したレイアウトは、 大きいほうで少しずれるのではありません。外側のリングが 空 であるグラフに対して検証され、 そのあと、外側のリングこそインターネットの大半が住む場所であるグラフへ出荷されるのです。
これは私が立てるつもりでいた論法より悪く、そしてラボが IGP について立てるのと同じ論法を一段上 に適用したものです。モデルに反論できない環境で、そのモデルは検証できません。3 行が一致すること こそが、4 行目を危険にします。小さなフィードは、自分のどの性質がたまたま一般化するのかを教えて くれません。
このシリーズが最初に置く拒否
このシリーズで何かを描く前に、一つの帰結を述べておく価値があります。
AS グラフの辺はパス隣接であって、ピアリングの主張では決してありません。 二つの AS が AS_PATH 上で隣り合っている。観測はそれで全部です。両者にセッションがあるという意味では なく、先ほどの透過型ルートサーバーがまさにその理由です。RFC 7947 によりサーバーはホップを 残さないので、そのクライアント二者は何の関係もないままパス隣接になります。
だからカードは「経路上の隣接であり、検証済みのピアリングセッションではない」と述べ、 すべての辺でそう述べます。
より強い主張ができる場所はちょうど一つ、自分の AS に触れる辺、 それも独立したセッション記録が裏づけるときだけです。それは絵の一つのリングであり、主張を 許しているのは位置ではなく第二の証拠です。それより外はすべて経路についての推論であり、 別のラベルを貼れば、他人のネットワーク同士の関係をでっち上げることになります。
テーブルが実際に渡してくれたもの
分けて書く価値があります。上で崩れたルールは、どれも同じ壊れ方をしたからです。
フィードがくれたのは三つ。プレフィックスとそのベストパス、各経路の AS_PATH、そしてそれが どのセッションで届いたか。観測はそれで全部です。
この記事のそれ以外は、すべて私が計算しました。先行者、ホップ距離、エッジ質量、木から外れる 割合、その AS が自らも起点かどうか、グラフそのもの。すべて構成物であり、一つの位置から作ら れており、位置が変われば数字はどれも変わります。
そして三つのものは、どの距離であれ BGP テーブルにそもそも入っていません。
- 二つの AS にセッションがあるかどうか、
- ここをどれだけのトラフィックが流れているか、
- そして上流が私に送らないことを選んだ経路。それらは、留め置かれたという痕跡すら残しま せん。
私が書き下した三つのルールはどれも、二列目についての主張を一列目についての主張の装いで 述べたものでした。「どの AS にも親が一つある」は観測のように聞こえます。それは描画の性質で あり、その違いを見えるようにしたのが計測でした。
要点
三つのルールを書き、計測が三つとも反証しました。これは良い結果であり、ルールが誤りうるほど 具体的だったからこそ得られたものです。
シリーズの残りが扱う、より広い主張はこうです。BGP テーブルは視点である。その形も、中心も、 バックボーンも、地平も、すべてフィードがどこから来ているかの産物です。それを地理のように 描くツールはどれも、一つの視点についての証拠しか持たないまま、インターネットについての 主張をしていることになります。
誠実な版は、観測したものを描き、それを生んだ視点を明記します。
そこで次回の問いが残ります。テーブルを階層として描くのをやめたあとも、リストの先頭に何を 置くかは決めねばなりません。そしてそれは、聞こえるよりずっと難しい問いです。
次回: 誰もがそれで並べ替える軸と、インターネット最大のネットワークが存在しない理由。 最大の AS は存在しない。