41
BGP/MPLS-VPN のお勉強資料 1 2015.4.10 @ttsubo

BGP/MPLS-VPNのお勉強資料

Embed Size (px)

Citation preview

BGP/MPLS-VPNのお勉強資料

1

2015.4.10@ttsubo

2

MPLS-VPNで活用される 各種プロトコル(BGP/OSPF/MPLS)の役割を 理解して、ルータ実機で環境構築できる

技術スキル習得を目指します。

3

宛先

送信元

以下の物理トポロジにおいて、OSPFルーティング設定を 行い、双方向で疎通確認できるネットワーク環境を構築してみる

まず、手始めに…

4

確かに、疎通できるようになったが、OSPF面に全ルータを収容する構成では、ルータ毎にIPv4プレフィックスの全経路情報を共有してしまうため、スケール性が乏しい

OSPF面

宛先 送信元

192.168.103.2192.168.201.1

CE3CE1

OSPF設定してみて…

エリア分割による経路計算量の肥大化防止は 可能だが、本質的な解決策にはならない

5

そもそも、通信したい相手のIPv4プレフィックスのみルーティング情報として保持できればよくて、途中区間のIPv4プレフィックスを保持したいわけではない

宛先

送信元

設定の簡便性、スケール性、 障害時収束を考慮した改善が必要

構成改善に向けて…

6

NW拡張1「BGPルーティングの活用」

宛先

送信元

通信したい相手を限定し、不要な途中経路のルーティングを保持しないように、BGPルーティングを有効にして、双方向で疎通確認できるネットワーク環境を構築する

BGPルーティング活用による スケール対応

7OSPF面

CE3CE1

BGP面

・BGPピア間の通信経路は、OSPFにより解決 ・BGPピア数の肥大化防止を目的に、リフレクターを配備(Option)

▪️C-Planeの特徴

RR RR CE3CE1

BGP/OSPF面による階層化構造を構成

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テーブルでの経路情報

9OSPF面

CE3CE1

・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  OSPFにより解決

▪️D-Planeの特徴

D-Plane

CE3CE1

10

実際、ping通信してみると..

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

IPv4バックボーンのコアルータでは、BGP4によるIPv4プレフィックスが伝搬されないので、IPルーティングの経路学習を行わないためだった。

宛先

×Drop!!

送信元BGPピアとなるエッジルータでのみ、経路学習を実施

ping失敗の原因は..

13

じゃあ、どう解決するのか?

IPv4バックボーンのコアルータでも、BGP4によるIPv4プレフィックスが伝搬されるように、BGPピアに参加する

解決策1:コアルータでのBGPピア参加

14図中では、RouteReflectorとのiBGPピア関係のみを記載

Native IPv4 (OSPF)

Native IPv4 (OSPF)

IPv4バックボーンのエッジルータにて、BGP4によるIPv4プレフィックス情報をOSPFルーティングに変換してコアルータに配布する

解決策2:エッジルータでのプロトコル変換

15

router ospf 9598 redistribute connected subnets redistribute bgp 9598 subnets !

router ospf 9598 redistribute bgp 9598 subnets !

IPv4バックボーン内で、LDPv4によるMPLSパスを有効にして、コアルータでのIPv4プレフィックスのルックアップ処理が不要になるようにする。(エッジルータ間データプレーン転送では、IPルーティングによるマルチホップをさせない。)

解決策3:MPLSバックボーン化

16

LDPLDP

LDP LDP

LDP

LDP

BGP Free Coreとして実績豊富(採用!!)

17

解決策3は、BGP Free Core として実績豊富なので、採用!!

18

NW拡張2「 MPLSバックボーン化」

宛先

送信元

LDP活用によるMPLSバックボーン化して、双方向で疎通確認できるネットワーク環境を構築する

MPLS-BB (OSPF, LDP)

MPLS-BB (OSPF, LDP)

BGPルーティング活用による スケール対応

19LDP(OSPF)面

CE3CE1

BGP面

・BGPピア間の通信経路は、OSPFにより解決 ・BGPのNEXTHOPへの到達性がシングルホップで対応できるよう  LDPによるMPLSトンネルを自動生成

▪️C-Planeの特徴

RR RR CE3CE1

BGP/LDP面による階層化構造を構成

BGP4

MPLS-BB MPLS-BBBGP4

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テーブルでの経路情報

21MPLS面

CE3CE1

D-Plane

CE3CE1

・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  LDPにより自動生成されたMPLSトンネルにより解決

▪️D-Planeの特徴

宛先

送信元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

参考)BGP/MPLS Deep Dive

MPLS-BB MPLS-BB

24

AS65001側のIPv4プレフィックス情報が、AS65003に経路広告される様子と、ASBR3で保持している経路情報(採用されたNextHopアドレス)を確認してみた。 さらに、データプレーン転送の様子も確認してみた。

”BGP4”を用いたIPv4プレフィックス経路広告 の振る舞い調査

BGP4

データプレーン

192.168.103.2

192.168.201.1

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

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]が挿入される

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

ASBR3側で取得したICMP通信キャプチャ結果

28

LDPラベル[25]が挿入されている

29

物理トポロジ上で、複数ユーザを重畳して収容できるようにマルチテナント

管理を実現してしたい

さらなるネットワーク拡張を目指して

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

▪️C-Planeの特徴

・mp-BGPによるvpnv4プレフィックス/VPNラベル配布 ・VRFへのルーティング情報の注入可否は、Route-Targetで判定

mp-BGP/LDP面による階層化構造を構成

LDP(OSPF)面

CE3CE1

mp-BGP面

RR RR CE3CE1

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

BGP4mp-BGP4 BGP4

mp-BGP

BGP4 MPLS-BB MPLS-BB

▪️BGPテーブルでの経路情報 AS65002からの経路情報は 保持していない!!

CustomerA

CustomerA

CustomerB

33MPLS面

CE3CE1

D-Plane

CE3CE1

・BGPパス選定経路に関わるNEXT_HOPへの到達性は、  LDPにより自動生成されたMPLSトンネルにより解決

▪️D-Planeの特徴

宛先

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

参考)mp-BGP/MPLS Deep Dive

36

AS65001側のIPv4プレフィックス情報が、AS65003に経路広告される様子と、ASBR3で保持している経路情報(採用されたNextHopアドレス)を確認してみた。 さらに、データプレーン転送の様子も確認してみた。

”mp-BGP”を用いたvpnv4プレフィックス経路広告 の振る舞い調査

データプレーン

192.168.103.2

192.168.201.1

BGP4

BGP4mp-BGP

MPLS-BB (OSPF, LDP)

MPLS-BB (OSPF, LDP)

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

ASBR3側で取得したmp-iBGP(UPDATE)通信キャプチャ

38

NextHopに、シングルホップで到達できるように、LDPラベルが挿入される

vpnv4プレフィックスに対応したVPNラベルが挿入される

Route Targetに該当するVRFテーブルを 保持している場合には、vpnv4プレフィックスを、VRFテーブルに注入を許可される

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

ASBR3側で取得したICMP通信キャプチャ結果

40

LDPラベル[16]が挿入されている

VPNラベル[30]が挿入されている

41

今回、GNS3を活用して、MPLS-VPNを構成する 各種プロトコル(BGP/OSPF/MPLS)の振る舞いを確認してみた。実際の挙動を体感すると、より一層プロトコル知識が深まると思います。