當(dāng)前,兩種新興的VPN技術(shù):BGP/MPLS VPN和IPSec VPN越來(lái)越受到人們的關(guān)注。本文分別討論了基于BGP/MPLS和IPSec來(lái)提供VPN業(yè)務(wù)的機(jī)制,評(píng)價(jià)了兩種VPN解決方案,為網(wǎng)絡(luò)管理者評(píng)估這兩種方案提出了指導(dǎo)方針。
1 簡(jiǎn)介
目前,兩種既各具特點(diǎn)又具有一定互補(bǔ)性的VPN(虛擬專用網(wǎng))架構(gòu)正逐漸在提供新興服務(wù)的基礎(chǔ)網(wǎng)絡(luò)領(lǐng)域大行其道,這兩種VPN就是融BGP(邊界網(wǎng)關(guān)協(xié)議)和MPLS(多協(xié)議標(biāo)記交換)技術(shù)的VPN和基于IPSec的VPN。
RFC 2547定義了允許服務(wù)提供商使用其IP骨干網(wǎng)為用戶提供VPN服務(wù)的一種機(jī)制。RFC 2547也被稱為BGP/MPLS VPN,因?yàn)锽GP被用來(lái)在提供商骨干網(wǎng)中發(fā)布VPN路由信息,而MPLS被用來(lái)將VPN業(yè)務(wù)從一個(gè)VPN站點(diǎn)轉(zhuǎn)發(fā)至另一個(gè)站點(diǎn)。BGP/MPLS VPN能夠利用公用骨干網(wǎng)絡(luò)強(qiáng)大的傳輸能力,降低企業(yè)內(nèi)部網(wǎng)絡(luò)/Internet的建設(shè)成本,極大地提高用戶網(wǎng)絡(luò)運(yùn)營(yíng)和管理的靈活性,同時(shí)能夠滿足用戶對(duì)信息傳輸安全性、實(shí)時(shí)性、寬頻帶和方便性的需要。
IPSec是由IETF 的IPSec 工作組定義的一種開放源代碼框架。IPSec 的工作組對(duì)數(shù)據(jù)源認(rèn)證、數(shù)據(jù)完整性、重播保護(hù)、密鑰管理以及數(shù)據(jù)機(jī)密性等主要的有關(guān)方面定義了特定協(xié)議。IPSec通過激活系統(tǒng)所需要的安全協(xié)議、確定用于服務(wù)的算法及所要求的密鑰來(lái)提供安全服務(wù)。由于這些服務(wù)在IP層提供,能被更高層次的協(xié)議所利用(如TCP、UDP、ICMP、BGP等),并且對(duì)于應(yīng)用程序和終端用戶來(lái)說(shuō)是透明的,所以,應(yīng)用和終端用戶不需要更改程序和進(jìn)行安全方面的專門培訓(xùn),同時(shí)對(duì)現(xiàn)有網(wǎng)絡(luò)的改動(dòng)也最小。
2 BGP/MPLS VPN體系結(jié)構(gòu)
RFC 2547中定義了三種類型的路由器:CE(用戶網(wǎng)邊緣路由器)在用戶側(cè)為用戶所有,接收和分發(fā)用戶網(wǎng)絡(luò)路由,CE連接到提供商的PE(骨干網(wǎng)邊緣路由器);PE處理VPN-IPv4路由,這是BGP/MPLS VPN的核心;位于骨干網(wǎng)核心的P(骨干網(wǎng)核心路由器)負(fù)責(zé)MPLS包的轉(zhuǎn)發(fā)。
VPN是若干個(gè)用戶站點(diǎn)的集合,而站點(diǎn)是VPN中一個(gè)孤立的IP網(wǎng)絡(luò),比如可以是公司總部或分支機(jī)構(gòu)等。用戶接入BGP/MPLS VPN的方式是每個(gè)站點(diǎn)提供一個(gè)或多個(gè)CE同骨干網(wǎng)PE的連接,每個(gè)站點(diǎn)在PE中由各個(gè)VRF(虛擬路由轉(zhuǎn)發(fā)實(shí)例)來(lái)表示,它包含了與一個(gè)站點(diǎn)相關(guān)的路由表、轉(zhuǎn)發(fā)表、接口、路由實(shí)例以及路由策略等。PE上的接口可以綁定到唯一一個(gè)VRF上,一個(gè)VRF也可以被綁定到多個(gè)接口上,但PE之間不能交換VRF信息。
當(dāng)邊緣設(shè)備在兩個(gè)VPN站點(diǎn)使用相同的地址前綴,就會(huì)在路由解析時(shí)出現(xiàn)沖突,BGP/MPLS VPN使用VPN-IPv4地址族和MP-BGP(多協(xié)議擴(kuò)展BGP)來(lái)解決這一問題。一個(gè)VPN-IPv4地址(12字節(jié))是由8字節(jié)的RD(路由標(biāo)示)和4字節(jié)的IPv4地址組成。這樣就可以把相同的地址前綴翻譯成不同的VPN-IPv4地址,也就可以分別為每個(gè)VPN站點(diǎn)生成與該VPN-IPv4地址對(duì)應(yīng)的不同路由。
BGP/MPLS VPN中有兩種重要的數(shù)據(jù)流,一種是進(jìn)行路由分發(fā)和LSP(標(biāo)記轉(zhuǎn)發(fā)路徑)確定的控制流,另一種是用戶的VPN業(yè)務(wù)流。存在兩種控制機(jī)制,一種負(fù)責(zé)不同PE間路由信息的交換,另一種負(fù)責(zé)建立通過提供商骨干網(wǎng)的LSP。
路由分發(fā)基于BGP的擴(kuò)展共同體屬性,以目的路由為基準(zhǔn)進(jìn)行過濾。當(dāng)一條VPN路由插入到BGP中后,VPN路由目標(biāo)擴(kuò)展共同體屬性就與其相關(guān)聯(lián),這些都來(lái)源于路由學(xué)習(xí)建立的VRF相關(guān)BGP出口列表。每一個(gè)PE也包含與每一個(gè)VRF對(duì)應(yīng)的入口列表,入口列表類似于路由器中允許接入VRF的ACL定義。例如,PE中某一條特定VRF的入口列表包含目的接口A和C,但不包含B,則包含接口A和C的VPN路由能夠接入VRF,B的則不能。 VPN隧道的LSP的建立可以通過LDP或RSVP來(lái)完成。LDP在PE之間建立盡力而為的LSP,當(dāng)VPN需要QoS時(shí),則必須通過RSVP建立具有QoS能力的路由LSP。
路由器CE1向CE2所在的網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。首先轉(zhuǎn)發(fā)到默認(rèn)網(wǎng)關(guān)PE1,PE1在與站點(diǎn)1對(duì)應(yīng)的VRF中進(jìn)行路由查詢,PE2廣播的到站點(diǎn)2的路由對(duì)應(yīng)標(biāo)記5,同時(shí)查詢BGP的下一跳路由,PE1查找到PE2的路由LSP在轉(zhuǎn)發(fā)分組到特定分組之前需加標(biāo)記100,即入口路由器P1在分組上加兩個(gè)標(biāo)記,棧底的5使PE2將分組轉(zhuǎn)發(fā)到特定CE,棧頂?shù)?00用來(lái)在網(wǎng)絡(luò)中轉(zhuǎn)發(fā)分組。
分組在路由器P1處交換標(biāo)記,用標(biāo)記2替代100,P2作為L(zhǎng)SP的倒數(shù)第2個(gè)路由器在轉(zhuǎn)發(fā)分組到PE2前彈出棧頂標(biāo)記,PE2利用棧底標(biāo)記5來(lái)標(biāo)識(shí)下一跳的CE,彈出標(biāo)記5后將IPv4包轉(zhuǎn)發(fā)到CE2。
3 BGP/MPLS VPN特點(diǎn)
BGP/MPLS VPN為安全的點(diǎn)到點(diǎn)通信提供了一種可選的方案,它是具有與ATM/FR虛電路的VPN相同安全級(jí)別的VPN。BGP/MPLS VPN建立了幾種內(nèi)部機(jī)制來(lái)保障安全性。VPN-IPv4地址可以使不同的VPN在地址前綴重疊時(shí)保持獨(dú)立。
路由分離通過使連接到PE的用戶站點(diǎn)對(duì)應(yīng)不同的VRF來(lái)實(shí)現(xiàn),并且,在BGP擴(kuò)展共同體屬性中,通過使用唯一標(biāo)示符在BGP路由更新過程中進(jìn)一步保證路由分離。當(dāng)正確地配置了地址空間和路由分離后,BGP/MPLS VPN就能夠提供同二層VPN,如ATM/FR VPN同樣的安全性。此時(shí)要想通過MPLS云侵入其他VPN是不可能的,除非經(jīng)過了特定的配置。
這些安全機(jī)制存在于提供商網(wǎng)絡(luò)的內(nèi)部,提供商核心網(wǎng)絡(luò)的結(jié)構(gòu)對(duì)用戶來(lái)說(shuō)是不可見的。CE知道下一跳的PE路由,卻不能得到任何核心P路由,因此,用戶不能獲得核心網(wǎng)絡(luò)結(jié)構(gòu)的情況,這就能保護(hù)潛在的攻擊者使用這些信息進(jìn)行拒絕服務(wù)、欺騙、會(huì)話竊取等攻擊。
可能出現(xiàn)欺騙用戶空間的情況,然而,因?yàn)槊恳粋€(gè)VRF都對(duì)應(yīng)一個(gè)或多個(gè)指向用戶的接口,要想在VPN中欺騙IP地址,攻擊者必須在用戶側(cè)。如果VPN用戶能夠采取措施保障內(nèi)部站點(diǎn)的安全性,則這種情況不會(huì)發(fā)生。由此考慮,BGP/MPLS VPN能夠提供與IPSec相同級(jí)別的安全性。PE和CE之間物理鏈路的存在和與之相關(guān)的PE中對(duì)應(yīng)的VRF取代了認(rèn)證VPN端點(diǎn)的必要性,因?yàn)樗麄儽仨毰c站點(diǎn)保持正確的物理連接。
也可能出現(xiàn)欺騙MPLS標(biāo)記的情況,然而,有兩種解決的方法,一種是CE與PE之間的接口是IP接口,任何LSP都不包含這些接口,正確配置的PE應(yīng)丟棄從CE來(lái)的MPLS流量。另一種方法是對(duì)于每一個(gè)P來(lái)說(shuō)標(biāo)記僅具有本地意義,這意味著攻擊者不僅要獲得提供商的物理接入,還要在特定位置用欺騙標(biāo)記來(lái)接入特定VPN,這幾乎不可能辦到。并且提供商的安全策略應(yīng)該能夠這樣做。
與BGP/MPLS VPN安全性有關(guān)的最大問題是當(dāng)有多個(gè)VRF和目標(biāo)通信者時(shí)配置提供商網(wǎng)絡(luò)的復(fù)雜性,對(duì)于好多提供商來(lái)說(shuō),管理眾多BGP路由表并保持好的連通性是很困難的,因?yàn)橐粡埍淼母淖儠?huì)影響很多其他表。
BGP/MPLS VPN比傳統(tǒng)的二層或基于IPSec的VPN更經(jīng)濟(jì),BGP/MPLS VPN的另一個(gè)優(yōu)點(diǎn)是它的可擴(kuò)展性,二層或IPSec VPN是點(diǎn)到點(diǎn)的,因此,星型結(jié)構(gòu)是擴(kuò)展時(shí)最常用的結(jié)構(gòu),而提供商可簡(jiǎn)單地將BGP/MPLS VPN配置成全網(wǎng)狀結(jié)構(gòu),這不僅能方便地排出內(nèi)部路由故障,還能夠極大簡(jiǎn)化提供潛在的敏感應(yīng)用,如語(yǔ)音和視頻。BGP/MPLS VPN還能夠提供與MPLS網(wǎng)絡(luò)同等級(jí)的QoS保障。