圣文順,周 誠,孫艷文
(南京工業大學浦江學院,江蘇 南京 211200)
90年代初,隨著社會與經濟的不斷發展,互聯網流量快速增長,眾多企業進入了互聯網云時代。由于許多公司不在同一個地點辦公,因此一所跨城域大型公司可能包括多個子公司和辦事處。NAT雖然可以滿足基本需求,但由于過去硬件技術的限制,路由器采用最長匹配算法[1]逐跳轉發數據包,成為網絡數據轉發的瓶頸,因此快速路由技術[2]成為當時研究的一個熱點。
MPLS(multi-protocol label switching)即多協議標簽交換技術,VPN則是指虛擬專用網絡。MPLS VPN技術是運用多協議標簽交換技術在主干網絡上構建關于企業的IP虛擬局域網,從而實現了網絡在不同地區的應用,具備快速、高效、安全的特性。MPLS VPN能為不同的網絡用戶提供差別性的服務,它將公共網絡的多樣性、拓展性、可靠性并結合流量工程等相關網絡技術體現出來,從而讓網絡的使用更為快速、高效。在各種方案中,IETF確定MPLS協議作為標準的協議。MPLS采用短而定長的標簽進行數據轉發[3],大大提高了硬件限制下的轉發能力;而且MPLS可以擴展到多種網絡協議(如IPv6,IPX等)。隨著設備硬件性能不斷提升,MPLS在提高數據轉發速度上的優勢逐漸弱化,但其支持多層標簽嵌套[4]和設備內轉控分離[5]的特點,使其在VPN、TE等新興應用中得到了廣泛應用。
眾所周知,目前IPv4地址的可用資源已經趨于枯竭,并且已經成為了制約網絡發展的瓶頸,因此NAT(network address translation)技術[6-7]應運而生。NAT方式通過滿足通信的基本要求,進行網絡通信,但是也必然存在一定的缺陷。
首先,NAT方式要對應路由器來開啟NAT進程,因此會加大路由器的負荷;其次,NAT方式容易造成局域網的IP地址對外不可見,使得分公司和辦事處無法直接訪問總部內部的應用程序。隨著互聯網在軟件應用中地位的逐漸提升,帶寬大和時延低也成為一種需求。
為了滿足更快的數據傳輸率,每個路由器生產商進行了大批量的改進和研究工作,例如思科公司為路由器優化了路由表搜索算法并添加了CEF等功能。但仍舊不能徹底解決當前互聯網市場所存在的問題。
MPLS技術的誕生是兩個曾經相互對立的ATM和IP技術融合的產物。MPLS技術兼顧了IP技術信令簡單和ATM交換引擎高效的優點。IP設備廠商和ATM設備廠商,都是在各自原來的基礎上實現MPLS技術。相對于IP設備廠商而言,它并不是修改了原有的IP包封裝于二層鏈路幀中的規范,而是在二、三層包頭之間增加了一個標簽。ATM設備廠商則使用標簽來代替VPI/CVI概念,并且需要在ATM交換機上修改信令控制代碼,確保路由協議可實現不同路由之間三層信息的傳遞。
在圖1中,AR1與AR2的loopback1接口的地址都是屬于私網地址,由于它們不在同一塊網絡中,若它們的IP地址同為172.16.1.1,是不會產生沖突的;然而,若是將這種情況放入VPN網絡中,傳統的VPN網絡結構中的設備是無法識別用戶重疊的路由信息的。因此MPLS VPN的出現解決了傳統VPN技術的固有缺陷之一,即地址空間的重疊問題。

