■ 云南 盧立云
編者按:MPLS VPN由于搭建快捷、配置靈活、安全保密、擴展性好等特點,在營運商網(wǎng)絡被廣泛使用,近期筆者遇到在配置MPLS VPN時,出現(xiàn)兩端的CE彼此ping不通對方的情況,后通過排查,找到了原因,并加以解決。
MPLS VPN由于搭建快捷、配置靈活、便于控制、安全保密、擴展性好等特點,在營運商網(wǎng)絡被廣泛采用,可為政府、企業(yè)在公共Internet網(wǎng)上構(gòu)建安全可靠、方便快捷的專用網(wǎng)絡,并可大大節(jié)省廣域網(wǎng)的建設和運行維護費用。
MPLS VPN技術(shù)是廣域網(wǎng)建設的最佳解決方案,MPLS VPN是基于MPLS技術(shù)構(gòu)建的虛擬專用網(wǎng),能夠在提供原有VPN網(wǎng)絡所有功能的同時,提供強有力的QoS能力,具有可靠性高、安全性高、擴展能力強、控制策略靈活以及管理能力強大等特點。
MPLS是一種特殊的轉(zhuǎn)發(fā)機制,它為進入網(wǎng)絡中的IP數(shù)據(jù)包分配標記,并通過對標記的交換來實現(xiàn)IP數(shù)據(jù)包的轉(zhuǎn)發(fā)。在網(wǎng)絡內(nèi)部MPLS在數(shù)據(jù)包所經(jīng)過的路徑通過交換標記(而不是看IP包頭)來實現(xiàn)轉(zhuǎn)發(fā);當數(shù)據(jù)包要退出MPLS網(wǎng)絡時,數(shù)據(jù)包被解開封裝,繼續(xù)按照IP包的路由方式到達目的地。
圖1 網(wǎng)絡拓撲圖
利用EVE虛擬平臺可以搭建一個MPLS VPN的實驗環(huán)境,營運商網(wǎng)絡有PE1、P、PE2,采用OSPF協(xié)議實現(xiàn)IGP網(wǎng)絡的聯(lián)通可達,PE1和PE2之間采用MP-BGP建立VPN連接,PE1-CE1之間,PE2-CE2之間可以采用靜態(tài)路由方式,也可以采用OSPF,EIGRP,BGP等方式,這里先采用靜態(tài)路由方式。網(wǎng)絡拓撲圖如圖1所示。配置步驟如下:
1.配置CE1、PE1、P、PE2、CE2的主機名,環(huán)回口loopback0地址和互聯(lián)接口地址;
2.營運商網(wǎng)絡一側(cè),配置OSPF協(xié)議,實現(xiàn)營運商網(wǎng)絡IGP可達,如PE1:
router ospf 234
network 22.22.22.0 0.0.0.255 area 0
network 23.23.23.0 0.0.0.255 area 0
!
3.在PE上定義并配置VRF,如PE1:
ip vrf aaa
rd 100:11
route-target export 100:1
route-target import 100:1
!
4.在PE1-P-PE2之間的互聯(lián)接口配置啟用LDP和mpls功能,如,PE1:
interface Ethernet1/1
ip address 23.23.23.2 255.255.255.0
duplex half
mpls ip
!
5.在PE1-CE1的PE1側(cè)的接口啟動ip vrf forwarding,如PE1:
interface Ethernet1/0
ip vrf forwarding aaa
ip address 12.12.12.2 255.255.255.0
duplex half
!
6.PE1-PE2建立MP-BGP VPNV4連接,如PE1:
router bgp 100
bgp router-id 22.22.22.22
bgp log-neighborchanges
no bgp default ipv4-unicast
neighbor 44.44.44.44 remote-as 100
neighbor 44.44.44.44 update-source Loopback0
圖2 CE1 ping不通CE2
!
address-family ipv4
exit-address-family
!
address-family vpnv4
neighbor 44.44.44.44 activate
neighbor 44.44.44.44 send-community extended
exit-address-family
!
7.PE1端配置vrf靜態(tài)路由指向CE1的loopback0口,如:PE1:
!
ip route vrf aaa 11.11.11.0 255.255.255.0 12.12.12.1
!
8.將VRF靜態(tài)路由再發(fā)布到BGP的VRF AAA中,如PE1:
Router bgp 100
。。。。
address-family ipv4 vrf aaa
redistribute static
exit-addressfamily
!
9.CE1端配置默認路由,指向PE1,如CE1:
!
ip route 0.0.0.0 0.0.0.0 12.12.12.2
!
以上配置部署完成,并且PE2、CE2參照PE1、CE1配置,P上只要配置OSPF協(xié)議,并在與PE1、PE2的直連端口配置MPLS IP即可,配置完成后,在CE1端ping CE2的loopback0,結(jié)果不通,如圖2所示,同樣CE2也ping不通CE1。
發(fā)現(xiàn)CE1-CE2兩端ping不通后,起初還以為是兩端配置不對。通過仔細檢查PE1和PE2的配置,并沒有錯,再在PE1處輸入命令“sh ip route”和“sh ip route vrf aaa”,PE1已經(jīng)學習到關(guān)于CE2端loopback0網(wǎng)段的路由。同樣,PE2也學習到CE1端loopback0網(wǎng)段的路由,如圖3所示的路由信息。
在PE1端輸入命令“sh ip bgp vpnv4 all”,結(jié)果如圖4顯示,說明PE2和PE1建立了Mpbgp vpnv4的鄰居關(guān)系,并且PE2與PE1相互傳遞了VPN路由。
CE1和CE2是客戶一側(cè),MPLS VPN對于用戶是透明的,客戶端不用配置任何有關(guān)MPLS VPN的命令,只需配置默認路由即可。但是在CE1上ping對端CE2的loopback0口還是不通。
通過仔細排查,結(jié)果發(fā) 現(xiàn),CE1上ping對端CE2的loopback0口地址,IP數(shù)據(jù)包的源地址是用的CE1-PE1的直連口地址,即12,12.12.1/24,而該地址沒有通過VPN傳遞給PE2,即PE2的VRF AAA的路由表中沒有該地址段的表項,數(shù)據(jù)包可以到達CE2,但是響應數(shù)據(jù)包從CE2到達PE2后,由于沒有該網(wǎng)段的路由,結(jié)果被丟棄,從而導致無法ping通。
圖3 路由信息
圖4 在PE1端顯示PE2和PE1建立了鄰居關(guān)系
圖5 CE1 ping通CE2
知道了問題的根源后,解決起來就得心應手。
解決方法一:只要在CE1處將ping命令后面添加源地址即可,即:CE1#ping 55.55.55.55 source 11.11.11.11,這樣數(shù)據(jù)包的源地址是11.11.11.11/32,即CE1的loopback0的地址,數(shù)據(jù)包到達PE1后,包上標簽,因為有到55.55.55.0的VPN路由,數(shù)據(jù)被轉(zhuǎn)發(fā)到PE2,再拆除標簽,轉(zhuǎn)發(fā)給CE2,而CE2的響應包上傳至PE2后,包上標簽,系統(tǒng)在PE2的VRF AAA路由表中查找到去往11.11.11.0的路由,并將數(shù)據(jù)包轉(zhuǎn)發(fā)給PE1,在PE1處拆除標簽,轉(zhuǎn)發(fā)給CE1,完成ping通過程。如圖5所示,CE1 ping通CE2。
解決方法二:可在PE1的BGP配置中“addressfamily ipv4 vrf aaa”部分配置“network 12.12.12.0 mask 255.255.255.0”命令通告直連網(wǎng)段,在PE2也做同樣配置,即可解決以上問題。
通過故障排查,需要技術(shù)人員不僅對VPN的路由和轉(zhuǎn)發(fā)過程有清晰的了解,還要求能夠了解數(shù)據(jù)包的結(jié)構(gòu)和跟蹤數(shù)據(jù)包的轉(zhuǎn)發(fā)。這樣才能快速檢查和排除問題。另外,在配置過程中,一個VPN對應一個RD,這一點也是應該要注意的。