【BGP】ベストパス選定(bgp bestpath as-path ignore )

BGP のベストパス選択では、4 番目の比較項目で AS_PATH の短い経路を優先します。Cisco ルータでは、bgp bestpath as-path ignore を設定すると、この AS_PATH の長さの比較を飛ばせます。この記事では、この設定をしたときにベストパスがどう変わるかを確認します。

この記事でわかること
  1. 既定の動作(AS_PATH の短い経路が選ばれる)を確認する
  2. bgp bestpath as-path ignore を設定する
  3. AS_PATH を比べず、次の Origin でベストパスが決まることを確認する

BGP のベストパス選択の優先順位

Cisco ルータの BGP は、次の順番で経路を比べ、差がついた時点でベストパスを決めます。

順番優先する経路
1Weight が最も大きい
2Local Preference が最も大きい
3自分で生成した(network、aggregate-address、再配布)
4AS_PATH が最も短い
5Origin が最も小さい(IGP < EGP < Incomplete)
6MED が最も小さい(通常は、隣接 AS が同じ経路どうしでだけ比べる)
7iBGP より eBGP
8ネクストホップまでの IGP メトリックが最も小さい
9(BGP マルチパスが有効なら、複数の経路をルーティングテーブルに入れるか判断する)
10どちらも eBGP なら、先に受信した(古い)経路
11BGP ルータ 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 のどちらをベストパスに選ぶかを見ていきます。

AS 23 AS 6 R2 23.23.23.23/32 .2 AS_PATH:23 Origin:incomplete(?) MED:0 R3 23.23.23.23/32 .3 AS_PATH:23 23 23 23 23 Origin:IGP(i) MED:100 R6 .6
図1 検証構成と、R6 が受け取る経路の属性

R6 が R2、R3 から学習している 23.23.23.23/32 の属性は、次のとおりです。検証のため、あらかじめ属性を変える設定をしています。

順番比較項目R2 からの経路R3 からの経路
1Weight(大きい方)3276832768
2Local Preference(大きい方)100100
3自分で生成した経路――
4AS_PATH(短い方)2323 23 23 23 23
5Origin(IGP < EGP < Incomplete)incompleteIGP
6MED(小さい方)0100

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 23R3 からの経路。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
既定 bgp bestpath as-path ignore 1. Weight同じ 2. LocPrf同じ 3. 自分で生成どちらも違う 4. AS_PATH短い R2 に決定 1. Weight同じ 2. LocPrf同じ 3. 自分で生成どちらも違う 4. AS_PATH比べない 5. OriginIGP の R3 に決定
図2 ベストパスが決まる比較項目の違い
補足

AS_PATH の長さは、経路がいくつの AS を通ってきたかを表す大事な比較項目です。bgp bestpath as-path ignore を使うと、遠回りの経路が選ばれることがあるので、影響を確かめてから使ってください。

まとめ

設定ベストパスが決まった比較項目この構成でのベストパス
なし(既定)4. AS_PATH が最も短いR2(AS_PATH 23)
bgp bestpath as-path ignore5. Origin が最も小さいR3(Origin IGP)

コメント