Ryu SDN FrameworkのBGP機能を試してみた(2) 〜InterAS接続編 その1〜
前回は、BGP/MPLS VPN網のエッジルータ適用でのコントロールプレーンの挙動を確認しました。しかし、実際にエッジルータ適用を想定した場合には、OSPFルーティングドメインへの参加や、トンネルMPLSラベル制御を含めたデータプレーン連携の実装が必要不可欠となります。現段階では、Ryu BGP実装状況での対応は困難そうです。よって、別の方式を検討してみます。
今回は、Ryu SDN FrameworkのBGPルーティング機能(以下、Ryu BGP)として、「InterAS MPLS VPN」による相互接続形態を検証してみます。
◆InterAS MPLS VPNとは ...
もともと、BGP/MPLS VPN網でのバックボーン内でのテナント分離手法として、「mp-BGP」が使われております。
BGP/MPLS VPN網との相互接続の場合にも、「mp-BGP」を使って、VPNv4アドレスファミリーを前提としたテナント分離情報を共有することが可能となります。なお、InterAS MPLS VPN相互接続には、複数の形態が選択可能です。rfc 4364によると、option a)〜c)までの3種類が規定されているようです。
a) VRF-to-VRF connections at the AS (Autonomous System) border routers.
b) EBGP redistribution of labeled VPN-IPv4 routes from AS to neighboring AS.
c) Multi-hop EBGP redistribution of labeled VPN-IPv4 routes between source and destination ASes, with EBGP redistribution of labeled IPv4 routes from AS to neighboring AS.
最近では、option d)なるものも提案されているみたいです。
技術詳細は、過去のCisco講演スライドなどを参考にしてください。
http://www.cisco.com/web/SK/expo2009/docs/C3_InterAS_MPLSSolutions_StefanKollar.pdf
◆Ryu BGP検証環境
InterAS MPLS VPN網では、ASBRなるエッジルータの役割が非常に重要となります。
Ryu BGPでのASBR/PE機能を有するエッジルータ適用を想定したOptionBモデルを構築します。実際のBGP/MPLS VPN網は、GNS3によるCiscoエミュレータソフトを活用しました。
(1) Ryu BGPでの実装コード
Ryu公式ドキュメントでの、API仕様やサンプルコードを参考に、検証用のサンプルコードを準備しました。
RyuBGP1側の実装コード(sampleBGP_for_InterAS-MPLS-VPN-in-RyuBGP1.py )
import eventlet import time eventlet.monkey_patch() import logging import sys logging.basicConfig(level=logging.INFO) from ryu.services.protocols.bgp.bgpspeaker import BGPSpeaker def dump_remote_best_path_change(event): print 'the best path changed:', event.remote_as, event.prefix,\ event.nexthop, event.is_withdraw if __name__ == "__main__": speaker = BGPSpeaker(as_number=65001, router_id='10.0.0.7', best_path_change_handler=dump_remote_best_path_change, ssh_console=True, label_range=(1000,1999)) speaker.neighbor_add('192.168.100.101', 65010, enable_ipv4=True, enable_vpnv4=True) speaker.neighbor_add('172.16.0.102', 65002, enable_ipv4=True, enable_vpnv4=True) speaker.vrf_add('65010:101', ['65010:101'], ['65010:101']) eventlet.sleep(5) speaker.prefix_add('192.168.103.0/30', next_hop='0.0.0.0', route_dist='65010:101') while True: eventlet.sleep(5)
RyuBGP2側の実装コード(sampleBGP_for_InterAS-MPLS-VPN-in-RyuBGP2.py )
import eventlet import time eventlet.monkey_patch() import logging import sys logging.basicConfig(level=logging.DEBUG) from ryu.services.protocols.bgp.bgpspeaker import BGPSpeaker def dump_remote_best_path_change(event): print 'the best path changed:', event.remote_as, event.prefix,\ event.nexthop, event.is_withdraw if __name__ == "__main__": speaker = BGPSpeaker(as_number=65002, router_id='10.0.0.8', best_path_change_handler=dump_remote_best_path_change, ssh_console=True, label_range=(2000,2999)) speaker.neighbor_add('192.168.101.101', 65010, enable_ipv4=True, enable_vpnv4=True) speaker.neighbor_add('172.16.0.101', 65001, enable_ipv4=True, enable_vpnv4=True) speaker.vrf_add('65010:101', ['65010:101'], ['65010:101']) eventlet.sleep(5) speaker.prefix_add('192.168.104.0/30', next_hop='0.0.0.0', route_dist='65010:101') while True: eventlet.sleep(5)
◆InterAS MPLS VPN検証結果
今回の検証観点は、
1. Ryu BGPでの最適パス選定が正しく動作できること
2. ASBR〜RyuBGP間でのリンク切断時には、BGPピア断を検出して、ルーティング迂回経路が構築できること
3. ASBR〜RyuBGP間でのリンク復旧時には、BGPピア開設を検出して、ルーティング経路が再構築できること
1. Ryu BGPでの最適パス選定の動作
既存のBGP/MPLS VPN網とのOptionBによる相互接続により、Ryu BGP上でのBGPテーブルが正しく構築されることを確認します。
(1) RyuBGP1上のBGP経路結果
RyuBGP1でのBGP経路情報を確認してみました。rib上ではASパス長での最適パス選定が実施された様子が確認できました。さらに、ribでの最適パス選定結果が、vrf上のルーティングテーブルに注入されている様子が確認できます。
Ryu BGPでの最適パス計算における選定理由が、showコマンド結果で把握できる特徴があります。
これから、BGP技術知識を深めたい場合の学習教材としての活用には、最適な選択肢だと思います。
なお、Ryu BGP1〜CE3間のコネク区間のスタティック経路を設定sる際には、MPLSラベルとして1000番台をアサインするようにしております。
bgpd> show rib vpnv4 Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path *> 65010:101:192.168.103.0/30 [1000] 172.16.0.101 AS Path 65001 ? * [30] 192.168.101.101 65010 65001 ? * 65010:101:192.168.202.0/24 [31] 172.16.0.101 65001 65010 65012 i *> [32] 192.168.101.101 AS Path 65010 65012 i * 65010:101:192.168.201.0/24 [32] 172.16.0.101 65001 65010 65011 i *> [33] 192.168.101.101 AS Path 65010 65011 i * 65010:101:192.168.2.0/30 [29] 172.16.0.101 65001 65010 ? *> [29] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.1/32 [33] 172.16.0.101 65001 65010 65011 ? *> [34] 192.168.101.101 AS Path 65010 65011 ? *> 65010:101:192.168.104.0/30 [2000] 0.0.0.0 Only Path ? * 65010:101:192.168.1.0/30 [28] 172.16.0.101 65001 65010 ? *> [28] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.2/32 [30] 172.16.0.101 65001 65010 65012 ? *> [31] 192.168.101.101 AS Path 65010 65012 ? bgpd> show vrf all Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path VPN: ('65010:101', 'ipv4') *> 192.168.202.0/24 None 192.168.101.101 Only Path 65010 65012 i *> 10.10.10.1/32 None 192.168.101.101 Only Path 65010 65011 ? *> 192.168.104.0/30 None 0.0.0.0 Only Path ? *> 10.10.10.2/32 None 192.168.101.101 Only Path 65010 65012 ? *> 192.168.201.0/24 None 192.168.101.101 Only Path 65010 65011 i *> 192.168.1.0/30 None 192.168.101.101 Only Path 65010 ? *> 192.168.103.0/30 None 172.16.0.101 Only Path 65001 ? *> 192.168.2.0/30 None 192.168.101.101 Only Path 65010 ? bgpd>
(2) RyuBGP2上のBGP経路結果
RyuBGP2でのBGP経路情報を確認してみました。rib上ではASパス長での最適パス選定が実施された様子が確認できました。さらに、ribでの最適パス選定結果が、vrf上のルーティングテーブルに注入されている様子が確認できます。なお、Ryu BGP2〜CE4間のコネク区間のスタティック経路を設定sる際には、MPLSラベルとして、2000番台をアサインするようにしております。
bgpd> show rib vpnv4 Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path *> 65010:101:192.168.103.0/30 [1000] 172.16.0.101 AS Path 65001 ? * [30] 192.168.101.101 65010 65001 ? * 65010:101:192.168.202.0/24 [31] 172.16.0.101 65001 65010 65012 i *> [32] 192.168.101.101 AS Path 65010 65012 i * 65010:101:192.168.201.0/24 [32] 172.16.0.101 65001 65010 65011 i *> [33] 192.168.101.101 AS Path 65010 65011 i * 65010:101:192.168.2.0/30 [29] 172.16.0.101 65001 65010 ? *> [29] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.1/32 [33] 172.16.0.101 65001 65010 65011 ? *> [34] 192.168.101.101 AS Path 65010 65011 ? *> 65010:101:192.168.104.0/30 [2000] 0.0.0.0 Only Path ? * 65010:101:192.168.1.0/30 [28] 172.16.0.101 65001 65010 ? *> [28] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.2/32 [30] 172.16.0.101 65001 65010 65012 ? *> [31] 192.168.101.101 AS Path 65010 65012 ? bgpd> show vrf all Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path VPN: ('65010:101', 'ipv4') *> 192.168.202.0/24 None 192.168.101.101 Only Path 65010 65012 i *> 10.10.10.1/32 None 192.168.101.101 Only Path 65010 65011 ? *> 192.168.104.0/30 None 0.0.0.0 Only Path ? *> 10.10.10.2/32 None 192.168.101.101 Only Path 65010 65012 ? *> 192.168.201.0/24 None 192.168.101.101 Only Path 65010 65011 i *> 192.168.1.0/30 None 192.168.101.101 Only Path 65010 ? *> 192.168.103.0/30 None 172.16.0.101 Only Path 65001 ? *> 192.168.2.0/30 None 192.168.101.101 Only Path 65010 ? bgpd>
(3) BGP/MPLS VPN網でのBGP経路結果
BGP/MPLS VPN網でのBGP経路情報を確認してみました。
ASBR3でのルーティング確認
ASBR3>show bgp vpnv4 unicast all BGP table version is 24, local router ID is 10.0.0.3 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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *> 192.168.103.0/30 192.168.100.102 0 65001 ? *>i 192.168.104.0/30 10.0.0.6 0 100 0 65002 ? * 192.168.100.102 0 65001 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i ASBR3>show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 33/28 10.10.10.2/32 10.0.0.4 30/28 192.168.1.0/30 10.0.0.1 28/29 192.168.2.0/30 10.0.0.4 29/29 192.168.103.0/30 192.168.100.102 35/1000 192.168.104.0/30 10.0.0.6 36/37 192.168.100.102 36/2000 192.168.201.0 10.0.0.1 32/30 192.168.202.0 10.0.0.4 31/30
ASBR4でのルーティング確認
ASBR4>show bgp vpnv4 unicast all BGP table version is 20, local router ID is 10.0.0.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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? * 192.168.103.0/30 192.168.101.102 0 65002 65001 ? *>i 10.0.0.3 0 100 0 65001 ? *> 192.168.104.0/30 192.168.101.102 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i ASBR4>show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 34/28 10.10.10.2/32 10.0.0.4 31/28 192.168.1.0/30 10.0.0.1 28/29 192.168.2.0/30 10.0.0.4 29/29 192.168.103.0/30 192.168.101.102 30/1000 10.0.0.3 30/35 192.168.104.0/30 192.168.101.102 37/2000 192.168.201.0 10.0.0.1 33/30 192.168.202.0 10.0.0.4 32/30
RR1でのルーティング確認
RR1#show bgp vpnv4 unicast all BGP table version is 22, local router ID is 10.0.0.7 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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *>i 192.168.103.0/30 10.0.0.3 0 100 0 65001 ? *>i 192.168.104.0/30 10.0.0.6 0 100 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i RR1#show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 nolabel/28 10.10.10.2/32 10.0.0.4 nolabel/28 192.168.1.0/30 10.0.0.1 nolabel/29 192.168.2.0/30 10.0.0.4 nolabel/29 192.168.103.0/30 10.0.0.3 nolabel/35 192.168.104.0/30 10.0.0.6 nolabel/37 192.168.201.0 10.0.0.1 nolabel/30 192.168.202.0 10.0.0.4 nolabel/30
2."ASBR3〜RyuBGP1間"のリンク切断時の動作結果
既存のBGP/MPLS VPN網とのOptionBによる相互接続において、対向ASBRからのmp-eBGPピアが切断した場合に、Ryu BGP上でのBGPテーブルが正しく構築されることを確認します。
(1) RyuBGP1上のBGP経路結果
"ASBR3〜RyuBGP1間"でのリンク断の障害を発生させた上で、RyuBGP1でのBGP経路情報を確認してみました。ASBR3からのBGP経路広告が途絶したことにより、rib上では最適パス選定が再実施された様子が確認できました。
bgpd> bgpd> show rib vpnv4 Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path *> 65010:101:192.168.103.0/30 [1000] 0.0.0.0 Only Path ? *> 65010:101:192.168.104.0/30 [2000] 172.16.0.102 Only Path 65002 ? *> 65010:101:192.168.1.0/30 [28] 172.16.0.102 Only Path 65002 65010 ? *> 65010:101:192.168.2.0/30 [29] 172.16.0.102 Only Path 65002 65010 ? *> 65010:101:10.10.10.2/32 [31] 172.16.0.102 Only Path 65002 65010 65012 ? *> 65010:101:192.168.202.0/24 [32] 172.16.0.102 Only Path 65002 65010 65012 i *> 65010:101:192.168.201.0/24 [33] 172.16.0.102 Only Path 65002 65010 65011 i *> 65010:101:10.10.10.1/32 [34] 172.16.0.102 Only Path 65002 65010 65011 ?
(2) RyuBGP2上のBGP経路結果
"ASBR3〜RyuBGP1間"でのリンク断の障害を発生させた上で、RyuBGP2でのBGP経路情報を確認してみました。ASBR3からのBGP経路広告が途絶したことにより、rib上では最適パス選定が再実施された様子が確認できました。
bgpd> show rib vpnv4 Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path *> 65010:101:192.168.103.0/30 [1000] 172.16.0.101 Only Path 65001 ? * 65010:101:192.168.202.0/24 [31] 172.16.0.101 65001 65010 65012 i *> [32] 192.168.101.101 AS Path 65010 65012 i * 65010:101:192.168.201.0/24 [32] 172.16.0.101 65001 65010 65011 i *> [33] 192.168.101.101 AS Path 65010 65011 i * 65010:101:192.168.2.0/30 [29] 172.16.0.101 65001 65010 ? *> [29] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.1/32 [33] 172.16.0.101 65001 65010 65011 ? *> [34] 192.168.101.101 AS Path 65010 65011 ? *> 65010:101:192.168.104.0/30 [2000] 0.0.0.0 Only Path ? * 65010:101:192.168.1.0/30 [28] 172.16.0.101 65001 65010 ? *> [28] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.2/32 [30] 172.16.0.101 65001 65010 65012 ? *> [31] 192.168.101.101 AS Path 65010 65012 ?
(3) BGP/MPLS VPN網でのルーティング動作確認
BGP/MPLS VPN網でのBGP経路情報を確認してみました。
ASBR3でのルーティング確認
ASBR3>show bgp vpnv4 unicast all BGP table version is 30, local router ID is 10.0.0.3 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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *>i 192.168.103.0/30 10.0.0.6 0 100 0 65002 65001 ? *>i 192.168.104.0/30 10.0.0.6 0 100 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i ASBR3>show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 33/28 10.10.10.2/32 10.0.0.4 30/28 192.168.1.0/30 10.0.0.1 28/29 192.168.2.0/30 10.0.0.4 29/29 192.168.103.0/30 10.0.0.6 35/30 192.168.104.0/30 10.0.0.6 36/37 192.168.201.0 10.0.0.1 32/30 192.168.202.0 10.0.0.4 31/30
ASBR4でのルーティング確認
ASBR4>show bgp vpnv4 unicast all BGP table version is 25, local router ID is 10.0.0.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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *> 192.168.103.0/30 192.168.101.102 0 65002 65001 ? *> 192.168.104.0/30 192.168.101.102 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i ASBR4>show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 34/28 10.10.10.2/32 10.0.0.4 31/28 192.168.1.0/30 10.0.0.1 28/29 192.168.2.0/30 10.0.0.4 29/29 192.168.103.0/30 192.168.101.102 30/1000 192.168.104.0/30 192.168.101.102 37/2000 192.168.201.0 10.0.0.1 33/30 192.168.202.0 10.0.0.4 32/30
RR1でのルーティング確認
RR1#show bgp vpnv4 unicast all BGP table version is 28, local router ID is 10.0.0.7 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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *>i 192.168.103.0/30 10.0.0.6 0 100 0 65002 65001 ? *>i 192.168.104.0/30 10.0.0.6 0 100 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i RR1#show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 nolabel/28 10.10.10.2/32 10.0.0.4 nolabel/28 192.168.1.0/30 10.0.0.1 nolabel/29 192.168.2.0/30 10.0.0.4 nolabel/29 192.168.103.0/30 10.0.0.6 nolabel/30 192.168.104.0/30 10.0.0.6 nolabel/37 192.168.201.0 10.0.0.1 nolabel/30 192.168.202.0 10.0.0.4 nolabel/30
3."ASBR3〜RyuBGP1間"のリンク復旧時の動作結果
既存のBGP/MPLS VPN網とのOptionBによる相互接続において、対向ASBRからのmp-eBGPピア断から回復した場合に、Ryu BGP上でのBGPテーブルが正しく構築されることを確認します。
(1) RyuBGP1上のBGP経路結果
"ASBR3〜RyuBGP1間"でのリンク断を回復させた上で、RyuBGP1でのBGP経路情報を確認してみました。ASBR3からのBGP経路広告が再開したことにより、rib上では最適パス選定が再実施された様子が確認できました。
bgpd> show rib vpnv4 Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path *> 65010:101:192.168.103.0/30 [1000] 0.0.0.0 Only Path ? *> 65010:101:192.168.104.0/30 [2000] 172.16.0.102 AS Path 65002 ? * [36] 192.168.100.101 65010 65002 ? *> 65010:101:192.168.1.0/30 [28] 192.168.100.101 AS Path 65010 ? * [28] 172.16.0.102 65002 65010 ? *> 65010:101:192.168.2.0/30 [29] 192.168.100.101 AS Path 65010 ? * [29] 172.16.0.102 65002 65010 ? *> 65010:101:10.10.10.2/32 [30] 192.168.100.101 AS Path 65010 65012 ? * [31] 172.16.0.102 65002 65010 65012 ? *> 65010:101:192.168.202.0/24 [31] 192.168.100.101 AS Path 65010 65012 i * [32] 172.16.0.102 65002 65010 65012 i *> 65010:101:192.168.201.0/24 [32] 192.168.100.101 AS Path 65010 65011 i * [33] 172.16.0.102 65002 65010 65011 i *> 65010:101:10.10.10.1/32 [33] 192.168.100.101 AS Path 65010 65011 ? * [34] 172.16.0.102 65002 65010 65011 ?
(2) RyuBGP2上のBGP経路結果
"ASBR3〜RyuBGP1間"でのリンク断を回復させた上で、RyuBGP2でのBGP経路情報を確認してみました。ASBR3からのBGP経路広告が再開したことにより、rib上では最適パス選定が再実施された様子が確認できました。
bgpd> show rib vpnv4 Status codes: * valid, > best Origin codes: i - IGP, e - EGP, ? - incomplete Network Labels Next Hop Reason Metric LocPrf Path *> 65010:101:192.168.103.0/30 [1000] 172.16.0.101 AS Path 65001 ? * [30] 192.168.101.101 65010 65001 ? * 65010:101:192.168.202.0/24 [31] 172.16.0.101 65001 65010 65012 i *> [32] 192.168.101.101 AS Path 65010 65012 i * 65010:101:192.168.201.0/24 [32] 172.16.0.101 65001 65010 65011 i *> [33] 192.168.101.101 AS Path 65010 65011 i * 65010:101:192.168.2.0/30 [29] 172.16.0.101 65001 65010 ? *> [29] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.1/32 [33] 172.16.0.101 65001 65010 65011 ? *> [34] 192.168.101.101 AS Path 65010 65011 ? *> 65010:101:192.168.104.0/30 [2000] 0.0.0.0 Only Path ? * 65010:101:192.168.1.0/30 [28] 172.16.0.101 65001 65010 ? *> [28] 192.168.101.101 AS Path 65010 ? * 65010:101:10.10.10.2/32 [30] 172.16.0.101 65001 65010 65012 ? *> [31] 192.168.101.101 AS Path 65010 65012 ?
(3) BGP/MPLS VPN網でのルーティング動作確認
BGP/MPLS VPN網でのBGP経路情報を確認してみました。
ASBR3でのルーティング確認
ASBR3>show bgp vpnv4 unicast all BGP table version is 47, local router ID is 10.0.0.3 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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *> 192.168.103.0/30 192.168.100.102 0 65001 ? *>i 192.168.104.0/30 10.0.0.6 0 100 0 65002 ? * 192.168.100.102 0 65001 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i ASBR3>show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 33/28 10.10.10.2/32 10.0.0.4 30/28 192.168.1.0/30 10.0.0.1 28/29 192.168.2.0/30 10.0.0.4 29/29 192.168.103.0/30 192.168.100.102 35/1000 192.168.104.0/30 192.168.100.102 36/2000 10.0.0.6 36/37 192.168.201.0 10.0.0.1 32/30 192.168.202.0 10.0.0.4 31/30
ASBR4でのルーティング確認
ASBR4>show bgp vpnv4 unicast all BGP table version is 45, local router ID is 10.0.0.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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *>i 192.168.103.0/30 10.0.0.3 0 100 0 65001 ? * 192.168.101.102 0 65002 65001 ? *> 192.168.104.0/30 192.168.101.102 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i ASBR4>show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 34/28 10.10.10.2/32 10.0.0.4 31/28 192.168.1.0/30 10.0.0.1 28/29 192.168.2.0/30 10.0.0.4 29/29 192.168.103.0/30 10.0.0.3 30/35 192.168.101.102 30/1000 192.168.104.0/30 192.168.101.102 37/2000 192.168.201.0 10.0.0.1 33/30 192.168.202.0 10.0.0.4 32/30
RR1でのルーティング確認
RR1#show bgp vpnv4 unicast all BGP table version is 52, local router ID is 10.0.0.7 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 Route Distinguisher: 65010:101 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65011 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65012 ? *>i 192.168.1.0/30 10.0.0.1 0 100 0 ? *>i 192.168.2.0/30 10.0.0.4 0 100 0 ? *>i 192.168.103.0/30 10.0.0.3 0 100 0 65001 ? *>i 192.168.104.0/30 10.0.0.6 0 100 0 65002 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65011 i *>i 192.168.202.0 10.0.0.4 0 100 0 65012 i RR1#show bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 65010:101 10.10.10.1/32 10.0.0.1 nolabel/28 10.10.10.2/32 10.0.0.4 nolabel/28 192.168.1.0/30 10.0.0.1 nolabel/29 192.168.2.0/30 10.0.0.4 nolabel/29 192.168.103.0/30 10.0.0.3 nolabel/35 192.168.104.0/30 10.0.0.6 nolabel/37 192.168.201.0 10.0.0.1 nolabel/30 192.168.202.0 10.0.0.4 nolabel/30