XRでmpls vpn その2
今回こそはMPLS VPN網を構築する。
改めてNW構成図
CSR1 config #CEルータ
interface Loopback0 ip address 1.1.1.1 255.255.255.255 ! interface GigabitEthernet1 ip address 192.168.12.1 255.255.255.0 ! ! router bgp 65100 bgp log-neighbor-changes neighbor 192.168.12.2 remote-as 65200 ! address-family ipv4 network 1.1.1.1 mask 255.255.255.255 neighbor 192.168.12.2 activate exit-address-family !
CE-PE間はbgpでルーティング。
疎通確認はCSR1のlo(1.1.1.1)とCSR5のlo(5.5.5.5)間で実施。なので1.1.1.1/32を広告する。
XR2 config #PEルータ
interface Loopback0 ipv4 address 2.2.2.2 255.255.255.255 ! interface GigabitEthernet0/0/0/0 ipv4 address 10.0.23.2 255.255.255.0 ! interface GigabitEthernet0/0/0/1 vrf USER1 ipv4 address 192.168.12.2 255.255.255.0 ! router bgp 65200 bgp router-id 2.2.2.2 address-family ipv4 unicast network 2.2.2.2/32 ! address-family vpnv4 unicast ! neighbor 4.4.4.4 remote-as 65200 update-source Loopback0 address-family vpnv4 unicast ! ! neighbor 10.0.23.3 remote-as 65200 address-family ipv4 unicast soft-reconfiguration inbound always ! ! vrf USER1 rd auto address-family ipv4 unicast ! neighbor 192.168.12.1 remote-as 65100 address-family ipv4 unicast as-override soft-reconfiguration inbound always ! ! ! ! mpls ldp interface GigabitEthernet0/0/0/0 !
まずはCE-PE間ルーティングが正しく行われているか確認してみると、
ルーティングテーブルに1.1.1.1/32が登録されていない。
RP/0/0/CPU0:XR2#show bgp vrf USER1 Sat Apr 22 07:44:16.988 UTC
CSR1はちゃんとアドバタイズしているみたい。
CSR1#sh ip bgp neighbors 192.168.12.2 advertised-routes Network Next Hop Metric LocPrf Weight Path *> 1.1.1.1/32 0.0.0.0 0 32768 i Total number of prefixes 1
XR2側では受信しているがベストパスに選択されていないみたい。だからルーティングテーブルに登録されないのか。
何故、ベストパスに選択されていないかは不明だけど。
RP/0/0/CPU0:XR2#sh bgp vrf USER1 neighbors 192.168.12.1 received routes Network Next Hop Metric LocPrf Weight Path Route Distinguisher: 2.2.2.2:1 (default for vrf USER1) * 1.1.1.1/32 192.168.12.1 0 0 65100 i Processed 1 prefixes, 1 paths
おかしい。R&Sの勉強してたときは、さくっとPE-CE間のルーティング設定ができたのに。
まずは切り分け。
1. CE(CSR)→ PE(CSR+vrf)へのbgpアドバタイズ
これは問題なかった。ちゃんとshow route vrf USER1でbgpのルートが登録されていた。
まぁそりゃそうだ。
2. CE(CSR)→ PE(XR)へのbgpアドバタイズ
XRのaddress-family vrf配下に何か設定が必要なのかもしれないということで、
PE側はvrfを設定せずに、純粋なbgp設定を行う。
結果、vrf有り時と同じ結果となった。
これは、vrf関係なく何か設定が必要みたい。
待てよ、そもそもXR同士の単純なbgp設定でちゃんとbgpルート学習するのか?
3. CE(XR)→ PE(XR)へのbgpアドバタイズ
これを実施して衝撃の事実発覚。
アドバタイズしたloアドレスがPE側で学習できていないではないか。
PE側でreceived routesを確認すると、受信していない。
というかCE側でadvertised-routesを確認するとアドバタイズすらしていないではないか。
もうどういうことこれ?
2の結果より状況悪化しているし。
そういえばMPLS VPN網のXR2とXR4間はお互いloアドレスが交換できているんだよな。
違いといえばibgpかebgpかだよなー。
…もしかしてXRってebgpのときデフォルトで経路をdenyする仕組みとかなんじゃないの?と思い始めいろいろ調べてみると、
Implementing BGP on Cisco IOS XR Software - Cisco
Routing Policy Enforcement
External BGP (eBGP) neighbors must have an inbound and outbound policy configured. If no policy is configured, no routes are accepted from the neighbor, nor are any routes advertised to it. This added security measure ensures that routes cannot accidentally be accepted or advertised in the case of a configuration omission error.
うわーなんかめっちゃ書いてあるよ。
ということで、さっそくXR2を以下を設定追加。
RP/0/0/CPU0:XR2(config-bgp-vrf-nbr-af)#sh configuration ! route-policy pass pass end-policy ! router bgp 65200 neighbor 192.168.12.1 ! vrf USER1 address-family ipv4 unicast ! neighbor 192.168.12.1 address-family ipv4 unicast route-policy pass in !
ルーティングテーブルを確認してみると
RP/0/0/CPU0:XR2#sh route vrf USER1 Gateway of last resort is not set B 1.1.1.1/32 [20/0] via 192.168.12.1, 00:00:03 C 192.168.12.0/24 is directly connected, 20:20:03, GigabitEthernet0/0/0/1 L 192.168.12.2/32 is directly connected, 20:20:03, GigabitEthernet0/0/0/1
うわーやっときたよ。
これ解決するのもまたしてもめっちゃ時間がかかった。
なんか全ての障害に一個ずつぶち当たっている感じ。
これも最初からドキュメント読んでいれば問題なかった話だけど、どうも最初からドキュメントを読む気にはなれない。
トラシューしている最中だと普通に頭入ってくるんだけどね。
ただ最終的には膨大なドキュメントを全て理解するぐらいじゃないといけないし、SPはかなり遠い。
流石にその2で構築完了して、次はInter-AS option Aでもやろうかなと思ってたけど、
MPLS VPN網の構築は次回も続く。