圖1 網絡體系結構
MPLS技術的核心優勢是利用標簽列表的查找代替傳統路由表的遞歸查詢,從而實現標簽的快速交換,提高數據傳輸速率。MPLS在解決大數據量網絡傳輸速度的同時,還需要考慮客戶數據的保密性問題,于是催生了MPLS VPN。MPLS VPN是MPLS技術與VPN的結合,通常應用在大型企業與運營商內部。MPLS VPN提供了路由反射、環路避免、流量工程和負載均衡等多種優化服務,但是如何選擇路由協議去承載MPLS VPN,無疑是當下一大難點。
一般的IGP協議只能用來承載IPV4報文,然而這是遠遠不夠的,MP BG報文的出現解決了無法承載VPN報文和IPV6報文的問題。它在承載VPN報文的同時還攜帶一些必要的擴展屬性。因此該文給出如下選擇方法來選擇路由協議:
(1)公共網絡上的VPN路由數量龐大,BGP是唯一支持大量路由的協議[8];
(2)BGP的報文基于TLV的結構[9-10],便于擴展;
(3)BGP可以承載附加在路由后面的任何信息,并作為可選屬性傳遞給其他鄰居;
(4)本地路由沖突的問題:可以通過在同一臺PE設備上為不同的VPN建立單獨的路由,這樣沖突的路由就被隔離開來;
(5)在路由傳遞過程中,為不同的VPN路由添加不同的標識以示區別,這些標識可作為BGP屬性[11-12]進行傳遞;
(6)由于IP報文不可更改,可以在IP報文頭前加一些信息。由始發路由器打上標記,接收路由器在收到帶標記的數據包時,根據標記轉發給正確的VPN。
將VPN路由發布到全局路由表之前,使用一個全局唯一的標識和路由綁定,用以區分沖突的私網路由[13]。這個標識被稱為RD(route distinguisher)。
RD即VPN路由標識符[14],由8字節組成,用于區分相同地址空間的IPv4前綴,配置時同一PE設備上分配給每個VPN的RD必須唯一。增加了RD的IPv4地址稱為VPN-IPv4地址(即VPNv4地址)[15]。運營商設備采用BGP協議作為承載VPN路由的協議,并將BGP協議進行了擴展,稱為MP-BGP(multiprotocol extensions for BGP-4)[16]。PE從CE接收到客戶的IPv4私網路由后,將客戶的私網路由添加各種標識信息后變為VPNv4路由放入MP-BGP的VPNv4路由表中,并通過MP-BGP協議在公網上傳遞。
由于CE與PE間路由協議的規劃,其設備之間需要交互路由信息。由于MPLS VPN是三層VPN網絡,因此CE節點設備必須選擇三層設備。三層設備指接入層、匯聚層、核心層,即是指MPLS VPN技術在網絡中通過三個層次來進行設計與應用。核心層的作用是調節并疏散網絡中的信息;接入層的作用是做到全面化、系統化來滿足網絡交互與隔離的需求;匯聚層的作用則是做好處理和分析工作,提升網絡服務。CE與PE設備間采用靜態路由協議,方便了維護人員進行管理并減少了維護的復雜度。
MPLS VPN為了實現網絡的安全性,通過采取隔離用戶路由信息和隔離用戶地址等方法來提高標記欺騙和抵抗外部入侵的目的。MPLS是一種隧道技術,使用它來建立VPN十分高效。但是MPLS技術本身非常新穎,所以對MPLS VPN的安全性從多方面做了一個詳細的、適用于BGP的分析和介紹。
在用戶網絡邊緣設備CE(customer edge)上,有接口直接與服務提供商SP(service provider)網絡相連,CE可以是SVN、交換機或一臺主機。通常情況下,CE“感知”不到VPN的存在,也不需要支持MPLS。服務提供商邊緣設備PE((provider edge)則與CE直接相連,在MPLS網絡中,對VPN的所有處理都發生在PE上。
若在CE節點和PE節點之間運行動態路由協議,則CE路由器的IP地址是PE路由器唯一了解的VPN網絡內部信息。要將MPLS網絡核心隱藏,則需要將CE和PE路由器設置為靜態路由。MPLS VPN網絡對數據信息和傳輸安全保障的具體方法如下:
(1)MPLS核心層。
RD(路由標志:route distinguisher)的唯一性保證了用戶在無需進行NAT,甚至不用任何變動的情況下,依舊可以保留原有的IP地址和應用,并穿過基于MPLS的VPN。使得IP VPN與用戶IP網絡的集成更加容易、便捷。
在MPLS VPN網絡中,為了保證每個端點的唯一性,供應商將定義的唯一的一個RD和VPN的IP地址一一結合。用戶保留自己的私有地址而無需通過NAT或者供應商所給的地址,原因是VPN相關節點的FIB中存入了VPN的IP地址入口信息,且這些信息都將通過流量路由找到它對應的節點。
一般連接EXTRANET VPN,需要通過RD定義的兩個VPN之間的信任關系。因為兩個相連之間可以實現VPN互連根本意識不到其余VPN的存在。
(2)MPLS-VPN加密保證安全性。
BGP(border gateway protocol)規定哪些路由信息可以通過哪些屬性和協議進行通信。每個VPN的唯一RD和邏輯端口號決定了VPN成員的屬性。然而用戶并不知道RD的值,只能通過定義的端口才能通信。為了讓每個邊緣LSR只保存和自己相關的FIB(forwarding information base)表和VPN信息,BGP在LSR之間交換FIB表進行更新,并且這種更新只能發生在LSR上,加強了其安全性和保密性。
因為每個用戶的RD都是由其邏輯端口號所決定,而RD在一開始定義時只與某個VPN相關聯,所以用戶只能訪問相關聯的VPN。由于用戶只能意識到這個VPN,因此通過加密來保證其安全性。
(3)數據的完整性保障。
數據的完整性通過MPLS VPN對普通數據包進行選擇封裝來實現。每個路由節點收到的數據包都由MPLS協議進行封裝,然后按標簽分類進行交換。因而不需要對整個數據包進行識別,保證了數據的完整性。
(4)路由隔離。
VPN之間的路由隔離是由MPLS VPN來實現的。路由隔離是指每個虛擬路由轉發實例(VFI)都是由連接每個的VPN的PE路由器來維護的,其駐留都來自同一VPN。每個VPN都會產生一個相對獨立的VFI,所以不會被該PE路由器上其他VPN影響。
然而在穿越MPLS核心到其他路由器時,往往會將BGP的信息重新分發給核心網絡,因此在多協議BGP里增加了唯一的VPN標志符來實現隔離。這種隔離只將路由信息重新分發,并將保存到特定的VFI中。所以穿過MPLS的每個VPN路由之間都是獨立、隔離的。
模擬MPLS VPN仿真網絡,進行虛擬局域網絡邏輯結構統一、基于公網進行內網數據傳輸的可靠性測試實驗,目的是驗證MPLS VPN技術滿足跨區域企業專用網絡的相關技術要求。
分部與總部之間采用MPLS VPN進行通信,用戶與運營商之間使用BGP協議傳遞路由。如圖1所示,配置MPLS VPN需要從以下兩個方面考慮:用戶側設備的配置和運營商骨干網絡的配置。
用戶側設備的配置主要考慮CE與PE之間使用何種協議將私網路由傳遞到運營商網絡;而運營商骨干網絡的配置需要從以下三個方面考慮:運營商骨干網絡IGP協議的配置,保證運營商網絡路由可達;VPN的配置,將私網路由通過運營商設備封裝并傳遞;MP-BGP與MPLS協議的配置,實現私網路由的傳遞與標簽隧道[17]的建立。專用PE設備分工明確,每個PE設備只保存自己的VPN路由,P設備只保存公網路由。因此解決共享PE設備上地址空間重疊的思路是:
將專用PE設備與P設備的功能在同一臺PE設備上完成,并實現VPN路由的隔離。其實傳統VPN解決地址沖突的問題也存在一些方法:使用ACL,NAT等,但這些辦法都沒能從本質上解決問題。要想徹底解決問題,必須在理論上有所突破。可以從專用PE上得到啟示,專用PE設備分工明確,每個PE只保存自己的VPN路由,P設備只保存公網路由。而現在的思路是:將專用PE設備與P設備的功能在一臺PE設備上完成。在共享PE設備上使用VRF技術將重疊的路由隔離:每個VPN的路由放入自己對應的VPN Routing Table中。
PE設備在維護多個VPN Routing Table時,同時還維護一個公網的路由表。
前提1:直連IP地址可達,地址不沖突,線路無故障。
前提2:IGP可達,IP路由表中存在MPLS VPN建立鄰居使用loopback地址。檢測的時候使用ping -a 掛源去ping。
前提3:BGP鄰居關系建立。MPLS VPN使用的是MP-BGP,所以想要實現VPN,就要先建立BGP的鄰居關系[18],否則向上層前提檢查。如果上層前提沒問題,檢查peer是否指定,IPv4地址簇[19]是否指定peer ip地址enable。
(1)首先全局使用MPLS和mpls ldp。
建議配置mpls lsr-id(建議一臺設備的所有ID,都最好統一)。
mpls lsr-id 3.3.3.3
mpls
#
mpls ldp
(2)創建VPN實例。
創建VPN實例的時候需要配置RD值和RT值,其中RD值負責形成VPNv4地址(格式為RD+IPV4地址)。
RT值負責不同VRF表的加入,本端出方向值與對端入方向值[20]相同,對端才能加入本端發過去的表,數據是有去有回。因此,對端的出方向要和本端的入再一致。有時候配置起來RT的出和入使用的都是一個值,RD值和RT值工程師人為規劃就可以。骨干網創建實例與設置RT(route target)屬性配置代碼如下:
ip vpn-instance zhouchneg1
ipv4-family
route-distinguisher 1∶1
vpn-target 12∶3 export-extcommunity
vpn-target 3∶12 import-extcommunity
#
ip vpn-instance zhoucheng2
ipv4-family
route-distinguisher 2∶2
vpn-target 12∶3 export-extcommunity
vpn-target 3∶12 import-extcommunity
(3)接口處理。
下行接口因為要將網絡添加到不同的VRF表中,因此,下行接口或者連接CE、連接終端的接口要綁定到VPN實例中,在配置的時候,先綁定實例,再配置IP地址等信息,不然一旦綁定就會將接口的信息全部清空。上行接口以及P設備沿途的接口需要在接口下使能MPLS、使能mpls ldp,用于標簽的傳遞??偨Y起來就是下行接口綁實例,上行接口轉發標簽。在接口上綁定VPN的配置代碼如下:
interface GigabitEthernet0/0/0
ip binding vpn-instance zhouchenhg1
ip address 10.1.13.3 255.255.255.0
interface GigabitEthernet0/0/1
ip binding vpn-instance zhoucheng2
ip address 10.1.23.3 255.255.255.0
(4)配置MP-BGP。
在BGP的VPNV4地址中,peer對等體,然后將不同協議學來的路由分別引入進內網即可。使用BGP傳遞路由的代碼如下:
bgp 500
peer 5.5.5.5 as-number 500
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 5.5.5.5 enable
#
ipv4-family vpnv4
policy vpn-target
peer 5.5.5.5 enable
#
ipv4-family vpn-instance zhoucheng1
peer 10.1.13.1 as-number 100
#
ipv4-family vpn-instance zhoucheng2
peer 10.1.23.2 as-number 200
用戶設備的配置主要是為了使得總部與分公司之間互相通達,但各分公司之間則實現網絡隔離(見圖2~圖4)。

圖2 總部與分部互ping可通

圖3 分公司之間網絡隔離

圖4 分公司與公網成功隔離
具體的配置代碼如下:
bgp 100
peer 10.1.13.3 as-number 500
#
ipv4-family unicast
undo synchronization
network 172.16.1.1 255.255.255.255
peer 10.1.13.3 enable
bgp 200
peer 10.1.23.3 as-number 500
#
ipv4-family unicast
undo synchronization
network 172.16.2.1 255.255.255.255
peer 10.1.23.3 enable
通過該文的解析可以很清楚地發現,在企業網絡中部署MPLS VPN,可以非常有效地增強企業網絡通信的安全性,只有總部才會知道所有分部門的具體信息,而分部門之間是無法通信的,運營商也無法學習到各個分部門的路由信息。
MPLS VPN技術在廣域網以及其他網絡的相關應用,應結合用戶與市場的實際需求,才能使國內企業不斷發展并穩步向前。廣域網在MPLS VPN技術應用的支持下,日益提升網絡的安全,以此達到滿足國內企業網絡通信安全發展的目的。未來的網絡安全情況很是嚴峻,MPLS VPN在一定程度上解決了企業通信安全的問題,但是配置很復雜,對于運維人員來說也是一個不小的挑戰。