BGP/MPLS-VPNのお勉強資料

6,496 views

Published on

Published in: Technology

BGP/MPLS-VPNのお勉強資料

  1. 1. BGP/MPLS-VPN のお勉強資料 1 2015.4.10 @ttsubo
  2. 2. 2 MPLS-VPNで活用される 各種プロトコル(BGP/OSPF/MPLS)の役割を 理解して、ルータ実機で環境構築できる 技術スキル習得を目指します。
  3. 3. 3 宛先 送信元 以下の物理トポロジにおいて、OSPFルーティング設定を 行い、双方向で疎通確認できるネットワーク環境を構築して みる まず、手始めに…
  4. 4. 4 確かに、疎通できるようになったが、OSPF面に全ルータ を収容する構成では、ルータ毎にIPv4プレフィックスの全 経路情報を共有してしまうため、スケール性が乏しい OSPF面 宛先 送信元 192.168.103.2192.168.201.1 CE3CE1 OSPF設定してみて… エリア分割による経路計算量の肥大化防止は 可能だが、本質的な解決策にはならない
  5. 5. 5 そもそも、通信したい相手のIPv4プレフィックスのみ ルーティング情報として保持できればよくて、途中区 間のIPv4プレフィックスを保持したいわけではない 宛先 送信元 設定の簡便性、スケール性、 障害時収束を考慮した改善が必要 構成改善に向けて…
  6. 6. 6 NW拡張1「BGPルーティングの活用」 宛先 送信元 通信したい相手を限定し、不要な途中経路のルーティングを 保持しないように、BGPルーティングを有効にして、双方向 で疎通確認できるネットワーク環境を構築する BGPルーティング活用による スケール対応
  7. 7. 7OSPF面 CE3CE1 BGP面 ・BGPピア間の通信経路は、OSPFにより解決 ・BGPピア数の肥大化防止を目的に、リフレクターを配備(Option) ▪️C-Planeの特徴 RR RR CE3CE1 BGP/OSPF面による階層化構造を構成
  8. 8. BGP4 Native IPv4 (OSPF) Native IPv4 (OSPF) BGP4 8 CE3#show bgp ipv4 unicast BGP table version is 10, local router ID is 10.10.10.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 *> 10.10.10.1/32 192.168.103.1 0 65000 9598 65001 ? *> 10.10.10.2/32 192.168.103.1 0 65000 9598 65002 ? *> 10.10.10.3/32 0.0.0.0 0 32768 ? *> 192.168.101.0/30 192.168.103.1 0 65000 9598 65001 ? *> 192.168.102.0/30 192.168.103.1 0 65000 9598 65002 ? *> 192.168.103.0/30 0.0.0.0 0 32768 ? *> 192.168.201.0 192.168.103.1 0 65000 9598 65001 ? *> 192.168.202.0 192.168.103.1 0 65000 9598 65002 ? *> 192.168.203.0 0.0.0.0 0 32768 ? ▪️BGPテーブルでの経路情報
  9. 9. 9 OSPF面 CE3CE1 ・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  OSPFにより解決 ▪️D-Planeの特徴 D-Plane CE3CE1
  10. 10. 10 実際、ping通信してみると..
  11. 11. 11 なんと、pingが失敗する..?? 宛先 Drop!! 送信元 CE3#ping 192.168.201.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.201.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) CE3#traceroute 192.168.201.1 Type escape sequence to abort. Tracing the route to 192.168.201.1 VRF info: (vrf in name/id, vrf out name/id) 1 192.168.103.1 28 msec 24 msec 28 msec 2 172.100.1.1 180 msec 60 msec 72 msec 3 192.168.0.1 84 msec 96 msec 100 msec 4 * * * 5 * * * ..(snip)
  12. 12. 12 IPv4バックボーンのコアルータでは、BGP4によるIPv4プレ フィックスが伝搬されないので、IPルーティングの経路学習 を行わないためだった。 宛先 Drop!! 送信元BGPピアとなるエッジルータ でのみ、経路学習を実施 ping失敗の原因は..
  13. 13. 13 じゃあ、どう解決するのか?
  14. 14. IPv4バックボーンのコアルータでも、BGP4によるIPv4 プレフィックスが伝搬されるように、BGPピアに参加する 解決策1:コアルータでのBGPピア参加 14図中では、RouteReflectorとのiBGPピア関係のみを記載 Native IPv4 (OSPF) Native IPv4 (OSPF)
  15. 15. IPv4バックボーンのエッジルータにて、BGP4によるIPv4 プレフィックス情報をOSPFルーティングに変換してコア ルータに配布する 解決策2:エッジルータでのプロトコル変換 15 router ospf 9598 redistribute connected subnets redistribute bgp 9598 subnets ! router ospf 9598 redistribute bgp 9598 subnets !
  16. 16. IPv4バックボーン内で、LDPv4によるMPLSパスを有効にし て、コアルータでのIPv4プレフィックスのルックアップ処理が 不要になるようにする。(エッジルータ間データプレーン転送 では、IPルーティングによるマルチホップをさせない。) 解決策3:MPLSバックボーン化 16 LDPLDP LDP LDP LDP LDP BGP Free Coreとして実績豊富(採用!!)
  17. 17. 17 解決策3は、BGP Free Core として実績豊富なので、採用!!
  18. 18. 18 NW拡張2「 MPLSバックボーン化」 宛先 送信元 LDP活用によるMPLSバックボーン化して、双方向で疎通確 認できるネットワーク環境を構築する MPLS-BB (OSPF, LDP) MPLS-BB (OSPF, LDP) BGPルーティング活用による スケール対応
  19. 19. 19LDP(OSPF)面 CE3CE1 BGP面 ・BGPピア間の通信経路は、OSPFにより解決 ・BGPのNEXTHOPへの到達性がシングルホップで対応できるよう  LDPによるMPLSトンネルを自動生成 ▪️C-Planeの特徴 RR RR CE3CE1 BGP/LDP面による階層化構造を構成
  20. 20. BGP4 MPLS-BB MPLS-BB BGP4 20 CE3#show bgp ipv4 unicast BGP table version is 10, local router ID is 10.10.10.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 *> 10.10.10.1/32 192.168.103.1 0 65000 9598 65001 ? *> 10.10.10.2/32 192.168.103.1 0 65000 9598 65002 ? *> 10.10.10.3/32 0.0.0.0 0 32768 ? *> 192.168.101.0/30 192.168.103.1 0 65000 9598 65001 ? *> 192.168.102.0/30 192.168.103.1 0 65000 9598 65002 ? *> 192.168.103.0/30 0.0.0.0 0 32768 ? *> 192.168.201.0 192.168.103.1 0 65000 9598 65001 ? *> 192.168.202.0 192.168.103.1 0 65000 9598 65002 ? *> 192.168.203.0 0.0.0.0 0 32768 ? ▪️BGPテーブルでの経路情報
  21. 21. 21 MPLS面 CE3CE1 D-Plane CE3CE1 ・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  LDPにより自動生成されたMPLSトンネルにより解決 ▪️D-Planeの特徴
  22. 22. 宛先 送信元 22 CE3#ping 192.168.201.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.201.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 184/244/284 ms CE3#traceroute 192.168.201.1 Type escape sequence to abort. Tracing the route to 192.168.201.1 VRF info: (vrf in name/id, vrf out name/id) 1 192.168.103.1 8 msec 36 msec 28 msec 2 172.100.1.1 48 msec 28 msec 96 msec 3 192.168.0.1 200 msec 148 msec 124 msec 4 * * * 5 172.16.1.1 244 msec 144 msec 200 msec 6 192.168.101.1 [AS 65001] 252 msec 168 msec * 実際、ping通信してみると.. 成功するようになった
  23. 23. 23 参考)BGP/MPLS Deep Dive
  24. 24. MPLS-BB MPLS-BB 24 AS65001側のIPv4プレフィックス情報が、AS65003に経路 広告される様子と、ASBR3で保持している経路情報(採用さ れたNextHopアドレス)を確認してみた。 さらに、データプレーン転送の様子も確認してみた。 BGP4 を用いたIPv4プレフィックス経路広告 の振る舞い調査 BGP4 データプレーン 192.168.103.2 192.168.201.1
  25. 25. 25 BGP4通信(PE1-> ASBR3) RouteReflector経由 調査1 router bgp 9598 bgp log-neighbor-changes neighbor 10.0.0.7 remote-as 9598 neighbor 10.0.0.7 update-source Loopback0 neighbor 192.168.0.2 remote-as 65000 ! address-family ipv4 neighbor 10.0.0.7 activate neighbor 10.0.0.7 next-hop-self neighbor 192.168.0.2 activate exit-address-family PE1 ASBR3
  26. 26. ASBR3側で取得したBGP4(UPDATE)通信キャプチャ ASBR3#show mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 10.0.0.6/32 823 Fa1/1 172.16.7.2 17 16 10.0.0.5/32 272 Fa1/0 172.16.2.1 18 21 10.0.0.4/32 0 Fa1/0 172.16.2.1 19 Pop Label 10.0.0.2/32 0 Fa1/0 172.16.2.1 20 25 10.0.0.1/32 0 Fa1/0 172.16.2.1 21 Pop Label 172.16.8.0/30 0 Fa1/0 172.16.2.1 22 18 172.16.3.0/30 0 Fa1/0 172.16.2.1 23 Pop Label 172.16.4.0/30 0 Fa1/1 172.16.7.2 24 23 172.16.5.0/30 0 Fa1/0 172.16.2.1 25 Pop Label 172.16.6.0/30 0 Fa1/0 172.16.2.1 26 Pop Label 172.16.1.0/30 0 Fa1/0 172.16.2.1 27 24 10.0.0.7/32 351 Fa1/0 172.16.2.1 26 NextHopに、シングルホップで到達でき るように、LDPラベル[25]が挿入される
  27. 27. Native IPv4 (OSPF, LDP) Native IPv4 (OSPF, LDP) 27 データプレーン通信(CE3->CE1)調査2 192.168.103.2 192.168.201.1 データプレーン LDP 送信元 宛先 ASBR3#show bgp ipv4 unicast BGP table version is 10, 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 *>i 10.10.10.1/32 10.0.0.1 0 100 0 65001 ? *>i 10.10.10.2/32 10.0.0.4 0 100 0 65002 ? *> 10.10.10.3/32 192.168.0.2 0 65000 65003 ? *>i 192.168.101.0/30 10.0.0.1 0 100 0 65001 ? *>i 192.168.102.0/30 10.0.0.4 0 100 0 65002 ? *> 192.168.103.0/30 192.168.0.2 0 65000 65003 ? *>i 192.168.201.0 10.0.0.1 0 100 0 65001 ? *>i 192.168.202.0 10.0.0.4 0 100 0 65002 ? *> 192.168.203.0 192.168.0.2 0 65000 65003 ? ASBR3#show mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 10.0.0.6/32 823 Fa1/1 172.16.7.2 17 16 10.0.0.5/32 272 Fa1/0 172.16.2.1 18 21 10.0.0.4/32 0 Fa1/0 172.16.2.1 19 Pop Label 10.0.0.2/32 0 Fa1/0 172.16.2.1 20 25 10.0.0.1/32 0 Fa1/0 172.16.2.1 21 Pop Label 172.16.8.0/30 0 Fa1/0 172.16.2.1 22 18 172.16.3.0/30 0 Fa1/0 172.16.2.1 23 Pop Label 172.16.4.0/30 0 Fa1/1 172.16.7.2 24 23 172.16.5.0/30 0 Fa1/0 172.16.2.1 25 Pop Label 172.16.6.0/30 0 Fa1/0 172.16.2.1 26 Pop Label 172.16.1.0/30 0 Fa1/0 172.16.2.1 27 24 10.0.0.7/32 351 Fa1/0 172.16.2.1 データプレーン転送時、NextHopに、 シングルホップで到達できるように、 LDPラベル[25]が挿入される CE3 CE1
  28. 28. ASBR3側で取得したICMP通信キャプチャ結果 28 LDPラベル[25]が挿入されている
  29. 29. 29 物理トポロジ上で、複数ユーザを重畳 して収容できるようにマルチテナント 管理を実現してしたい さらなるネットワーク 拡張を目指して
  30. 30. 30 NW拡張3「 MPLS-VPN化」 宛先 送信元 mp-BGP活用によるMPLS-VPN化して、同一VRFユーザでの 各拠点間で、双方向で疎通確認できるネットワーク環境を構 築する MPLS-BB (OSPF, LDP) MPLS-BB (OSPF, LDP) CustomerA CustomerA CustomerB VRF VRF VRF
  31. 31. 31 ▪️C-Planeの特徴 ・mp-BGPによるvpnv4プレフィックス/VPNラベル配布 ・VRFへのルーティング情報の注入可否は、Route-Targetで判定 mp-BGP/LDP面による階層化構造を構成 LDP(OSPF)面 CE3CE1 mp-BGP面 RR RR CE3CE1
  32. 32. 32 CE3#show bgp ipv4 unicast BGP table version is 7, local router ID is 10.10.10.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 *> 10.10.10.1/32 192.168.103.1 0 65000 9598 65001 ? *> 10.10.10.3/32 0.0.0.0 0 32768 ? *> 192.168.101.0/30 192.168.103.1 0 65000 9598 ? * 192.168.103.0/30 192.168.103.1 0 0 65000 ? *> 0.0.0.0 0 32768 ? *> 192.168.201.0 192.168.103.1 0 65000 9598 65001 i *> 192.168.203.0 0.0.0.0 0 32768 i BGP4 BGP4 mp-BGP4 BGP4 mp-BGP BGP4 MPLS-BB MPLS-BB ▪️BGPテーブルでの経路情報 AS65002からの経路情報は 保持していない!! CustomerA CustomerA CustomerB
  33. 33. 33 MPLS面 CE3CE1 D-Plane CE3CE1 ・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  LDPにより自動生成されたMPLSトンネルにより解決 ▪️D-Planeの特徴
  34. 34. 宛先 CE3#ping 192.168.201.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.201.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 140/189/272 ms CE3#traceroute 192.168.201.1 Type escape sequence to abort. Tracing the route to 192.168.201.1 VRF info: (vrf in name/id, vrf out name/id) 1 192.168.103.1 24 msec 44 msec 68 msec 2 172.100.1.1 [MPLS: Label 25 Exp 0] 264 msec 268 msec 232 msec 3 192.168.0.1 [MPLS: Label 31 Exp 0] 308 msec 236 msec 168 msec 4 172.16.2.1 [MPLS: Labels 16/30 Exp 0] 280 msec 196 msec 216 msec 5 192.168.101.2 [AS 9598] [MPLS: Label 30 Exp 0] 212 msec 120 msec 112 msec 6 192.168.101.1 [AS 9598] 272 msec 244 msec * 送信元 34 実際、ping通信してみると.. 想定とおり成功した
  35. 35. 35 参考)mp-BGP/MPLS Deep Dive
  36. 36. 36 AS65001側のIPv4プレフィックス情報が、AS65003に経路 広告される様子と、ASBR3で保持している経路情報(採用さ れたNextHopアドレス)を確認してみた。 さらに、データプレーン転送の様子も確認してみた。 mp-BGP を用いたvpnv4プレフィックス経路広告 の振る舞い調査 データプレーン 192.168.103.2 192.168.201.1 BGP4 BGP4 mp-BGP MPLS-BB (OSPF, LDP) MPLS-BB (OSPF, LDP)
  37. 37. 37 mp-iBGP通信(PE1-> ASBR3) RouteReflector経由 調査1 router bgp 9598 bgp log-neighbor-changes no bgp default route-target filter neighbor 10.0.0.7 remote-as 9598 neighbor 10.0.0.7 update-source Loopback0 neighbor 192.168.0.2 remote-as 65000 ! address-family vpnv4 neighbor 10.0.0.7 activate neighbor 10.0.0.7 send-community extended neighbor 10.0.0.7 next-hop-self neighbor 192.168.0.2 activate neighbor 192.168.0.2 send-community extended exit-address-family router bgp 9598 bgp log-neighbor-changes neighbor 10.0.0.7 remote-as 9598 neighbor 10.0.0.7 update-source Loopback0 ! address-family vpnv4 neighbor 10.0.0.7 activate neighbor 10.0.0.7 send-community extended neighbor 10.0.0.7 next-hop-self exit-address-family ! address-family ipv4 vrf customerA redistribute connected neighbor 192.168.101.1 remote-as 65001 neighbor 192.168.101.1 activate neighbor 192.168.101.1 as-override exit-address-family VRFを保持する設定は不要! PE1 ASBR3
  38. 38. ASBR3側で取得したmp-iBGP(UPDATE)通信キャプチャ 38 NextHopに、シングルホップで到達できる ように、LDPラベルが挿入される vpnv4プレフィックスに対応したVPNラベルが挿入される Route Targetに該当するVRFテーブルを 保持している場合には、vpnv4プレフィックス を、VRFテーブルに注入を許可される
  39. 39. 39 データプレーン通信(CE3->CE1)調査2 192.168.103.2 192.168.201.1 データプレーン LDP 宛先 ASBR3#sh bgp vpnv4 unicast all labels Network Next Hop In label/Out label Route Distinguisher: 9598:101 10.10.10.1/32 10.0.0.1 29/28 10.10.10.3/32 192.168.0.2 35/29 192.168.101.0/30 10.0.0.1 30/29 192.168.103.0/30 192.168.0.2 36/30 192.168.201.0 10.0.0.1 31/30 192.168.203.0 192.168.0.2 37/31 Route Distinguisher: 9598:102 10.10.10.2/32 10.0.0.4 32/28 192.168.102.0/30 10.0.0.4 33/29 192.168.202.0 10.0.0.4 34/30 ASBR3#show mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 Pop Label 192.168.0.2/32 0 Fa2/0 192.168.0.2 17 Pop Label 10.0.0.6/32 3043 Fa1/1 172.16.7.2 18 19 10.0.0.5/32 640 Fa1/0 172.16.2.1 19 20 10.0.0.4/32 0 Fa1/0 172.16.2.1 20 Pop Label 10.0.0.2/32 0 Fa1/0 172.16.2.1 21 16 10.0.0.1/32 0 Fa1/0 172.16.2.1 22 Pop Label 172.16.8.0/30 0 Fa1/0 172.16.2.1 23 Pop Label 172.16.4.0/30 0 Fa1/1 172.16.7.2 24 22 172.16.3.0/30 0 Fa1/0 172.16.2.1 25 17 172.16.5.0/30 0 Fa1/0 172.16.2.1 26 Pop Label 172.16.6.0/30 0 Fa1/0 172.16.2.1 …(snip) データプレーン転送時、NextHopに、シングルホップ で到達できるように、LDPラベル[16]が挿入される データプレーン転送時、 VPNラベル[30]が挿入される 送信元 CE3 CE1
  40. 40. ASBR3側で取得したICMP通信キャプチャ結果 40 LDPラベル[16]が挿入されている VPNラベル[30]が挿入されている
  41. 41. 41 今回、GNS3を活用して、MPLS-VPNを構成する 各種プロトコル(BGP/OSPF/MPLS)の振る舞いを 確認してみた。実際の挙動を体感すると、より一層 プロトコル知識が深まると思います。

×