前話で、AS の中で外の経路を配布する仕組み = iBGP までたどり着いた。境界ルータが eBGP で受け取った経路は、これで AS の中の BGP ルータ全員に行き渡る。OSPF / iBGP / eBGP がそれぞれ何を担うか — 中のリンクの状態を共有する / 外から来た経路を AS 内部へ配る / AS 境界で経路を交換する — も、フルメッシュの最小モデルも、ひととおりつかめた。
けれど前話の最後で、ひとつの問いが残っていた。
外から受け取った経路は、自分の
ASの中で回せるようになった。ASの中のBGPルータ全員が、外の経路を持っている状態になった。けれど、その経路がどこから来て、どのASを通ってきたのかは、どうやって伝えられているのだろう。隣のASだけから来たのか、その隣のASを経由してきたのか。経路情報には、どこから来たかの目印が付いているのだろうか。
経路は、経由 AS の列(AS_PATH 属性)を伴って届く。3 つの観測面で、BGP の動作の全体像が読み解ける。
経路情報に『経由した AS の列』が付いていれば、隣の AS だけから来た経路と、その隣の AS を経由してきた経路は、道のりの長さが違って見える。同じ宛先が複数の隣接 AS から届いたとき、どちらが近くてどちらが遠いのかを、AS_PATH から構造的に読み取れる。


考えてみよう
外から受け取った経路は、自分の
ASの中で配布できるようになった。ASの中のBGPルータ全員が、外の経路を持っている状態になった。けれど、その経路がどこから来て、どのASを通ってきたのかは、どうやって伝えられているのだろう。経路情報には、どこから来たかの目印が付いているのだろうか。自分なりの予想を立ててみてほしい。
1. 経路はどこから来たのか — AS_PATH 属性が刻む経由 AS の列
BGP の経路情報には、宛先(プレフィックス)と一緒に、いくつかの付加情報が付いている。そのうちのひとつが、経路がどんな AS を経由してきたかを記録した『経由 AS の列』だ。
この列を AS_PATH と呼ぶ。経路情報に付随する、AS 番号の並びだ。
経路が eBGP セッションを通って隣の AS に流れていくたびに、送り出す側の AS が自分の AS 番号を AS_PATH の先頭に書き加える。受け取った側から見ると、AS_PATH の先頭が直近の AS、後ろにいくほど遠い AS、という順序で読める。
あなたの AS 65001 の境界ルータ R3 が、隣の AS 65002 の境界ルータ R-X から eBGP で経路 198.51.100.0/24 を受け取ったとする。この経路を生み出したのが AS 65002 自身だった場合、R3 に届いた時点での AS_PATH は「65002」。直近の AS 番号が、ひとつだけ並んでいる。
別の道のりで届いた場面を考える。AS 65002 を源とする経路を、AS 65003 が自分を経由して AS 65001 に伝えてきたとする。R-Y(AS 65003 の境界ルータ)から R3 に届いた時点で、AS_PATH は「65003 65002」。先頭が AS 65003(直近の隣)、後ろに AS 65002(より遠い源)となる。
経路が AS をひとつ越えるたびに、AS_PATH の先頭に AS 番号が積み上がっていく。受け取った側が AS_PATH を読めば、その経路がどんな道のりを辿ってきたかが、構造的に見えてくる。
これが、経路の証跡だ。


