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 | |
1 | WEIGHTが最大 | 32768 | 65535 |
2 | Local Preferenceが最大 | 900 | 100 |
3 | ローカルルータが 生成したルート | – | ローカル生成設定 スタティックルートとnetworkコマンドで設定 |
4 | AS-PATHが最短 | 23 | 23 23 23 23 23 |
5 | Originが最小(IGP<incomplete) | incomplete | IGP |
6 | MEDが最小 | 0 | 100 |
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 | |
1 | WEIGHTが最大 | 32768 | 32768 |
2 | Local Preferenceが最大 | 900 | 100 |
3 | ローカルルータが 生成したルート | – | ローカル生成設定 スタティックルートとnetworkコマンドで設定 |
4 | AS-PATHが最短 | 23 | 23 23 23 23 23 |
5 | Originが最小(IGP<incomplete) | incomplete | IGP |
6 | MEDが最小 | 0 | 100 |
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 | |
1 | WEIGHTが最大 | 32768 | 32768 |
2 | Local Preferenceが最大 | 100 | 100 |
3 | ローカルルータが 生成したルート | – | ローカル生成設定 スタティックルートとnetworkコマンドで設定 |
4 | AS-PATHが最短 | 23 | 23 23 23 23 23 |
5 | Originが最小(IGP<incomplete) | incomplete | IGP |
6 | MEDが最小 | 0 | 100 |
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 | |
1 | WEIGHTが最大 | 32768 | 32768 |
2 | Local Preferenceが最大 | 100 | 100 |
3 | ローカルルータが 生成したルート | – | – |
4 | AS-PATHが最短 | 23 | 23 23 23 23 23 |
5 | Originが最小(IGP<incomplete) | incomplete | IGP |
6 | MEDが最小 | 0 | 100 |
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 | |
1 | WEIGHTが最大 | 32768 | 32768 |
2 | Local Preferenceが最大 | 100 | 100 |
3 | ローカルルータが 生成したルート | – | – |
4 | AS-PATHが最短 | 23 | 23 |
5 | Originが最小(IGP<incomplete) | incomplete | IGP |
6 | MEDが最小 | 0 | 100 |
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 | |
1 | WEIGHTが最大 | 32768 | 32768 |
2 | Local Preferenceが最大 | 100 | 100 |
3 | ローカルルータが 生成したルート | – | – |
4 | AS-PATHが最短 | 23 | 23 |
5 | Originが最小(IGP<incomplete) | IGP | IGP |
6 | MEDが最小 | 0 | 100 |
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)まとめ << より参照できます。
コメント