摘要:基于高層虛擬交換技術,采用了MPLS網絡基礎架構,研究并設計了一種支持大規模多用戶并發控制,能進行實時交互及集中管理功能的BGP/MPLS VPN實驗系統。該系統提供了面向BGP/MPLS 的VPN教學與科研環境,可以支持基于MPLS及VPN網絡的各種實驗、應用研究和仿真測試。
關鍵詞:虛擬交換機; BGP; MPLS; VPN
中圖法分類號:TP393.02文獻標識碼:A
文章編號:1001-3695(2007)01-0300-03
VPN是基于公網,利用隧道、加密等技術,為用戶提供的虛擬專用網絡,使用戶有直接連接到私人局域網的感覺。目前,存在兩種既各具特點又具有一定互補性的VPN(虛擬專用網)架構,一個是融BGP(邊界網關協議)和MPLS(多協議標記交換)技術的VPN;另一個是基于IPSec的VPN。
相對于IPSec VPN,BGP/MPLS VPN在數據機密性和完整性上存在一些不足,但它有其獨特的優點:BGP/MPLS VPN支持寬帶高速網絡,沒有對數據包進行加密/解密的過程,所以其傳送速度更快;BGP/MPLS VPN的另一個優點是其可擴展性,二層或IPSec VPN是點到點的,因此星型結構是擴展時最常用的結構,而提供商可簡單地將BGP/MPLS VPN配置成全網狀結構,這不僅能簡化VPN網絡的擴展,還大大提高了VPN網絡的健壯性;BGP/MPLS VPN還能夠提供與MPLS網絡同等級的QoS保障。
為了加強信息安全人才培養的實踐環節,目前急需一種支持不同層次的BGP/MPLS VPN實驗系統,它可以有效滿足信息安全技術人員對培訓的需求,提高他們的動手能力和解決問題的能力,具有積極的現實意義。在文獻[1]和文獻[2]中,C. Metz提出了這兩種VPN的具體實現方案。這兩種實現方案是基于實際網絡設備上的,適用于在公共通信網上建立VPN的商業需求,但并不適合應用于VPN教學實驗環節之中:它們注重結果,不注重過程,缺少對處理過程的顯示,不能對交互性教學很好地支持,而且它們缺少對大規模的多點并發訪問的支持。這就注定將它們應用于教學實驗中會有很多不方便的地方,難以達到理想的教學實驗效果。于是本文在C.Metz的實現方案的基礎上,采用了虛擬交換技術,設計了一種基于虛擬網絡的BGP/MPLS VPN,從而能夠支持多用戶并發控制的BGP/MPLS VPN實驗系統,以滿足VPN教學實驗的需要。
1BGP/MPLS VPN系統的分析與設計
1.1系統結構設計
基于高層虛擬交換技術的BGP/MPLS VPN系統的體系結構設計如圖1所示。
圖1BGP/MPLS VPN系統的體系結構
虛擬交換機通過虛擬網卡的支持,由底層的通信基礎設施負責數據的傳輸。在頂層,虛擬交換機在OSPF,BGP,VRF,MPLS等模塊的支持下,按作用的不同分別作為BGP/MPLS VPN中的CE,PE,P路由器,構建成一個VPN網絡。
在這個基于高層虛擬交換機的VPN的基礎上,本文開發了一種多用戶并發控制的BGP/MPLS VPN系統。圖2是BGP/MPLS VPN多用戶實驗系統的結構。每個實驗機在VPN服務器上啟動一個虛擬交換機作為CE路由器,Web瀏覽器作為用戶與整個系統的接口,用于頁面顯示等交互功能的實現。實驗機通過互聯網連接到Web服務器,由它來響應客戶端的請求,利用JSP及Web服務器端Java組件動態生成HTML代碼,并將處理結果嵌入其中,反饋給客戶端的瀏覽器。數據庫服務器用來實現用戶信息的存儲管理。VPN服務器上啟動了多個PE,P路由器,通過對PE和CE的連接配置以及PE上VRF的配置,使不同的CE之間構成了相互獨立的VPN網絡。
圖2BGP/MPLS VPN多用戶實驗系統
在VPN服務器中,利用多線程啟動多個虛擬交換機,所有的PE路由器都是一個自治系統AS的邊界路由器,它們互相構成IBGP對等體,通過擴展BGP協議來交換路由信息和標簽信息。每個CE路由器和對應的PE路由器構成EBGP對等體,通過標準的BGP協議來交換路由信息。
由于采用了虛擬技術,本系統能很簡單地實現多用戶并發控制。每個實驗者可以根據自己的需求構建一個屬于自己的虛擬網絡,而在VPN服務器上,一個虛擬設備可以是只屬于一個實驗者的,也可以是屬于多個實驗者的,每個實驗者擁有一個只屬于他的虛擬路由表,這樣就實現了多用戶并發控制而他們之間不會相互干擾。
這個實驗系統具有以下幾個特點:
(1)支持多種形式的基于BGP/MPLS VPN實驗。實驗系統可以支持諸如MPLS網絡配置實驗,BGP和MPBGP配置實驗及BGP/MPLS VPN綜合實驗等。
(2)支持大規模性。為了同時滿足眾多實驗參與者的實驗需求,并充分利用有限的網絡資源,基于在PE路由器上不同的VRF配置,系統可以支持近百名學生同時進行VPN實驗而互不影響,達到了多用戶并發控制的要求。
(3)支持交互性。通過Web瀏覽器形式,服務器根據實驗者的請求,在VPN服務器上進行相關的配置,然后返回實驗中的相關數據結果,包括VPN配置結果、VPN隧道建立結果和VPN數據發送結果等。系統最大程度地支持交互性,以實現實驗者與教師、實驗者與VPN設備之間的互動。
(4)支持集中式管理。經過管理中心身份認證后,實驗者才能進行各種實驗。同時管理中心記錄實驗者的身份ID,自動生成實驗者相應的實驗記錄文件。集中式管理提高了實驗環境的安全性,也便于對實驗者的監督管理。
此外,傳統的BGP/MPLS VPN大都基于實際的Cisco路由器,由于實驗需要多臺路由器,而每臺路由器的成本不便宜,所以傳統實驗的成本非常高。本實驗系統采用了虛擬交換技術,在一臺服務器上可以啟動多個虛擬交換機,所以成本大大降低。利用虛擬網絡和虛擬交換技術,還可進行其他網絡新技術的研究。
1.2高層虛擬交換模塊設計
在BGP/MPLS VPN體系結構中,采用了高層虛擬交換機來實現CE,PE,P路由器。它在基于第二層虛擬交換機的基礎上,添加了高層的網絡協議模塊,以實現高層虛擬交換。二層虛擬交換機有以下幾個優勢:
①采用多線程技術大大提高了虛擬交換機的數據轉發性能;
②支持在一臺主機上多個虛擬交換機的并發運行和通信;
③利用Socket技術,支持不同主機上的虛擬交換機之間的通信;
④支持高層網路協議的擴展;
⑤成本低廉,易于集中管理。
在控制層面上將第三層的OSPF路由協議,第四層的LDP標簽交換協議和MPBGP擴展邊界網關協議集成到虛擬交換機中,同時在數據層面上,將MPLS多協議標簽交換加入數據處理模塊,這樣就實現了一個高層的虛擬交換機,以滿足BGP/MPLS VPN的功能需要。
1.3CE和PE路由器的BGP模塊設計
1.3.1FSM狀態機
BGP協議通過端口號為179的TCP連接來進行通信,當虛擬交換機在179號端口發現一個TCP連接后,就為這個連接分配一個FSM狀態機,以后就通過這個狀態機來控制BGP的路由和標簽分發。
一個FSM狀態機有六種狀態:1IDLE;2CONNECT;3ACTIVE;4OPENSENT;5OPENCONFIRM;6ESTABLISHED。
典型的狀態機變化過程如圖3所示。
圖3BGP狀態機變化過程
當一對BGP Peer通過IGP的TCP連接建立了ESTABLISHED狀態后,就開始進行路由信息庫的同步。
1.3.2擴展的BGP協議
BGP協議通過UPDATE數據包進行路由信息的同步。它的一大特點是在UPDATE數據包中可以攜帶MPBGP信息,從而對標準的BGP進行擴展。根據BGP/MPLS VPN的系統要求,設計如下的MPBGP數據結構:
class MP_RIB{
String nexthop; //IPV4 of the next BGP
String prefix; //IPV4 of the destination;
int length; //前綴匹配長度
Interface viainterface; //出接口
int label_in; //入標簽
int label_out; //出標簽
}
當虛擬交換機啟動了標準的BGP協議時:
(1)對收到的MPBGP信息不作任何處理,不進行轉發。
(2)對收到的標準BGP信息,則將信息加入標準路由信息庫RIB后,根據BGP信息分發規則,向BGP Peer分發信息。BGP信息分發規則是:如果是從EBGP收到的,則向所有其他的BGP Peer發送標準的BGP信息;如果是從IBGP收到的,則僅向EBGP Peer發送標準的BGP信息。
當虛擬交換機啟動了擴展的BGP協議時:
(1)對收到的MPBGP信息,則將信息加入擴展路由信息庫MPRIB后,根據BGP信息分發規則,向BGP Peer同時分發標準和擴展的BGP信息。
(2)對收到的標準BGP信息,將信息同時加入標準路由信息庫RIB和擴展路由信息庫MPRIB后,根據BGP信息分發規則,向BGP Peer同時分發標準和擴展的BGP信息。
1.3.3PE路由器的VRF模塊
為了讓PE路由器上能區分是由哪個本地接口上送來的VPN用戶路由,在PE路由器上創建了大量的VRF(VPN Routing and Forwarding)。每個VRF與一個虛擬交換機的接口對應。
通過VRF,可以隔離不同VPN用戶之間的路由,也能解決不同VPN之間IP地址空間重疊的問題。
VRF的數據結構定義如下:
class VRF{
Interface inf; //當前VRF綁定的虛擬交換機的接口
int rd; //Route Distinguisher
int rt; //Route Target
MP_RIB mp_rib; //擴展路由信息庫
}
當CE和PE的EBGP關系建立后,CE向PE發送標準的BGP路由信息。PE接收到標準路由信息后,將它加入與這個接口對應的VRF內的擴展路由信息庫,同時根據這個VRF的RD和RT,連同為它分配的入標簽label_in(label_out為0,表示邊界路由器),向所有的PE發送擴展BGP信息。
當其他PE接收到擴展BGP信息后,搜索所有的VRF,查找相匹配的RD和RT,將相應的路由和標簽安裝到VRF的路由信息庫和出標簽label_out中,同時為它分發入標簽,向CE發送標準的和擴展的BGP信息。
2BGP/MPLS VPN的系統測試
2.1系統實現拓撲與配置
VRF結構與BGP/MPLS VPN的拓撲配置如圖4、圖5所示。
按照圖5的BGP/MPLS VPN搭建好網絡拓撲后,在所有CE上啟動標準BGP協議,在所有PE上啟動擴展BGP協議、OSPF協議、LDP協議,在所有的P路由器上啟動OSPF協議、LDP協議。接著進行VRF配置:
在PE1連向CE1的接口上配置VRF1(RD=1,RT=100)
在PE1連向CE2的接口上配置VRF2(RD=2,RT=200)
在PE2連向CE3的接口上配置VRF3(RD=1,RT=100)
在PE3連向CE4的接口上配置VRF4(RD=2,RT=200)
2.2系統測試
2.2.1控制層面測試
在控制層面上,CE3將自己的IP路由192.168.6.1通過標準BGP協議發送到PE2,PE2將這個IP裝入VRF3中的擴展路由信息庫,置目的地址和下一跳BGP為192.168.6.1,并分發出標簽label_out=0,入標簽label_in=1,連同RD=1,RT=1一起,通過擴展BGP協議發送到PE1,PE3。在PE3上,搜索不到相匹配的VRF,所以不進行處理。在PE1上,搜索到VRF1的RD與RT相匹配,于是將192.168.6.1這個IP裝入VRF1中的擴展路由信息表,置目的地址為192.168.6.1,下一跳BGP為PE2的IP地址192.168.4.1,出標簽label_out為1,分發入標簽label_in為2,向VRF1綁定的CE1發送標準的和擴展的BGP信息。于是CE1就學習到了CE3的路由,而CE2和CE4根本看不到CE1和CE3的存在。同理,CE2和CE4也可以互相學習到對方的路由。虛擬路由轉發如表1所示。
表1虛擬路由轉發表
prefix192.168.1.1192.168.6.1192.168.1.1192.168.6.1
length32323232
nexthop192.168.1.1192.168.4.1192.168.1.2192.168.6.1
viainterface1312
label_in3241
label_out0130配置
VRF2(RD=2,RT=200)VRF4(RD=2,RT=200)
prefix192.168.2.1192.168.6.1192.168.2.1192.168.6.1
length32323232
nexthop192.168.2.1192.168.5.1192.168.1.2192.168.6.1
viainterface2312
label_in7685
label_out0570
2.2.2數據層面測試
在數據層面上,當CE1發送數據給CE3時,CE1向PE1以192.168.6.1為目的IP地址發送數據包,PE1收到數據包后,在相對應的VRF1中查找到路由,根據MPLS協議,將lable_out=1加入底層標簽棧,同時查找到下一跳BGP的IP地址為PE2的IP(192.168.4.1),以PE2的IP(192.168.4.1)為目的地址,在IGP全局路由信息庫中查找,得到另一個出標簽,將它加入頂層標簽棧,然后將數據包從出接口發送出去。數據包通過P路由器的MPLS轉發,頂層標簽不斷變化,但底層標簽保持不變。直到PE2收到這個數據包后,發現頂層標簽指示自己是目的地址,于是PE2繼續查看底層標簽,搜索到VRF3中有相應的label_in=1相匹配。由于相應的出標簽label_out=0,所以PE2將所有的標簽棧清空后,將數據包從viainterface出接口中發送出去。最后CE3就接收到了從CE1發送來的數據包,數據傳送成功,而CE2和CE4無法獲知數據包的內容(表2)。
表2VPN數據測試結果
3結束語
本文實現了一種高層虛擬交換機,并利用它實現了基于虛擬網絡的BGP/MPLS VPN系統的設計,它支持多用戶并發控制的BGP/MPLS VPN實驗系統和其他網絡新技術的研究。本文的下一步工作是如何通過高層虛擬交換機來進一步實現IPSec over BGP/MPLS VPN。這種VPN系統擁有更高水平的數據機密性,同時又擁有BGP/MPLS VPN的所有優點。
參考文獻:
[1]C Metz.The Latest in VPN: Part I[J]. IEEE Internet Computing, 2003,7(1):8791.
[2]C Metz.The Latest in VPNs: Part II[J]. IEEE Internet Computing, 20-04,8(3):6065.
[3]RFC 17711995,A Border Gateway Protocol 4 (BGP4)[S].
[4]RFC 25471999, BGP/MPLS VPN[S].
[5]RFC 22831998,Multiprotocol Extensions for BGP4[S].
[6]Rekhter, Rosen.Carrying Label Information in BGP4[R]. Work in Progress,1999.
[7]RFC 29172000,A Core MPLS IP VPN Architecture[S].
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文