2. 同じ宛先が、別の道のりで届いたら
同じ宛先 198.51.100.0/24 が、AS 65002 と AS 65003 の両方から AS 65001 に届く場面を想像してほしい。それぞれの経路には、異なる AS_PATH が付いている。
AS 65002経由(R-X から)の経路:AS_PATH= 「65002」AS 65003経由(R-Y から)の経路:AS_PATH= 「65003 65002」
AS 65001 から見ると、同じ宛先に対して 2 つの候補がある。AS_PATH を読み比べると、違いが構造的に見える。
前者は経由した AS が 1 つ。後者は経由した AS が 2 つ。通ってきた AS の数だけで見ると、前者のほうが短い道のりに見える。
同じ宛先に対して 2 つの候補があるとき、転送先として実際に採用されるのはどちらだろうか。複数の経路が届いたとき、どれを best として選ぶかには複数の物差しがあり、効く順番が決まっている。AS_PATH の長さも物差しのひとつだが、それだけで決まるわけではない。物差しの全体像は、別の文脈で扱う。
AS_PATH は、経路の出自を読むための最重要の手がかりだ。
3. 3 つの観測面で BGP を読む
AS という管理境界、IGP の前提が崩れる場所、隣の AS との eBGP セッション確立、AS の中での外経路配布、AS_PATH — ここまでの仕組みは、実機の CLI 出力から読み解ける。
前のシリーズでは、OSPF を読むとき 3 つの観測面を並べた。
show ip ospf neighborで隣接の現在地(誰と関係が成立しているか)show ip route ospfで経路の現在地(SPF が出した最短経路)debug ip ospfで動きの観測(Hello / LSA / SPF が動いている瞬間)
BGP でも、コマンド名は変わるが、視点の組み立て方は同じだ。
show ip bgp summary — 隣接の現在地
1 つ目の観測面は show ip bgp summary。隣の AS の境界ルータと、こちらの境界ルータが、両側の明示的な設定と合意によってセッションを成立させたかどうかを確認する。誰と peer が成立しているか、その peer とのセッションがいま生きているかが並ぶ。OSPF の show ip ospf neighbor と役割は同じだ。
show ip bgp — 経路の出自と候補一覧の現在地
2 つ目の観測面は show ip bgp。受け取った経路の集合と、それぞれの AS_PATH を確かめる。
ここでしか読めないのが AS_PATH だ。経路がどんな AS を通ってきたかの列が並ぶ。同じ宛先に対する複数の候補も、ここで一覧として読める。AS_PATH の長さ(AS hop 数)の上では、短い方が少ない道のりとなる。
OSPF では 3 つの観測面の中央に SPF が出した最短経路(show ip route ospf)があった。BGP では中央に経路の出自と候補一覧がある。プロトコルの仕組みが違うので、中央の観測面で読める出力も変わる。
show ip route bgp — 実際に転送に使われる経路の現在地
3 つ目の観測面は show ip route bgp。ルーティングテーブルのうち、BGP が学習して転送先として実際に採用された行(source code = B)を確かめる。
受け取った候補のなかから、物差しによって選ばれた 1 つが並ぶ。ルータが実際にパケットを転送するときに参照する行であり、OSPF の show ip route ospf と同じ役割を持つ。
3 つを並べて読む
- 隣接の現在地(
show ip bgp summary)で、誰と peer が成立しているかを確認 - 経路の出自と候補一覧の現在地(
show ip bgp)で、受け取った経路とAS_PATHを読む - 実際に転送に使われる経路の現在地(
show ip route bgp)で、採用された行を読む
1 つの観測面だけでは、隣接・候補・採用行のどれかが欠ける。3 つを並べて初めて、BGP の動作の全体像が読める。
距離だけで測るプロトコル(RIP)から、リンクの状態を共有するプロトコル(OSPF)、そして AS を越えるプロトコル(BGP)へ。プロトコルによって 3 つの観測面で読めるものは変わるが、3 つの観測面を並べて全体像を読むという視点の組み立て方は持続する。


4. シリーズ通読の総括 — AS の発見 / IGP の限界 / セッション確立 / AS 内部配布 / 経路証跡
本シリーズで身につけた仕組みを、5 つの観測単位で振り返る。
AS という管理境界の発見
世界はひとつの経路情報空間ではない。それぞれの管理組織が、自分の運用ルールで動く範囲を持つ。世界は、たくさんの AS が境を持って隣り合う形で動いている。
IGP の前提が崩れる場所
リンクの状態を全員で共有するという OSPF の前提は、運用組織が同じであるときだけ成り立つ。隣の AS は内側のリンクの状態を見せないし、世界規模ではデータベースのサイズも前提を超える。AS の境では、別の発想が必要になる。
隣の AS と明示的に合意するセッション確立
AS の境を越える別の発想が、両側合意のセッション確立(eBGP)だった。両側で相手の IP と AS 番号を明示的に設定し、両方の意思表示が一致して初めて成立する。
AS の中で外の経路を配布する仕組み
セッションで受け取った経路は、AS の中の他のルータにも届ける必要がある。OSPF は中のリンクの状態を共有する仕事として設計されているため、外から来た経路を運ぶ仕事は担えない。代わりに、AS の中の BGP ルータ同士でもう一段のセッションを結ぶ(iBGP)。OSPF(中のリンク状態の共有)、iBGP(外から来た経路の AS 内部配布)、eBGP(AS 境界の経路交換接点)は、それぞれ別の仕事を分担している。
経路が通ってきた AS を読む視点
経路には『経由 AS の列』(AS_PATH)が付いている。3 つの観測面 — show ip bgp summary / show ip bgp / show ip route bgp — を並べることで、動作の全体像を読み解ける。
この 5 つが、BGP Essential の観測単位そのものだ。


実機を前にしたときの 3 つの観測面を読む順序と、各段階での判定軸
経路には AS_PATH = 経由 AS の列が付いている。先頭が直近の AS、後ろにいくほど遠い AS。show ip bgp の出力で読み比べれば、同じ宛先に複数の候補が届いたときの道のりの違いが見える。
実機で BGP が動いているルータを前にしたら、show ip bgp summary → show ip bgp → show ip route bgp の順に出力を並べる。1 つだけでは、隣接・候補・採用行のどれかが欠ける。
BGP Essential の射程は、ここまで。AS の境界の周りには、まだ 2 つの方向が見えている。
ひとつは、複数の経路が届いたときに、どれを best として選ぶかの物差しの世界。AS_PATH の長さは物差しのひとつだが、それだけで決まるわけではない。物差しは複数あって、効く順番がある。
もうひとつは、成立した eBGP セッションが動かないときの切り分けの世界。隣の AS とセッションを成立させようとして立ち上がらない場面。立ち上がっていたセッションが突然落ちる場面。両側の設定と合意の前提が崩れた場所として観察される。
その 2 つの世界は、別の射程で扱う。