這是一個典型的MPLS VPN基礎(chǔ)實驗環(huán)境,R2、R3、R4為運營商的設(shè)備,其中R2為PE1,R4為PE2。R1及R5分別是CE1及CE2,代表同一個VPN客戶的兩個站點。(原創(chuàng)博文 紅茶三杯 http://weibo.com/vinsoney版權(quán)所有,轉(zhuǎn)載請注明出處)
二、需求及步驟
- 完成基本IP配置
- Core內(nèi)運行OSPF(進程號100),激活LDP
- 在PE上創(chuàng)建VRF,將PE-CE間的接口放入VRF;在PE和CE之間運行IGP協(xié)議
- PE配置MP-BGP,建立MP-iBGP鄰接關(guān)系
- 完成PE-CE之間路由的重發(fā)布
三、配置及實現(xiàn)1.完成基本IP配置這個就不多說了吧?
2.Core內(nèi)運行OSPF(進程號100),激活LDPR2(PE1)的配置如下:router ospf 100 !!Core內(nèi)運行的OSP F,用于交互Core內(nèi)的路由 router-id 2.2.2.2network 10.1.23.2 0.0.0.0 area 0 networl 2.2.2.2 0.0.0.0 area 0!Ip cef !!注意,必須開啟ip cefmpls ldp router-id loopback0 !!設(shè)定LDProuter-IDmpls label range 200 299 !!為了方便觀察實驗現(xiàn)象及排錯,設(shè)置標(biāo)簽范圍interface fast0/1 mpls ip
R3(P)的配置如下:router ospf 100 !! Core內(nèi)運行的OSPF,用于交互Core內(nèi)的路由 router-id 3.3.3.3 network 10.1.23.3 0.0.0.0 area 0 network 10.1.34.3 0.0.0.0 area 0 networl 3.3.3.3 0.0.0.0 area 0!Ip cef !!注意,必須開啟ipcefmpls ldp router-id loopback 0 !!設(shè)定LDP router-IDmpls label range 300 399 !!為了方便觀察實驗現(xiàn)象及排錯,設(shè)置標(biāo)簽范圍interface fast0/0 mpls ipinterface fast0/1 mpls ip
R4(PE2)的配置如下:router ospf 10 network 10.1.34.4 0.0.0.0 area 0 networl 4.4.4.4 0.0.0.0 area 0!Ip cefmpls ldp router-id loopback0mpls label range 400 499interface fast0/0 mpls ip
完成配置后,R2、R3、R4之間就能建立起LDP的鄰居了。例如:
R2(PE1)#sh mpls ldp neighbor Peer LDP Ident:3.3.3.3:0; Local LDP Ident 2.2.2.2:0 TCP connection: 3.3.3.3.44250 -2.2.2.2.646 State: Oper; Msgs sent/rcvd: 11/11;Downstream Up time: 00:02:43 LDP discovery sources: FastEthernet0/1, Src IP addr:10.1.23.3 Addresses bound to peer LDP Ident: 10.1.23.3 10.1.34.3 3.3.3.3
3.在PE上創(chuàng)建VRF,將PE-CE間的接口放入VRF;在PE和CE之間運行IGP協(xié)議R2(PE1)的配置如下:ip vrf cisco rd 1:1 route-target export234:2 !!本地的RTexport route-target import234:4 !!匹配PE2所配置的RTexport,用于將PE2傳遞過來的路由導(dǎo)入VRF!Interface fast0/0 ip vrf forwardingcisco !!將該接口放入VRFcisco ip address 10.1.12.1255.255.255.0!router eigrp 1 !!PE-CE之間的IGP協(xié)議,用于從CE1學(xué)習(xí)VPN客戶路由 address-family ipv4 vrf cisconetwork 10.1.12.0 0.0.0.255autonomous-system 1 !! 指定EIGRP AS號,必須指定,否則鄰居關(guān)系起不來exit-address-family
R4(PE2)的配置如下:ip vrf cisco rd 1:1 route-target export 234:4 !!本地的RT export route-target import 234:2 !!匹配PE1所配置的RT export!Interface fast0/1 ip vrf forwarding cisco ip address 10.1.45.4 255.255.255.0!router ospf 1 vrf cisco !! PE-CE之間的IGP協(xié)議,用于從CE2學(xué)習(xí)VPN客戶路由network 10.1.45.4 0.0.0.0 area 0
注意,OSPF的VRF是直接體現(xiàn)在OSPF進程上的,配置方式如EIGRP、BGP、RIP等有所不同。
R1(CE1)的配置如下:router eigrp 1 network 10.0.0.0 network 1.1.1.1
R5(CE2)的配置如下:router ospf 1 router-id 5.5.5.5 network 10.1.45.5 0.0.0.0 area 0 network 5.5.5.5 0.0.0.0 area 0
這樣一來PE-CE間的IGP就配置好了。
R2-PE1#show ip eigrp vrf cisconeighborsIP-EIGRP neighbors for process 1H Address InterfaceHold Uptime SRTT RTO QSeq (sec) (ms)Cnt Num0 10.1.12.1 Fa0/0 1400:07:59 1256 5000 03

R2-PE1#show ip route vrf ciscoD 1.1.1.1 [90/156160] via 10.1.12.1, 00:09:55, FastEthernet0/0 10.0.0.0/24 is subnetted, 1 subnetsPE1已經(jīng)學(xué)習(xí)到了CE1的客戶路由。
R4-PE2#sh ip route vrf ciscoO 5.5.5.5 [110/2] via 10.1.45.5, 00:03:13, FastEthernet0/1 10.0.0.0/24 is subnetted, 1 subnetsPE2也學(xué)習(xí)到了CE2的路由。
4.PE配置MP-BGP,建立MP-iBGP鄰接關(guān)系R2(PE1)的配置如下:router bgp 234bgp router-id 2.2.2.2no bgp default ipv4-unicast !!由于這里我們不需要PE1-PE2交互IPv4前綴,因此將默認(rèn)就會自動建立IPv4的BGP鄰接的開關(guān)關(guān)掉。neighbor 4.4.4.4 remote 234neighbor 4.4.4.4 update-source loopback 0 !!配置VPNv4的鄰接,需要在進程中先指neighbor,然后再去VPNv4地址族內(nèi)激活,注意這里PE1-PE2的鄰接關(guān)系是建立在Loopback接口上的!address-family vpnv4neighbor 4.4.4.4 activate !!激活與R4也就是PE2的VPNv4連接neighbor 4.4.4.4 send-community extended !!CISCO IOS會在激活VPNv4鄰接后自動添加這條命令,但是還是要養(yǎng)成好習(xí)慣。
R4(PE2)的配置如下:router bgp 234bgp router-id 4.4.4.4no bgp default ipv4-unicastneighbor 2.2.2.2 remote 234neighbor 2.2.2.2 update-source loopback 0!address-family vpnv4neighbor 2.2.2.2 activateneighbor 2.2.2.2 send-communityextended
驗證一下:R2-PE1#show ip bgp vpnv4 all summaryBGP router identifier 2.2.2.2, local AS number 234BGP table version is 1, main routing table version 1Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQUp/Down State/PfxRcd4.4.4.4 4 234 6 8 1 0 0 00:00:29 0
R2-PE1#show ip bgp vpnv4 all neighbors 4.4.4.4 | inVPNv4 Address family VPNv4Unicast: advertised and receivedFor address family: VPNv4 Unicast(原創(chuàng)博文紅茶三杯 http://weibo.com/vinsoney 版權(quán)所有,轉(zhuǎn)載請注明出處)
5.完成PE-CE之間路由的重發(fā)布現(xiàn)在,我們要PE1已經(jīng)學(xué)習(xí)到了CE1的路由,接下去,要將這些路由重發(fā)布到BGP里,以便形成VPNv4的前綴來通過MP-iBGP傳遞給PE2;PE2上也是同理。再者,為了讓CE1和CE2之間學(xué)習(xí)到對端站點的路由,還要在PE1及PE2上,將BGP路由重發(fā)布進PE-CE間的IGP。R2(PE1)的配置如下:router eigrp 1address-family ipv4 vrf cisco !! 注意,是在IPv4 vrf地址族下進行重發(fā)布 redistribute bgp 234metric 100000 100 255 1 1500!router bgp 234address-family ipv4 vrf cisco !! 注意,是在IPv4 vrf地址族下進行重發(fā)布redistribute eigrp 1no synchronization
R4(PE2)的配置如下:router ospf 1 vrf cisco redistribute bgp 234 subnets!router bgp 234address-family ipv4 vrf ciscoredistribute ospf 1 match internal externalno synchronization
到目前位置,實驗涉及的所有配置就完成了。
R1-CE1#sh ip routeD EX 5.5.5.5 [170/53760]via 10.1.12.2, 00:01:08, FastEthernet0/0D EX 10.1.45.0[170/53760] via 10.1.12.2, 00:01:08, FastEthernet0/0CE1已經(jīng)學(xué)習(xí)到了CE2所在站點的路由
R5-CE2#sh ip routeO E2 1.1.1.1 [110/1] via10.1.45.4, 00:02:56, FastEthernet0/0O E2 10.1.12.0 [110/1]via 10.1.45.4, 00:02:56, FastEthernet0/0CE2已經(jīng)學(xué)習(xí)到了CE1所在站點的路由。
我們來測試一下:R1-CE1#ping 5.5.5.5 source 1.1.1.1,通了。然后:R1-CE1#traceroute 5.5.5.5 source 1.1.1.1Type escape sequence to abort.Tracing the route to 5.5.5.5
1 10.1.12.2 96 msec 112 msec 20 msec 2 10.1.23.3 [MPLS:Labels 301/403 Exp 0] 140 msec 128 msec 140 msec 3 10.1.45.4 [MPLS:Label 403 Exp 0] 60 msec 180 msec 116 msec 4 10.1.45.5 124 msec *124 msec
那么在數(shù)據(jù)層面上,從1.1.1.1訪問5.5.5.5,報文是如何傳輸?shù)哪兀?/b>
我們從traceroute的結(jié)果可以得出上面的數(shù)據(jù)轉(zhuǎn)發(fā)過程。首先R1發(fā)出的是IPv4的報文,源是1.1.1.1,目的是5.5.5.5,數(shù)據(jù)包到達了R2,由于這是個IP數(shù)據(jù)包,又是從自己的VRF接口收到的,因此R2查看自己的vrfCEF表:
R2-PE1#show ip cef vrf cisco 5.5.5.55.5.5.5/32 nexthop 10.1.23.3 FastEthernet0/1 label 301403
CEF中關(guān)于目的5.5.5.5,指示需要壓入兩層標(biāo)簽,然后交給10.1.23.3,于是R2將IPv4數(shù)據(jù)包壓入標(biāo)簽棧,這個標(biāo)簽棧包含兩層標(biāo)簽,然后標(biāo)簽包被交給R3。
R3收到這個包,發(fā)現(xiàn)是個標(biāo)簽包,于是查看自己的LFIB表:R3#show mpls forwarding-tableLocal Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or VC orTunnel Id Switched interface 300 Pop Label 2.2.2.2/32 18716 Fa0/0 10.1.23.2301 Pop Label 4.4.4.4/32 19362 Fa0/1 10.1.34.4
LFIB表顯示,當(dāng)我收到一個頂層標(biāo)簽為301的標(biāo)簽包,我要將該頂層標(biāo)簽POP彈出,然后交給下一跳10.1.34.4。于是R3將收到的標(biāo)簽包的301標(biāo)簽彈出,然后直接交給10.1.34.4。注意,這里其實是個PHP行為。那么R4也就是PE2收到了R3發(fā)過來的包,發(fā)現(xiàn)是個標(biāo)簽包,于是它也查看LFIB表:
R4-PE2#show mplsforwarding-tableLocal Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or VC orTunnel Id Switched interface 400 Pop Label 3.3.3.3/32 0 Fa0/0 10.1.34.3401 300 2.2.2.2/32 0 Fa0/0 10.1.34.3402 Pop Label 10.1.23.0/24 0 Fa0/0 10.1.34.3403 No Label 5.5.5.5/32[V] 4038 Fa0/1 10.1.45.5404 No Label 10.1.45.0/24[V] 0 aggregate/cisco
它發(fā)現(xiàn)標(biāo)簽403,對應(yīng)的outgoing是nolabel,于是它將整個標(biāo)簽棧都彈出(實際上只剩下一層標(biāo)簽了),然后將原始數(shù)據(jù),也就是IPv4數(shù)據(jù)直接丟給10.1.45.5。數(shù)據(jù)包就這么到了R5也就是CE2。
了解了數(shù)據(jù)層面的工作,我們再看看控制層面的工作,也就是標(biāo)簽是怎么傳遞的:
這個圖大家就非常清楚了吧?首先看內(nèi)層VPN標(biāo)簽,拿5.5.5.5舉例,R4在通過MP-iBGP通告VPNv4前綴1:1:5.5.5.5/32時,會為這個前綴同時捆綁一個VPN標(biāo)簽,403,然后發(fā)給PE1。這層標(biāo)簽,用于幫助PE2識別所收到的標(biāo)簽數(shù)據(jù)歸屬于哪一個VRF哪一個下一跳CE。接著是外層IGP標(biāo)簽,注意,運營商里P路由器是不可能知道客戶路由的,往往也并不知道VPNv4前綴。那么為了讓這些VPN流量能夠在P網(wǎng)絡(luò)中傳輸,勢必要增加一層標(biāo)簽,這就是IGP標(biāo)簽,它由LDP捆綁并分發(fā)。
(原創(chuàng)博文紅茶三杯 http://weibo.com/vinsoney 版權(quán)所有,轉(zhuǎn)載請注明出處)
紅茶三杯網(wǎng)絡(luò)工程 | 項目管理 | IT服務(wù)管理 | CCIE培訓(xùn)學(xué)習(xí) 沉淀 成長 分享微博:http://weibo.com/vinsoney博客:http://blog.sina.com.cn/vinsoney站點:http://ccietea.com
愛華網(wǎng)



