年も明けたことだし何か新しいことをしようと思い、手に入れた初期config1を基にCML2で模擬環境を作り、L2VPNの問題に挑戦しました。 AS跨ぎのVPNだから...という先入観が邪魔してすんなりと理解できませんでした。頭をスパッと切り替えるトレーニングは何をすれば良いのだろうか。
1. TS Ticket 3: L2VPN
2. Config
初期Config、最終Configは以下のリンク先に公開されています。予告なく見れなくなる可能性がありますので、2018年度のcisco-live資料と合わせてPDFファイルをダウンロードしておくことをおススメします。
★問題(練習問題と解答)
https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2018/pdf/LTRCCIE-3401.pdf
★初期Config(旧試験のTSHOOT、DIAG、CONFIGモジュールのTopology config)
https://www.ciscolive.com/c/dam/r/ciscolive/emea/docs/2018/pdf/LTRCCIE-3401-LG.pdf
3. 解答へのアプローチ
3.1 Inter-AS Option B と仮定
問題をよく読むと全部は使わないようです。使用するノードだけに限定して考えることにします。
考察対象が減ったので気分的にも少し楽になりました。Inter-AS Option Bを下地にしてPE15-PE24でL2VPNを使用していると仮定して見ることにしました。
いきなりconfig見ても頭に入らないので問題から情報を収集します。
① PE15におけるL2VPNの対向ルータのIPアドレスが10.1.0.24
→ PE24におけるL2VPNの対向ルータは、PE15でそのIPアドレスが10.1.0.15 と想像する。
② PE15におけるL2VPNの参加インターフェースは、Gi5.10である。
→ PE24におけるL2VPNの参加インターフェースは、Gi6.10でありVLAN10に所属している。と想像する。
③ L2VPNのVC ID(Virtual Circuit ID)は44である。
→ PE24のL2VPNのVC ID(Virtual Circuit ID)は44である。と想像する。
④ CE44 からping応答が欲しいCE46のIPアドレスは、10.4.4.46である。
→ CE46 からping応答が欲しいCE44のIPアドレスは、10.4.4.44である。と想像する。
① Targeted Hello ということから、non-directly connected LDP である。
→ PE15のL2VPN対向ルータ(PE24)は、PE15と直接接続していない。と想像する。
② PE15におけるLDP Helloの送信元IPは、10.1.0.15である。
→ PE24におけるL2VPNの宛先IPアドレスは10.1.0.15(PE15)である。と想像する。
③ L2VPNのVLANは10である。
→ PE24のL2VPNはVLAN10に所属している。と想像する。
④ L2VPNのVC ID(Virtual Circuit ID)は44である。
→ PE24のL2VPNのVC ID(Virtual Circuit ID)は44である。と想像する。
⑤ PE15におけるL2VPNの対向ルータのIPアドレスが10.1.0.24
→ PE24におけるL2VPNの送信元は10.1.0.24である。と想像する。
① PE15からの10.1.0.24のnext-hopは、10.0.0.16が知っている。
→ PE15のL2VPN宛先は、iBGP neighbor(PE16)が知っている。と想像する。
② metricが0であることから、defaultのMED=0である。
→ MEDの定義はないであろう。と想像する。
③ 1HOP先から受信したNLRIで、AS200のタグとMPLSラベルがついている。
→ AS100とAS200は直接接続しており、Inter-AS Option等によるラベル付与がある。と想像する。
④ 10.0.0.16は、10.0.0.17からnext-hopの情報を貰っています。
→ PE16は、RR17のroute-reflector-clientであろう。と想像する。
⑤ 10.0.0.16は、PE16のloopback0のアドレスである。
⑥ 10.0.0.17は、RR17のloopback0のアドレスである。
ここまでで収集した情報を整理しました。
もう私の頭の中はInter-AS Option Bしか考えていません。いつの間にか仮定が脳内で確定にすり替わっており、後に理解の邪魔になりました。
最後CEFの内容を確認するとトラブルの原因が見えてきました。
① PE16は、1hop先のAS200に10.1.0.24が存在することを知っているはずが、不明になっている。
→ ここがトラブルの元であろう!
AS200へのnext-hopの情報(IPv4アドレス、インターフェース、ラベル)が表示されるはず。
② local label 24008は、先ほどの情報と一致している。(CEFとRIB一致)
→ ローカルのラベル情報に関しては問題がないであろう。と想像する。
③ AS100内で付与するlabelは分かっている状況かもしれない。
→ AS100側の通信で使用するラベル情報に関しては問題ないかもしれない。と想像する。
とても役に立ったCCOがあります。
www.cisco.com
www.cisco.com
なるほど、だからNHを追加するのかと納得しました。
最終Configを見ると何か妙な感じがする。(。´・ω・)ん?変なInter-AS Optionだな。完全に先入観が邪魔をしてきちんと理解できませんでした。
Configを読み解きながら、違和感の原因を探ることにしました。
3.2 論理構成
configを図に描き起こしてみました。
3.3 もしかしてBGP-LUか?
先入観が邪魔して変なInter-AS Option B にしか見えなくなっていました。何故AS間でVPNV4使わないのだろうと思っていました。
コマンドの意味を再確認しました。
Address family configuration (config-router-af)オンラインヘルプ)
RR25(config)#router bgp 200 RR25(config-router)#address-family vpnv4 RR25(config-router-af)#neighbor 1.1.1.1 ? send-community Send Community attribute to this neighbor RR25(config-router-af)#neighbor 1.1.1.1 send-community ? both Send Standard and Extended Community attributes extended Send Extended Community attribute standard Send Standard Community attribute <cr> <cr>
L2VPNは、MPLS網(PE15~PE24)でラベル通信ができれば良く、L3VPNのように拡張コミュニティ2を伝搬する必要がないから、IPv4のラベル情報を基にルーティング出来るBGP-LU3でも良い。だからPE16,PE22,PE31はVPNV4を使わなくても良いのか。という結論で納得しました。
3.4 念のため確認
3.4.1 BGP-LU
IOS-XRとIOS-XRでは定義の仕方とコマンドが若干異なります。
① IOS-XRの例(PE22)
neighbor x.x.x.x address-family ipv4 labeled-unicast
RP/0/0/CPU0:PE22(config)#router bgp 200 RP/0/0/CPU0:PE22(config-bgp)#neighbor 172.16.3.16 RP/0/0/CPU0:PE22(config-bgp-nbr)#address-family ipv4 ? flowspec Address Family modifier labeled-unicast Address Family modifier mdt Address Family modifier multicast Address Family modifier mvpn Address Family modifier rt-filter Address Family modifier sr-policy Address Family modifier tunnel Address Family modifier unicast Address Family modifier RP/0/0/CPU0:PE22(config-bgp-nbr)#address-family ipv4 labeled-unicast
② IOS-XEの例(PE24)
neighbor x.x.x.x send-label
PE24(config)#router bgp 200 PE24(config-router)#address-family ipv4 ? PE24(config-router-af)#neighbor 10.0.0.25 ? <snip> activate Enable the Address Family for this Neighbor send-label Send NLRI + MPLS Label to this peer <snip> PE24(config-router-af)#neighbor 10.0.0.25 send-label
3.4.2 L2VPN(xconnect)
CEルータとPEルータでVLAN-IDが一致するようにします。また、対向ルータとP2PなIPを指定します。
① PEルータ
xconnect 【宛先】【VC ID】 encapsulation mpls
PE15(config)#int g5.10 PE15(config-subif)#encapsulation dot1q 10 PE15(config-subif)#? Interface configuration commands: <snip> xconnect Xconnect commands PE15(config-subif)#xconnect ? A.B.C.D IP address of peer PE15(config-subif)#xconnect 10.1.0.24 ? <1-4294967295> Enter VC ID value PE15(config-subif)#xconnect 10.1.0.24 44 ? encapsulation Data encapsulation method pw-class Pseudowire-class to use for encapsulation and protocol configuration PE15(config-subif)#xconnect 10.1.0.24 44 encapsulation ? l2tpv3 Use L2TPv3 encapsulation mpls Use MPLS encapsulation PE15(config-subif)#xconnect 10.1.0.24 44 encapsulation mpls ? manual Manually configure MPLS session parameters pw-class Optional pseudowire-class to use for advanced configuration <cr> <cr> PE15(config-subif)#xconnect 10.1.0.24 44 encapsulation mpls
CEルータから見れば、AS100やAS200は関係なくなります。イメージとしてはunnumberedみたいな感じになります。
② CEルータ
CEルータ同士をP2Pで通信可能なIPに指定します。また、PEルータと同じVLAN-IDにします。
CE44 ! interface GigabitEthernet0/1.10 encapsulation dot1Q 10 ip address 10.4.4.44 255.255.255.0 end
CE45 ! interface GigabitEthernet0/1.10 encapsulation dot1Q 10 ip address 10.4.4.46 255.255.255.0 end
4. 解答
ASBRで互いにstaticルートを追加してnext-hopを解決する。というのが解答でした。
https://www.cisco.com/c/ja_jp/support/docs/ios-nx-os-software/ios-xr-software/217202-cisco-ios-xr-bgp-with-mpls-designs.html#anc1
CCOではInter-AS OptionB,Cについて書かれていますが、BGP-LUでも同じことが当てはまると思います。IPv4にラベルが紐付けられていますが、確かにnext-hopが分からない。パケットの気持ちになって考えると理解しやすいかと。
今回は、BGP-LUによるInter-AS接続でしたが、Inter-AS接続におけるしくじり易い典型的なトラブル例と言えるのではないでしょうか。ASBR同士のStatic Routeがない!そう言えばInter-AS Optionの検証でハマった経験がありました。
static routeの追加によってASBR間のnext-hopが解決できたので、ラベル通信が出来るようになりました。
CML2の模擬環境だと若干ラベルが異なりますが、CEFとLFIBが一致していることが分かります。
★AS100のASBR(PE16)
★AS200のASBR(PE22)
最後にend-to-endの確認をしてお終いです。
CEルータ同士が大きなL2スイッチで接続しているようになります。途中の経路は見えません。これがL2VPNの特徴であると言えます。
CE44#ping 10.4.4.46 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.4.4.46, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 8/9/10 ms CE44# CE44#traceroute 10.4.4.46 Type escape sequence to abort. Tracing the route to 10.4.4.46 VRF info: (vrf in name/id, vrf out name/id) 1 10.4.4.46 9 msec * 9 msec CE44#
最終Configと途中の確認showコマンドはあるけれど解説がないので合っているか分かりませんが、BGP-LUを使ったAS間のラベル通信について理解が深まりました。
今度は、TS Ticket 4: L3VPNに挑戦します。
最後までお読みいただきありがとうございました!