【BGP】ベストパス選定(PART2 動作確認)

 BGPベストパスが実際どのように選定されるのか、ルータを使用し、確認します。

 以下の記事を読んでいない方は、先に読まれることをお勧めします。

  >> 参考 :  ベストパス選定(PART1 アルゴリズム)

 以下の構成で検証します。R2とR3から同一ルート(23.23.23.23/32)を広告し、R6がR2、R3のどちらをベストパスに選ぶのか、 を見ていきます。

 R6がR2、R3から学習しているBGPルート23.23.23.23/32の属性値は以下の表となります。

R6には予め、R2、およびR3から受信するBGPルートに対して、属性を変更するよう設定変更しています。 設定については、この記事の末尾に掲載します。

   優先順位     R2              R3
1WEIGHTが最大3276865535
2Local Preferenceが最大900100
3ローカルルータが
生成したルート
ローカル生成設定
スタティックルートとnetworkコマンドで設定
4AS-PATHが最短2323 23 23 23 23
5Originが最小(IGP<incomplete)incompleteIGP
6MEDが最小0100
スポンサーリンク

Weight属性の比較

 BGPベストパス選定の優先順位では、WEIGHTが一番優先的に比較されます。R6のBGPテーブルを見ると、R3からのルートはWEIGHTが65535、R2からのWEIGHTは32768です。そのため、R3からの経路がベストパスになります。

 R6のBGPテーブルを確認します。

BGPテーブル(show ip bgp)では、ベストパスに > が表記されます。

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    900  32768 23 ?
 *>                   192.168.36.3           100         65535 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 #2, table default)
  Advertised to update-groups:
     29        
  Refresh Epoch 1
  23
    192.168.26.2 from 192.168.26.2 (22.22.22.22)
      Origin incomplete, metric 0, localpref 900, weight 32768, valid, external
  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 65535, valid, external, best
スポンサーリンク

Local Preference属性の比較

 では、R3からのWEIGHTを32768に変更します。R2とR3それぞれで、WEIGHTが同じになりましたので、次にLocal Preferenceを比較します。

   優先順位     R2              R3
1WEIGHTが最大3276832768
2Local Preferenceが最大900100
3ローカルルータが
生成したルート
ローカル生成設定
スタティックルートとnetworkコマンドで設定
4AS-PATHが最短2323 23 23 23 23
5Originが最小(IGP<incomplete)incompleteIGP
6MEDが最小0100

 Local PreferenceはR2が900、R3が100(デフォルト)とR2の方が大きいので、R2へのパスがベストパスとなります。

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    900  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 #2, table default)
  Advertised to update-groups:
     30        
  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
  Refresh Epoch 1
  23
    192.168.26.2 from 192.168.26.2 (22.22.22.22)
      Origin incomplete, metric 0, localpref 900, weight 32768, valid, external, best
スポンサーリンク

ローカルルータが生成したルート

 では、R2からのLocal Preferenceの設定をデフォルトの100に戻します。R2とR3それぞれで、Local Preferenceが同じになりましたので、次はローカルルータが生成したルートであるかどうか確認されます。R6には予め、networkコマンドで、ローカル生成されるルートを設定しています。

   優先順位     R2              R3
1WEIGHTが最大3276832768
2Local Preferenceが最大100100
3ローカルルータが
生成したルート
ローカル生成設定
スタティックルートとnetworkコマンドで設定
4AS-PATHが最短2323 23 23 23 23
5Originが最小(IGP<incomplete)incompleteIGP
6MEDが最小0100
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 ?
 *>                   192.168.26.2             0         32768 i

