童靜思 陸松年
[摘 要]本文提出了一種基于虛擬路由器的MPLS VPN教學(xué)系統(tǒng)的整體設(shè)計(jì)思路,并給出了虛擬路由器的總體設(shè)計(jì)以及模塊設(shè)計(jì)和實(shí)現(xiàn)方法。該方案既能為用戶提供了統(tǒng)一的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),又能使各用戶進(jìn)行獨(dú)立的配置和操作,為教學(xué)系統(tǒng)提供了方便且高效的實(shí)驗(yàn)平臺。
[關(guān)鍵詞]虛擬路由器 MPLS VPN
[中圖分類號]TP393[文獻(xiàn)標(biāo)識碼]A[文章編號]1007-9416(2009)11-0061-03
1 引言
為了加強(qiáng)信息安全人才培養(yǎng)的實(shí)踐環(huán)節(jié),目前急需一種支持不同層次的MPLS VPN實(shí)驗(yàn)系統(tǒng),它可以有效滿足信息安全教學(xué)實(shí)驗(yàn)和培訓(xùn)的需求,提高他們的動手能力和解決問題的能力。但是傳統(tǒng)的MPLS VPN大都是基于實(shí)際的Cisco路由器上的,由于實(shí)驗(yàn)需要多臺路由器,而每臺路由器的成本不菲,所以傳統(tǒng)實(shí)驗(yàn)的成本非常高。本實(shí)驗(yàn)系統(tǒng)采用了虛擬路由技術(shù),在一臺服務(wù)器上可以啟動多個(gè)虛擬路由器,所以成本大大降低。本文在虛擬路由技術(shù)的基礎(chǔ)上設(shè)計(jì)了一種基于虛擬網(wǎng)絡(luò)的MPLS VPN實(shí)驗(yàn)系統(tǒng),能夠支持多用戶并發(fā)控制以滿足VPN教學(xué)實(shí)驗(yàn)的需要,同時(shí)也可以用于支持基于MPLS及VPN網(wǎng)絡(luò)的各種實(shí)驗(yàn)、工程應(yīng)用研究和工程仿真測試。
2 MPLS的VPN實(shí)驗(yàn)系統(tǒng)的整體設(shè)計(jì)
2.1 體系結(jié)構(gòu)
圖1中MPLS核心網(wǎng)絡(luò)仿真服務(wù)器運(yùn)行以下程序:三種VR進(jìn)程,分別仿真PE1、PE2和P路由器;管理中心守護(hù)進(jìn)程,主要功能是接收實(shí)驗(yàn)者和教師的操作信息,將指令解碼,然后根據(jù)指令控制路由器采取相應(yīng)動作,并接收各個(gè)路由器的反饋信息回顯給實(shí)驗(yàn)者,同時(shí),負(fù)責(zé)把相關(guān)數(shù)據(jù)保存到數(shù)據(jù)庫。除此之外,還要運(yùn)行Web服務(wù)器、數(shù)據(jù)庫服務(wù)器,并采用JSP和Applet來開發(fā)網(wǎng)頁,MySQL來完成數(shù)據(jù)庫操作(見圖1)。
2.2 功能模塊框圖
在系統(tǒng)需求及功能分析基礎(chǔ)上,把實(shí)驗(yàn)系統(tǒng)劃分為如下幾個(gè)模塊,如圖2所示。
(1)登錄驗(yàn)證模塊:負(fù)責(zé)教師、實(shí)驗(yàn)者登錄驗(yàn)證,并依據(jù)身份將他們重定向到各自的網(wǎng)頁界面。
(2)實(shí)驗(yàn)交互系統(tǒng)模塊:是實(shí)驗(yàn)者、教師和教學(xué)系統(tǒng)的人機(jī)接口,主要功能是向?qū)嶒?yàn)者提供實(shí)驗(yàn)環(huán)境,以執(zhí)行實(shí)驗(yàn)和察看實(shí)驗(yàn)結(jié)果,并為教師提供管理界面。利用JSP和Mysql實(shí)現(xiàn)交互式教學(xué)。
(3)管理中心守護(hù)進(jìn)程模塊:主要功能是接收實(shí)驗(yàn)者和教師的操作信息,并將指令解碼,然后根據(jù)指令控制路由器采取相應(yīng)動作,同時(shí)具有接收各個(gè)路由器的反饋信息,并回顯給實(shí)驗(yàn)者。除此之外,還負(fù)責(zé)將相關(guān)數(shù)據(jù)存儲到數(shù)據(jù)庫。
2.3 實(shí)驗(yàn)方法設(shè)計(jì)
本系統(tǒng)的兩個(gè)實(shí)驗(yàn)分別是MPLS配置實(shí)驗(yàn)和MPLS VPN配置實(shí)驗(yàn)。為了解決多用戶并發(fā)訪問,同時(shí)為了節(jié)約資源,兩個(gè)實(shí)驗(yàn)相對獨(dú)立。
2.3.1 MPLS配置實(shí)驗(yàn)
首先,在頁面上輸入P(MPLS核心路由器)、PE(運(yùn)營商邊緣路由器)和CE(客戶端路由器)的個(gè)數(shù),根據(jù)P、PE和CE的個(gè)數(shù)建立虛擬拓?fù)?即啟動各個(gè)路由器進(jìn)程、設(shè)置路由器名稱、ID和端口IP地址,并把各路由器連接起來。最后頁面上將顯示類似如圖3所示的拓?fù)浣Y(jié)構(gòu)。其中p1, p2, p3為學(xué)生取的路由器名稱。各個(gè)實(shí)驗(yàn)者的虛擬拓?fù)淇梢圆灰粯?而且相互獨(dú)立,并將相關(guān)信息存儲到數(shù)據(jù)庫。然后,在虛擬拓?fù)涞幕A(chǔ)上配置各個(gè)虛擬路由器(見圖3)。
最后通過PING對方主機(jī)來判斷MPLS是否建立成功,并將相應(yīng)結(jié)果保存到數(shù)據(jù)庫。
2.3.2 MPLS VPN配置實(shí)驗(yàn)
要建立VPN的前提是MPLS的核心網(wǎng)絡(luò)必須啟用MPLS,因此,本實(shí)驗(yàn)必須在構(gòu)建MPLS網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行VPN配置。MPLS的配置如前所述,不同之處是本實(shí)驗(yàn)至少要求兩個(gè)學(xué)生一組,每組有各自設(shè)計(jì)的拓?fù)?每個(gè)學(xué)生只配置屬于自己一半的網(wǎng)絡(luò)拓?fù)?所有學(xué)生的配置組合起來形成一個(gè)VPN網(wǎng)絡(luò)。
下面用一個(gè)實(shí)例來演示MPLS VPN基本配置的實(shí)現(xiàn)方法。圖1中的CE1與CE4將構(gòu)建一個(gè)VPN,為此,路由器PE1、PE2、P1、P2將配置MPLS。路由器CE被配置成VPN中的用戶邊界路由器。PE和CE之間采用靜態(tài)路由來獲得路由信息。
相關(guān)的配置如下:
MPLS配置完成后進(jìn)行VPN配置,其中PE路由器將配置以下參數(shù):
(1)定義并且配置VRF、RD;(2)定義RT,并且配置導(dǎo)入導(dǎo)出策略;(3)配置MP-BGP協(xié)議;(4)配置PE到CE的路由協(xié)議;將用戶前綴加到VRF中。這可通過在PE路由器和CE路由器之間運(yùn)行靜態(tài)路由來實(shí)現(xiàn)。并根據(jù)地址族將其重新發(fā)送到MP-iBGP里。(5)配置連接CE的接口,將該接口和前面定義的VRF聯(lián)系起來。
然后驗(yàn)證各個(gè)配置是否正確,如果正確,則把各個(gè)同學(xué)的拓?fù)渚W(wǎng)絡(luò)連接成一個(gè)VPN網(wǎng)絡(luò)。最后PING對方內(nèi)網(wǎng)主機(jī)驗(yàn)證MPLS VPN是否建立成功,并將相應(yīng)結(jié)果保存到數(shù)據(jù)庫。
3 實(shí)驗(yàn)系統(tǒng)實(shí)現(xiàn)方法
3.1 支持MPLS的虛擬路由器的主要模塊
對于一個(gè)支持MPLS的虛擬路由器,其內(nèi)部模塊的劃分及各模塊之間的關(guān)系如圖4所示。其中主要包括三大部分:路由協(xié)議部分(IP協(xié)議)、控制部分(LDP協(xié)議)和轉(zhuǎn)發(fā)部分(MPLS協(xié)議)(見圖4)。
本文實(shí)現(xiàn)的虛擬IP路由器的基本功能包括:路由的計(jì)算、數(shù)據(jù)分組的轉(zhuǎn)發(fā)以及訪問控制列表功能。各個(gè)功能模塊都受命令行控制模塊的控制。
LDP協(xié)議是MPLS的控制與信令協(xié)議,這里采用RFC3036標(biāo)準(zhǔn)。該協(xié)議部分主要包括兩個(gè)模塊:更新出標(biāo)簽?zāi)K和分配入標(biāo)簽?zāi)K。
3.2 支持MPLS的虛擬路由器的主要模塊的實(shí)現(xiàn)方法
3.2.1 虛擬設(shè)備及OSPF模塊實(shí)現(xiàn)
由于我們這里是用java來實(shí)現(xiàn)虛擬路由器,所以對該問題的類的合理劃分將是有效實(shí)現(xiàn)這個(gè)系統(tǒng)的前提。在這個(gè)系統(tǒng)中,我們主要定義的功能類包括:(1)OSPF協(xié)議數(shù)據(jù)結(jié)構(gòu)類:OSPF;(2)區(qū)域類:AreaData;(3)接口數(shù)據(jù)結(jié)構(gòu)類:Interface;(4)鄰居數(shù)據(jù)結(jié)構(gòu)類:Neighbor。一個(gè)系統(tǒng)是一個(gè)OSPF域,該域中同時(shí)運(yùn)行著下面的所有類,各類的定義及功能可概括如下:
OSPF類:在這個(gè)域中同時(shí)運(yùn)行著多個(gè)這樣的路由器實(shí)例線程。其中主要的屬性包括對路由器類型的判斷,存儲路由器所有區(qū)域的數(shù)據(jù)和路由表,對報(bào)文年齡和路由表計(jì)算進(jìn)行控制的定時(shí)器,以及一些路由器的參數(shù)。
AreaData類:一個(gè)路由器如果是內(nèi)部路由器,則它的所有接口只屬于一個(gè)區(qū)域,但如果是邊界路由器,那么一個(gè)路由器的接口就會分屬于不同的區(qū)域。區(qū)域類主要是用來保存該區(qū)域的鏈路狀態(tài)數(shù)據(jù)庫(LSDatabase),以及一個(gè)計(jì)算該區(qū)域的最短路徑樹的算法實(shí)例。同時(shí)還保存了該路由器中所有屬于該區(qū)域的接口。
Interface類:在一個(gè)路由器中往往運(yùn)行著多個(gè)接口實(shí)例線程。在接口類中主要包括該接口的端口號,用于后面路由器之間的通信;還有鄰居狀態(tài)結(jié)構(gòu),用來保存它的所有鄰居及其狀態(tài)。這個(gè)類是整個(gè)系統(tǒng)的核心類,因?yàn)樗泻罄m(xù)的數(shù)據(jù)收發(fā)和處理都以接口為單位進(jìn)行。
Neighbor類:一個(gè)接口可以同時(shí)與多個(gè)路由器相連,所以要為每個(gè)鄰居建立一個(gè)鄰居數(shù)據(jù)結(jié)構(gòu),用于保存鄰居的狀態(tài)和相關(guān)參數(shù)。同時(shí)還包括了要發(fā)向該鄰居的報(bào)文消息隊(duì)列。
3.2.2 LDP模塊的實(shí)現(xiàn)
在運(yùn)行LDP協(xié)議后首先要在路由器之間建立LDP會話,然后才能在LSR間傳輸標(biāo)簽信息。在會話建立的過程中,要最多經(jīng)歷5個(gè)狀態(tài),它們是:NOT EXISTENT、INITIALIZED、OPENSENT、OPENREC、OPERATIONAL。當(dāng)達(dá)到OPERATIONAL狀態(tài)說明會話已經(jīng)建立。
LIB、FIB和LFIB表結(jié)構(gòu)定義
LIB、FIB和LFIB表在整個(gè)MPLS的運(yùn)行過程中起到了重要的作用,標(biāo)簽的存儲以及分組的轉(zhuǎn)發(fā)都要涉及到對這三個(gè)表的操作,這三個(gè)表的結(jié)構(gòu)可定義如下:
(1) LIBEntry:由FEC、LDP Identifier和標(biāo)簽構(gòu)成,代表了一個(gè)由LDP Identifier所指定的路由器接口對FEC類目的地址所發(fā)來的標(biāo)簽;
(2) LIB表:標(biāo)簽信息庫,包含了所有接收到的標(biāo)簽信息,由多個(gè)LIBEntry構(gòu)成;(3) NHLFE:下一跳標(biāo)簽轉(zhuǎn)發(fā)表項(xiàng),由出標(biāo)簽、標(biāo)簽操作、下一跳端口IP和當(dāng)前路由器的發(fā)送接口構(gòu)成;(4) FIB表:轉(zhuǎn)發(fā)信息庫,是由多個(gè)FEC到NHLFE的映射(FEC to NHLFE Map, FTN)構(gòu)成;(5)LFIB表:標(biāo)簽轉(zhuǎn)發(fā)信息庫,是由多個(gè)入標(biāo)簽(inLabel)到NHLFE的映射(Incoming Label Map, ILM)構(gòu)成。
4 結(jié)語
本文提出了一個(gè)基于虛擬路由器實(shí)現(xiàn)的MPLS VPN實(shí)驗(yàn)系統(tǒng)的方案,為實(shí)驗(yàn)教學(xué)提供了一個(gè)方便高效的平臺。除了實(shí)驗(yàn)系統(tǒng),本文中實(shí)現(xiàn)的虛擬路由器還可以靈活地應(yīng)用到更多的領(lǐng)域,它的發(fā)展將帶動諸如實(shí)驗(yàn)系統(tǒng),網(wǎng)絡(luò)仿真,新技術(shù)研究等領(lǐng)域的發(fā)展。
[注釋]
[1] C. Metz, “The Latest in Virtual Private Networks: Part I” IEEE Internet Computing, 66.
[2] C. Metz,“The Latest in VPNs: Part II” IEEE Internet Computing,113.
[作者簡介]
姓名:童靜思;性別:女;學(xué)歷:碩士研究生;職稱:學(xué)生;研究方向:現(xiàn)代通信 單位名稱:上海交通大學(xué)。