読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
BGP の経路には、パス属性と呼ばれる情報がいくつも付いています。Origin 属性はその1つで、経路がどのような方法で BGP に入ったかを示します。
この記事では、Origin 属性の3つの値と、ベストパス選択の中で Origin が比較される順番を整理します。そのうえで、Cisco ルータで同じプレフィックスを network コマンドと redistribute コマンドで広告し、受け取ったルータがどちらを選ぶかを確認します。
- Origin 属性の3つの値(IGP、EGP、Incomplete)と、
show ip bgpでの表示 - ベストパス選択の中で Origin が比較される順番
networkとredistribute connectedで広告した経路の違い(実機での確認)
Origin属性とは
Origin 属性は、経路を最初に BGP へ入れたルータが付ける属性です。すべての BGP ルータが認識し、経路を載せた UPDATE メッセージに必ず含める属性(Well-known Mandatory)の1つです。途中のルータは、基本的に値を変えずに次のピアへ渡します。
| 値 | show ip bgp の表示 | どのように BGP に入った経路か |
|---|---|---|
| IGP | i | network コマンドで BGP に入れた経路 |
| EGP | e | EGP(BGP より前に使われていた、同じ名前の古いプロトコル)で学習した経路。現在はほとんど見かけない |
| Incomplete | ? | redistribute コマンドで再配布した経路など、生成元がわからない(不完全な)経路 |
Origin が IGP でも、OSPF や EIGRP などの IGP から学習した経路という意味ではありません。network コマンドで AS の中から BGP に入れた経路という意味です。OSPF の経路を redistribute ospf で BGP に入れると、Origin は Incomplete になります。
Origin属性の優先順位
同じプレフィックスに複数の経路があるとき、Origin は次の順で優先されます。
| 優先順位 | Origin |
|---|---|
| 1(最も優先) | IGP(i) |
| 2 | EGP(e) |
| 3 | Incomplete(?) |
ただし、Origin はベストパス選択の最初に比べる項目ではありません。Cisco ルータは次の順番で経路を比べ、差が付いた時点で決めます。Origin が比べられるのは、それより前の項目がすべて同じだったときだけです。
| 順番 | 比べる項目 | 優先する経路 |
|---|---|---|
| 1 | Weight(Cisco 独自) | 大きい方 |
| 2 | LOCAL_PREF | 大きい方 |
| 3 | 自分で生成した経路か | 自分で生成した経路(network、redistribute など) |
| 4 | AS_PATH の長さ | 短い方 |
| 5 | Origin | IGP > EGP > Incomplete |
| 6 | MED | 小さい方 |
| 7 以降 | eBGP か iBGP か、Next Hop までの IGP メトリック、ルータID など | — |
検証の概要
AS23 の2台のルータ(R2 と R3)から、同じプレフィックス 23.23.23.23/32 を別の方法で AS6 の R6 へ広告します。R6 で、2つの経路の Origin と、どちらがベストパスになるかを確認します。
- R2:
networkコマンドで広告する(Origin は IGP になる) - R3:
redistribute connectedコマンドで広告する(Origin は Incomplete になる) - R6:R2 と R3 の両方から経路を受け取り、ベストパスの選択結果を確認する
構成
R2 と R3 はどちらも Loopback23 に 23.23.23.23/32 を設定し、R6 とそれぞれ eBGP でピアを張ります。
設定
R2:network コマンドで広告する
R2
R2(config)# int loopback 23
R2(config-if)# ip add 23.23.23.23 255.255.255.255
R2(config)# router bgp 23
R2(config-router)# network 23.23.23.23 mask 255.255.255.255
R2(config-router)# neighbor 192.168.26.6 remote-as 6
network コマンドは、指定したプレフィックスと同じ経路(ここでは Loopback23 の connected ルート)がルーティングテーブルにあるときに、その経路を BGP に入れます。この経路の Origin は IGP になります。
R3:redistribute connected で広告する
R3
R3(config)# int loopback 23
R3(config-if)# ip add 23.23.23.23 255.255.255.255
R3(config)# router bgp 23
R3(config-router)# redistribute connected
redistribute connected は、R3 の connected ルートを BGP に再配布します。再配布した経路の Origin は Incomplete になります。
- 上の設定には書かれていませんが、R3 にも R2 と同じように R6 とのネイバー設定(
neighbor 192.168.36.6 remote-as 6)が必要です。 redistribute connectedは、Loopback23 だけでなく R3 のすべての connected ルート(R6 との接続ネットワークなど)を BGP に入れます。広告する経路を絞りたい場合は、redistribute connected route-map <名前>のように route-map を付けます。
R6:R2 と R3 から経路を受け取る
R6
R6(config)# router bgp 6 R6(config-router)# neighbor 192.168.26.2 remote-as 23 R6(config-router)# neighbor 192.168.36.3 remote-as 23
R6 は、R2(192.168.26.2)と R3(192.168.36.3)の両方と eBGP でピアを張ります。
動作確認
BGP テーブルで Origin を確認する
R6 の BGP テーブルを確認します。R2 と R3 の両方から 23.23.23.23/32 を受け取っています。
R6
R6# show ip bgp
BGP table version is 9, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
* 23.23.23.23/32 192.168.36.3 0 0 23 ?
*> 192.168.26.2 0 0 23 i
| 表示 | 意味 |
|---|---|
| Origin codes: i – IGP, e – EGP, ? – incomplete | Path 列の最後の文字が Origin を表す |
| 23 ? | R3(Next Hop 192.168.36.3)からの経路。AS_PATH は 23、Origin は Incomplete |
| 23 i | R2(Next Hop 192.168.26.2)からの経路。AS_PATH は 23、Origin は IGP |
| *> | * は有効な経路、> はベストパス。R2 からの経路がベストパスになっている |
| Network 列が空欄 | 上の行と同じプレフィックス(23.23.23.23/32)の別の経路 |
経路の詳細でベストパスを確認する
23.23.23.23/32 の詳細を確認します。
R6
R6# show bgp 23.23.23.23 BGP routing table entry for 23.23.23.23/32, version 4 Paths: (2 available, best #2, table default) Advertised to update-groups: 1 23 192.168.36.3 from 192.168.36.3 (3.3.3.3) Origin incomplete, metric 0, localpref 100, valid, external rx pathid: 0, tx pathid: 0 23 192.168.26.2 from 192.168.26.2 (2.2.2.2) Origin IGP, metric 0, localpref 100, valid, external, best rx pathid: 0, tx pathid: 0x0
| 表示 | 意味 |
|---|---|
| 2 available, best #2 | 経路が2つあり、2番目に表示されている経路(R2 から)がベストパス |
| Origin incomplete | R3(192.168.36.3)からの経路の Origin |
| Origin IGP | R2(192.168.26.2)からの経路の Origin |
| metric 0 | MED の値。どちらも 0 |
| localpref 100 | LOCAL_PREF の値。どちらも既定値の 100(eBGP で受け取った経路は、show ip bgp の LocPrf 列には表示されない) |
| external, best | eBGP で受け取った経路で、ベストパスに選ばれている |
R2 の経路が選ばれた理由
2つの経路を、ベストパス選択の順番に沿って比べると次のようになります。Weight、LOCAL_PREF、AS_PATH の長さはどちらも同じで、どちらも R6 が自分で生成した経路ではありません。そのため5番目の Origin で差が付き、IGP の R2 の経路がベストパスになりました。
AS_PATH が短い経路や LOCAL_PREF が大きい経路が別にあれば、Origin が Incomplete でもそちらが選ばれます。Origin が結果を決めるのは、この検証のように前の項目がすべて同じ場合です。Cisco ルータでは、route-map の set origin で Origin の値を書き換えることもできます。
まとめ
| 広告したルータ | 広告の方法 | Origin | Path 列 | R6 での結果 |
|---|---|---|---|---|
| R2 | network 23.23.23.23 mask 255.255.255.255 | IGP | 23 i | ベストパス |
| R3 | redistribute connected | Incomplete | 23 ? | ベストパスではない |
Origin 属性は、経路がどのような方法で BGP に入ったかを示し、IGP > EGP > Incomplete の順で優先されます。ただし比べられるのは、Weight、LOCAL_PREF、AS_PATH の長さなどがすべて同じときです。
コメント