BGP のベストパス選択では、4 番目の比較項目で AS_PATH の短い経路を優先します。Cisco ルータでは、bgp bestpath as-path ignore を設定すると、この AS_PATH の長さの比較を飛ばせます。この記事では、この設定をしたときにベストパスがどう変わるかを確認します。
- 既定の動作(AS_PATH の短い経路が選ばれる)を確認する
bgp bestpath as-path ignoreを設定する- AS_PATH を比べず、次の Origin でベストパスが決まることを確認する
BGP のベストパス選択の優先順位
Cisco ルータの BGP は、次の順番で経路を比べ、差がついた時点でベストパスを決めます。
| 順番 | 優先する経路 |
|---|---|
| 1 | Weight が最も大きい |
| 2 | Local Preference が最も大きい |
| 3 | 自分で生成した(network、aggregate-address、再配布) |
| 4 | AS_PATH が最も短い |
| 5 | Origin が最も小さい(IGP < EGP < Incomplete) |
| 6 | MED が最も小さい(通常は、隣接 AS が同じ経路どうしでだけ比べる) |
| 7 | iBGP より eBGP |
| 8 | ネクストホップまでの IGP メトリックが最も小さい |
| 9 | (BGP マルチパスが有効なら、複数の経路をルーティングテーブルに入れるか判断する) |
| 10 | どちらも eBGP なら、先に受信した(古い)経路 |
| 11 | BGP ルータ ID が最も小さいルータからの経路 |
| 12 | クラスタリストが最も短い経路 |
| 13 | ネイバーのアドレスが最も小さい経路 |
Cisco ルータでは、bgp bestpath as-path ignore を設定すると、4 番目の「AS_PATH が最も短い」を飛ばして、5 番目の Origin 以降で比べるようになります。
ベストパス選択について理解を深めるには、次の記事を先に読むのがおすすめです。
>> 参考:【BGP】ベストパス選定(PART1 アルゴリズム)
>> 参考:【BGP】ベストパス選定(PART2 動作確認)
AS_PATH の比較
次の構成で検証します。AS 23 の R2 と R3 から同じ経路(23.23.23.23/32)を広告し、R6 が R2 と R3 のどちらをベストパスに選ぶかを見ていきます。
R6 が R2、R3 から学習している 23.23.23.23/32 の属性は、次のとおりです。検証のため、あらかじめ属性を変える設定をしています。
| 順番 | 比較項目 | R2 からの経路 | R3 からの経路 |
|---|---|---|---|
| 1 | Weight(大きい方) | 32768 | 32768 |
| 2 | Local Preference(大きい方) | 100 | 100 |
| 3 | 自分で生成した経路 | ― | ― |
| 4 | AS_PATH(短い方) | 23 | 23 23 23 23 23 |
| 5 | Origin(IGP < EGP < Incomplete) | incomplete | IGP |
| 6 | MED(小さい方) | 0 | 100 |
AS_PATH の短い経路が選ばれる
Weight と Local Preference は同じで、自分で生成した経路でもないため、4 番目の AS_PATH で差がつきます。AS_PATH が短い R2 の経路がベストパスになります。
R6
R6# show ip bgp
BGP table version is 2, 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.26.2 0 32768 23 ?
* 192.168.36.3 100 32768 23 23 23 23 23 I
R6# show ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 2
Paths: (2 available, best #1, table default)
Advertised to update-groups:
5
Refresh Epoch 2
23
192.168.26.2 from 192.168.26.2 (22.22.22.22)
Origin incomplete, metric 0, localpref 100, weight 32768, valid, external, best
Refresh Epoch 2
23 23 23 23 23
192.168.36.3 from 192.168.36.3 (3.3.3.3)
Origin IGP, metric 100, localpref 100, weight 32768, valid, external
| 表示 | 意味 |
|---|---|
| 23 ? | R2 からの経路。AS_PATH は 23 の 1 つで、Origin は incomplete(?) |
| 23 23 23 23 23 | R3 からの経路。AS_PATH は 5 つで、Origin は IGP |
AS_PATH の比較を飛ばす(bgp bestpath as-path ignore)
bgp bestpath as-path ignore を設定する
AS_PATH の長さを比べないように設定します。
R6
R6(config-router)# bgp bestpath as-path ignore
検証した環境では、bgp bestpath as-path ignore は ? のヘルプに表示されない隠しコマンドでした。入力すれば設定できます。
BGP セッションをクリアします。
R6
R6# clear ip bgp * R6# %BGP-5-ADJCHANGE: neighbor 192.168.26.2 Down User reset %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.26.2 IPv4 Unicast topology base removed from session User reset %BGP-5-ADJCHANGE: neighbor 192.168.36.3 Down User reset %BGP_SESSION-5-ADJCHANGE: neighbor 192.168.36.3 IPv4 Unicast topology base removed from session User reset %BGP-5-ADJCHANGE: neighbor 192.168.26.2 Up %BGP-5-ADJCHANGE: neighbor 192.168.36.3 Up
Origin でベストパスが決まる
BGP テーブルを見ると、ベストパスが R3 の経路に変わっています。AS_PATH の比較を飛ばしたので、次の 5 番目の Origin で比べます。Origin は R2 の経路が incomplete、R3 の経路が IGP なので、IGP の R3 の経路がベストパスになります。
R6
R6# show ip bgp
BGP table version is 2, 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 100 32768 23 23 23 23 23 i
* 192.168.26.2 0 32768 23 ?
R6#show ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 2
Paths: (2 available, best #1, table default)
Advertised to update-groups:
6
Refresh Epoch 1
23 23 23 23 23
192.168.36.3 from 192.168.36.3 (3.3.3.3)
Origin IGP, metric 100, localpref 100, weight 32768, valid, external, best
Refresh Epoch 1
23
192.168.26.2 from 192.168.26.2 (22.22.22.22)
Origin incomplete, metric 0, localpref 100, weight 32768, valid, external
AS_PATH の長さは、経路がいくつの AS を通ってきたかを表す大事な比較項目です。bgp bestpath as-path ignore を使うと、遠回りの経路が選ばれることがあるので、影響を確かめてから使ってください。
まとめ
| 設定 | ベストパスが決まった比較項目 | この構成でのベストパス |
|---|---|---|
| なし(既定) | 4. AS_PATH が最も短い | R2(AS_PATH 23) |
bgp bestpath as-path ignore | 5. Origin が最も小さい | R3(Origin IGP) |
コメント