R6# show ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 2
Paths: (3 available, best #3, table default)
  Advertised to update-groups:
     31        
  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
  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
  Refresh Epoch 1
  Local
    192.168.26.2 from 0.0.0.0 (6.6.6.6)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, sourced, local, best
スポンサーリンク

AS-PATH属性の比較

 では、R6でローカル生成のルート(networkコマンド)を削除します。ローカル生成ルートがなくなり、次にAS-PATHを比較します。

   優先順位     R2              R3
1WEIGHTが最大3276832768
2Local Preferenceが最大100100
3ローカルルータが
生成したルート
            
4AS-PATHが最短2323 23 23 23 23
5Originが最小(IGP<incomplete)incompleteIGP
6MEDが最小0100

 AS-PATHの長さはR2の方が短いので、R2へのパスがベストパスとなります。

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 #2, table default)
  Advertised to update-groups:
     32        
  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
  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, best 
スポンサーリンク

Origin属性の比較

 では、R3からのAS-PATHプリペンドした設定を削除します。R2とR3それぞれで、AS-PATHの長さが同じになりましたので、次はOrigin属性が比較されます。

   優先順位     R2              R3
1WEIGHTが最大3276832768
2Local Preferenceが最大100100
3ローカルルータが
生成したルート
            
4AS-PATHが最短2323
5Originが最小(IGP<incomplete)incompleteIGP
6MEDが最小0100

 Origin属性は小さい方がベストパスになり、値はIGP<incompleteとなるため、R3の方が値が小さく、ベストパスとなります。

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 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:
     33        
  Refresh Epoch 2
  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
スポンサーリンク

MED属性の比較

 では、R2からのOrigin属性の設定を削除します。R2とR3それぞれで、Origin属性がIGPとなりましたので、次はMED属性が比較されます。

   優先順位     R2              R3
1WEIGHTが最大3276832768
2Local Preferenceが最大100100
3ローカルルータが
生成したルート
            
4AS-PATHが最短2323
5Originが最小(IGP<incomplete)IGPIGP
6MEDが最小0100

 MEDが小さい方がベストパスになり、R2のパスがベストパスとなります。

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 i
 *                    192.168.36.3           100         32768 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:
     34        
  Refresh Epoch 2
  23
    192.168.26.2 from 192.168.26.2 (22.22.22.22)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, external, best
  Refresh Epoch 1
  23
    192.168.36.3 from 192.168.36.3 (3.3.3.3)
      Origin IGP, metric 100, localpref 100, weight 32768, valid, external
スポンサーリンク

タイブレーク

 では、R3からのMED属性の設定を削除します。R2とR3それぞれで、MEDが0と同じになりました。 以降は、タイブレークとして、先に学習したルートがベストパスになります。

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 i
 *>                   192.168.36.3             0         32768 23 i
R6#


R6# show ip bgp 23.23.23.23
BGP routing table entry for 23.23.23.23/32, version 2
Paths: (2 available, best #2, table default)
  Advertised to update-groups:
     35        
  Refresh Epoch 1
  23
    192.168.26.2 from 192.168.26.2 (22.22.22.22)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, external
  Refresh Epoch 2
  23
    192.168.36.3 from 192.168.36.3 (3.3.3.3)
      Origin IGP, metric 0, localpref 100, weight 32768, valid, external, best
スポンサーリンク

この検証で使用した構成定義

 初期設定と各属性の比較の際に、設定変更した内容は以下となります。

初期設定

R2(config)# interface loopback23 
R2(config-if)#  ip address 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 
R2(config-router)#  bgp router-id 22.22.22.22 
R3(config)# interface loopback23 
R3(config-if)# ip address 23.23.23.23 255.255.255.255 
R3(config)# router bgp 23 
R3(config-router)# network 23.23.23.23 mask 255.255.255.255 
R3(config-router)# neighbor 192.168.36.6 remote-as 6 
R3(config-router)#  bgp router-id 3.3.3.3 
R6(config)# ip route 23.23.23.23 255.255.255.255 192.168.26.2 100 
!
R6(config)# route-map R3-Attribute permit 10 
R6(config-route-map)# set metric 100 
R6(config-route-map)# set weight 65535 
R6(config-route-map)# set as-path prepend 23 23 23 23 

R6(config)# route-map R2-Attribute permit 10 
R6(config-route-map)# set local-preference 900 
R6(config-route-map)# set weight 32768 
R6(config-route-map)# set origin incomplete 
!
R6(config)# router bgp 6 
R6(config-router)# network 23.23.23.23 mask 255.255.255.255 
R6(config-router)# neighbor 192.168.26.2 remote-as 23 
R6(config-router)# neighbor 192.168.26.2 route-map R2-Attribute in 
R6(config-router)# neighbor 192.168.36.3 remote-as 23 
R6(config-router)# neighbor 192.168.36.3 route-map R3-Attribute in 
!

Local Preference属性の比較

R6(config)# route-map R3-Attribute permit 10
R6(config-route-map)# set weight 32768

R6# clear ip bgp *

ローカルルータが生成したルート

R6(config)# route-map R2-Attribute permit 10 
R6(config-route-map)# no set local-preference 900 

R6# clear ip bgp * 

AS-PATH属性の比較

R6(config)# router bgp 6
R6(config-router)# no network 23.23.23.23 mask 255.255.255.255

R6#clear ip bgp *

Origin属性の比較

R6(config)# route-map R3-Attribute permit 10
R6(config-route-map)# no set as-path prepend 23 23 23 23

R6# clear ip bgp *

MED属性の比較

R6(config)# route-map R2-Attribute permit 10 
R6(config-route-map)# no set origin incomplete 

R6# clear ip bgp * 

タイブレーク

R6(config)# route-map R3-Attribute permit 10
R6(config-route-map)# no set metric 100

R6# clear ip bgp *

その他 BGP関連記事は   >>  ルーティングプロトコル(BGP)まとめ << より参照できます。

コメント