童靜思 陸松年


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