MPLS簡述
MPLS(multi-protocollabelswitch)是Internet核心多層交換計算的最新發(fā)展。MPLS將轉(zhuǎn)發(fā)部分的標(biāo)記交換和控制部分的IP路由組合在一起,加快了轉(zhuǎn)發(fā)速度。而且,MPLS可以運(yùn)行在任何鏈接層技術(shù)之上,從而簡化了向基于SONET/WDM和IP/WDM結(jié)構(gòu)的下一代光Internet的轉(zhuǎn)化。在這里,主要描述一下標(biāo)簽轉(zhuǎn)發(fā)表的產(chǎn)生過程及IP包如何通過MPLS轉(zhuǎn)發(fā)。
MPLS標(biāo)簽棧頭
圖1 MPLS標(biāo)簽棧頭
32位的MPLS棧頭包括以下區(qū)域(如圖1所示):
承載MPLS標(biāo)記實際值的標(biāo)記區(qū)域(20位);
CoS區(qū)域(3位),用于在分組通過網(wǎng)絡(luò)時施加在分組上的排隊和丟棄算法;
堆棧區(qū)域(S區(qū)域,1位),用于支持標(biāo)記堆棧序列;
TTL區(qū)域(8位),提供傳統(tǒng)的IPTTL功能。
標(biāo)簽轉(zhuǎn)發(fā)表產(chǎn)生過程
1.路由器之間通過路由協(xié)議或靜態(tài)路由產(chǎn)生路由表。
圖2 路由器之間通過路由協(xié)議或靜態(tài)路由產(chǎn)生路由表
如圖2所示,假設(shè)途中A、B、C、D四臺路由器之間運(yùn)行了OSPF協(xié)議,A路由器學(xué)習(xí)到D路由器網(wǎng)段211.91.168.0/24的路由。
2.運(yùn)行MPLS的路由器為路由表中的路由分配標(biāo)簽。
圖3 運(yùn)行MPLS的路由器為路由表中的路由分配標(biāo)簽
圖3A、B、C、D四臺路由器的路由表中都有211.91.168.0/24網(wǎng)段的路由,假設(shè)各路由器都已運(yùn)行MPLS協(xié)議,則每臺路由器都會為該路由分配一個標(biāo)簽。
3.通過LDP/RSVP協(xié)議發(fā)現(xiàn)其MPLS鄰居。
假設(shè)在各路由器接口啟動LDP協(xié)議。通過LDP發(fā)現(xiàn)協(xié)議,A路由器知道B路由器為其MPLS鄰居,B路由器知道A、C為其MPLS鄰居,C路由器知道B、D為其MPLS鄰居,D的MPLS鄰居為C。
4.將打標(biāo)簽的路由通告給其MPLS鄰居。
各路由器將其打了標(biāo)簽的路由通告給其MPLS鄰居,而不管是否已從其鄰居學(xué)習(xí)到該路由的標(biāo)簽。這樣對于路由211.91.168.0/24在各路由器中的標(biāo)簽情況如圖4所示。
圖4 各路由器中的標(biāo)簽情況
5.路由器將其下一跳路由器通告的標(biāo)簽加到其轉(zhuǎn)發(fā)表中。通常在實際應(yīng)用中路由器將目的地不是本地的IP包轉(zhuǎn)發(fā)給其下一跳。因此在MPLS中,路由器只將其下一跳路由器通告的標(biāo)簽加到其轉(zhuǎn)發(fā)表中。對于211.91.168.0/24網(wǎng)段對應(yīng)的轉(zhuǎn)發(fā)如圖5所示。
圖5 路由器將其下一跳路由器通告的標(biāo)簽加到其轉(zhuǎn)發(fā)表中
IP包在MPLS網(wǎng)絡(luò)中轉(zhuǎn)發(fā)過程
1.MPLS入口路由器根據(jù)目的地址查找路由表。
如圖5例,假設(shè)一目的地址為211.91.168.0/24的IP包到達(dá)路由器A。此時路由器A將查找其路由表,發(fā)現(xiàn)該路由下一跳為路由器B。
2.將該IP包打上標(biāo)簽,轉(zhuǎn)發(fā)給下一跳路由器。
上例中,路由器A將目的地址為211.91.168.0/24的IP包打上標(biāo)簽20,轉(zhuǎn)發(fā)給其下一跳路由器B。
3.下一跳路由器查找其轉(zhuǎn)發(fā)表,替換標(biāo)簽,繼續(xù)轉(zhuǎn)發(fā)。
上例中,當(dāng)打有標(biāo)簽的IP包到達(dá)B路由器時,路由器不再根據(jù)目的地址查找路由表了,而是根據(jù)標(biāo)簽查找標(biāo)簽轉(zhuǎn)發(fā)表。從A來的出站標(biāo)簽對應(yīng)于B的入站標(biāo)簽,也就是B通告給A的標(biāo)簽。B路由器通過標(biāo)簽替換,將其入站標(biāo)簽替換成出站標(biāo)簽,即用標(biāo)簽30替換掉標(biāo)簽20,然后轉(zhuǎn)發(fā)給其下一跳路由器C。C路由器同樣進(jìn)行標(biāo)簽交換,將帶有標(biāo)簽40的IP包送給D路由器。
4.出口路由器查找其轉(zhuǎn)發(fā)表,發(fā)現(xiàn)其就是目的地網(wǎng)絡(luò),彈出標(biāo)簽,送給相應(yīng)端口處理。
上例中D路由器將查找標(biāo)簽轉(zhuǎn)發(fā)表,發(fā)現(xiàn)該IP包目的地為自己,則彈出標(biāo)簽。標(biāo)簽交換過程結(jié)束。
VPN在MPLS中的實現(xiàn)
RFC2547bis定義了允許服務(wù)提供商使用其IP骨干網(wǎng)為用戶提供VPN服務(wù)的一種機(jī)制。RFC2547bis也被稱為BGP/MPLSVPN,因為BGP被用來在提供商骨干網(wǎng)中發(fā)布VPN路由信息,而MPLS被用來將VPN業(yè)務(wù)從一個VPN站點(diǎn)轉(zhuǎn)發(fā)至另一個站點(diǎn)。首先對MPLS VPN中用到的常用術(shù)語作一說明,然后介紹一下MPLS VPN實現(xiàn)的基本原理及常見組網(wǎng)。
MPLS/VPN中常用術(shù)語
PE路由器:又稱作提供商邊緣路由器。該路由器負(fù)責(zé)用戶端網(wǎng)絡(luò)到提供商網(wǎng)絡(luò)的接入。
P路由器:又稱提供商路由器。P路由器是提供商網(wǎng)絡(luò)中不連接任何CE設(shè)備的路由器。
CE路由器:又稱用戶邊緣設(shè)備。CE路由器通過連接至一個或多個提供商邊緣(PE)路由器的數(shù)據(jù)鏈路為用戶提供對服務(wù)提供商的接入。
VPN-IPV4地址:VPN用戶通常使用私有地址來規(guī)劃自己的網(wǎng)絡(luò)。當(dāng)不同的VPN用戶使用相同的私有地址規(guī)劃時就會出現(xiàn)路由查找問題。
路由區(qū)分符RD:路由區(qū)分符RD即VPN-Ipv4地址的前8字節(jié),用來區(qū)分不同VPN中的相同私網(wǎng)地址。
路由目標(biāo)RT:RT為MP-BGP中的擴(kuò)展共同體屬性之一。路由目標(biāo)屬性定義了PE路由器發(fā)布路由的一組站點(diǎn)(VRF)的集合。PE路由器使用這一屬性來對輸入遠(yuǎn)端路由到其VRF進(jìn)行約束。
VPN路由轉(zhuǎn)發(fā)表(VRF):每個PE路由器為其直連的站點(diǎn)維持一個VRF。每個用戶鏈接被映射至一個特定的VRF。每個VRF與PE路由器的一個端口相關(guān)聯(lián)。
VPN在MPLS網(wǎng)絡(luò)中的實現(xiàn)
網(wǎng)絡(luò)拓?fù)涿枋?/p>
假設(shè)一個服務(wù)提供商具有一個IP骨干網(wǎng),為不同的企業(yè)提供BGP/MPLSVPN服務(wù)。網(wǎng)絡(luò)中有3個PE路由器,連接到4個不同的用戶站點(diǎn)。
圖6 網(wǎng)絡(luò)拓?fù)?/p>
圖6中,CE1與CE3屬同一VPN1,CE2與CE4同屬另一VPN2。站點(diǎn)1(CE1)中的任何主機(jī)可以與站點(diǎn)3(CE3)中的任何主機(jī)進(jìn)行通信。站點(diǎn)2(CE2)中的任何主機(jī)可以與站點(diǎn)4(CE4)中的任何主機(jī)進(jìn)行通信。
路由學(xué)習(xí)過程
在一個用戶站點(diǎn)能夠?qū)PN業(yè)務(wù)轉(zhuǎn)發(fā)到遠(yuǎn)端站點(diǎn)之前,必須將VPN路由信息從每個用戶站點(diǎn)通過骨干網(wǎng)轉(zhuǎn)發(fā)至其他用戶站點(diǎn)。PE路由器從其直連的CE路由器學(xué)習(xí)路由,入口PE通過骨干網(wǎng)向出口PE發(fā)布路由,出口PE路由器將路由發(fā)布至CE。
標(biāo)簽轉(zhuǎn)發(fā)過程
在網(wǎng)絡(luò)中,只有PE及P路由器運(yùn)行標(biāo)簽轉(zhuǎn)發(fā)協(xié)議,
圖6中CE1與CE3客戶屬于同一VPN。當(dāng)CE1的客戶需要向CE3客戶發(fā)送信息時:
CE1路由器查找路由表,將數(shù)據(jù)包發(fā)給PE1路由器;
PE1路由器發(fā)現(xiàn)CE1屬于VRF1,查找VRF1表,找到目的地址下一跳為MP-BGP對等體路由器PE2;
PE1路由器查找路由表知到達(dá)對等體PE2的直連下一跳為P1路由器;
給該數(shù)據(jù)包分配標(biāo)簽,將該數(shù)據(jù)包轉(zhuǎn)發(fā)給P1路由器;
該數(shù)據(jù)包通過中間P路由器標(biāo)簽轉(zhuǎn)發(fā),到達(dá)PE2;
PE2彈出標(biāo)簽。查找VRF1路由,將該數(shù)據(jù)包轉(zhuǎn)發(fā)給CE3;
到達(dá)CE3客戶。
MPLS/VPN的幾種典型組網(wǎng)
MESH方式
圖7 典型的組網(wǎng)圖
MESH方式為普通VPN業(yè)務(wù),是客戶對VPN的最基本的需求。
基本的VPN服務(wù)要求相同的VPN客戶之間能相互通信,而不同的VPN客戶間不能通信。典型的組網(wǎng)圖如圖7所示,VPN1間互相通信,VPN2間互相通信,而VPN1與VPN2間不能通信。
HUB-SPOKE方式
對于有很多子公司的大客戶來說,普通的VPN業(yè)務(wù)可能無法滿足其需求。通?偣究赡苄枰O(jiān)控子公司間的通信,同時要能夠與各子公司直接通信。這就要求子公司間通信時必須經(jīng)過總公司中轉(zhuǎn)。
圖8 HUB-SPOKE方式
一種典型的組網(wǎng)圖如圖8所示,總公司可以直接與子公司1、子公司2通信,而子公司1和子公司2間通信時必須經(jīng)過總司中轉(zhuǎn),如此總公司可以監(jiān)控各子公司間的通信。其中PE-3為HUB路由器,PE-1及PE-2為SPOKE路由器。
INTERNET接入
VPN客戶間通信使用的是私網(wǎng)地址,可以自由規(guī)劃內(nèi)部網(wǎng)絡(luò),但同樣可能需要能連上INTERNET。
圖9 INTERNET接入
一種典型的組網(wǎng)圖如圖9所示,通過在VPN1的某個網(wǎng)關(guān)上提供NAT完成私網(wǎng)地址到公網(wǎng)地址的轉(zhuǎn)換即可完成INTERNET業(yè)務(wù)。
在ZXR10中配置MPLS/VPN
ZXR10中配置MPLS/VPN的基本步驟
目前ZXR10中MPLS/VPN應(yīng)用最多的為T64E/T128及T32C/T64C等中高檔路由器產(chǎn)品。其中E系列中,T64E/T128支持MPLS/VPN的常用單板有8端口FEI板、2端口GEI接口板、4端口POS3接口板、E1接口板。C系列中支持MPLS/VPN的常用單板有GEI板、POS接口板。
對于T64E/T128而言,要配置MPLS/VPN業(yè)務(wù)必須使用V1.2以上版本或平臺版本,對于C系列路由器而言需要使用ros9302以上版本。在ZXR10中配置MPLS/VPN業(yè)務(wù)主要步驟如下。
1.在PE路由器上定義一個VPN名稱或者說一個VPN的轉(zhuǎn)發(fā)表(VRF)的名稱。名稱長度為1到16個字符。注意該名稱只是本地有效,在某個接口與VPN綁定時將使用到該名稱。
2.定義該VRF的路由標(biāo)識符(RD)和路由目標(biāo)(RT),定義導(dǎo)入導(dǎo)出策略,該策略將在MP-BGP中用來區(qū)分不同的VPN。
3.定義指定的接口與VRF關(guān)聯(lián)。如果這個接口預(yù)先配置了IP地址,那么需將原IP地址刪除,定義好關(guān)聯(lián)后,再行配置IP地址。
4.定義VRF路由。PE路由器與CE路由器之間可以定義靜態(tài)路由,也可以運(yùn)行動態(tài)路由協(xié)議。
5.配置MPBGP協(xié)議。PE路由器從CE路由器學(xué)習(xí)到VRF路由后,需要通過運(yùn)行MPBGP協(xié)議通告給其他PE。配置MPBGP協(xié)議通常分以下三步:
(1)在BGP路由配置模式下,用neighbor命令指定PE對等體,必須是IBGP對等體;
(2)進(jìn)入BGP的address-familaryvpnv4地址模式,激活該對等體;
(3)對于不同的VRF,將其路由(直連、靜態(tài)、OSPF、ISIS)重分布到MPBGP中進(jìn)行通告。
MPSL/VPN配置實例
下面通過一個組網(wǎng)實例講述MPLS/VPN業(yè)務(wù)在ZXR10中的應(yīng)用。實例中描述的是E系列路由器獨(dú)立組網(wǎng)配置。
圖10 E系列路由器獨(dú)立組網(wǎng)配置
圖10中,CE1和CE2在同一個VPN中,CE1的loopback地址為100.1.1.1/24,CE2的loopback地址為200.1.1.1/24,需要能互相學(xué)習(xí)到對端的loopback路由。CE1與PE1之間運(yùn)行BGP協(xié)議,CE2與PE2之間運(yùn)行OSPF協(xié)議。