摘 要: 針對BGP/MPLS VPN介紹其體系結構、數(shù)據(jù)的轉發(fā)、路由協(xié)議" title="路由協(xié)議">路由協(xié)議等,并針對CISCO路由器進行了實例分析。
關鍵詞: 多協(xié)議" title="多協(xié)議">多協(xié)議標簽交換 路由器 邊界網(wǎng)關協(xié)議 虛擬專網(wǎng)(VPN)
虛擬專網(wǎng)VPN(Virtual Private Network)是指在公用網(wǎng)絡上建立專用網(wǎng)絡的技術。整個VPN網(wǎng)絡的任意兩個節(jié)點之間的連接并沒有傳統(tǒng)專網(wǎng)所需的端到端的物理鏈路,而是架構在公用網(wǎng)絡服務商所提供的網(wǎng)絡平臺(如Internet、ATM、Frame Relay等)之上的邏輯網(wǎng)絡,用戶數(shù)據(jù)在邏輯鏈路中傳輸。VPN通過隧道或虛電路等實現(xiàn)網(wǎng)絡互聯(lián),支持用戶安全管理,能夠進行網(wǎng)絡監(jiān)控、故障診斷。
目前,在VPN應用領域有兩種主要架構:(1)融邊界網(wǎng)關協(xié)議BGP(Border Gateway Protocol)和多協(xié)議標簽交換MPLS(Multi-Protocol Label Switch)技術的VPN;(2)基于IPSec的VPN。本文主要討論的是BGP/MPLS VPN的技術和實現(xiàn)。
1 MPLS VPN簡介
MPLS是由IETF提出的新一代IP骨干網(wǎng)" title="骨干網(wǎng)">骨干網(wǎng)絡交換標準,是一種集成式的IP Over ATM技術。它融合了IP路由技術的靈活性和ATM交換技術的簡潔性,在面向無連接的IP網(wǎng)絡中引入了MPLS面向連接的屬性,提供了類似于虛電路的標簽交換業(yè)務。一個標簽是一個短的、長度固定的數(shù)值,由報文的頭部攜帶,不含拓撲信息,只有局部意義。MPLS包頭的結構如圖1所示。其中20bit的標簽字段用來表示標簽值;3bit的EXP用來實現(xiàn)CoS(Class of Service);1bit S值用來表示標簽棧是否到底了,對于VPN、TE等應用將在第二層和第三層頭之間插入兩個以上的標簽,形成標簽棧;8bit TTL值用來防止數(shù)據(jù)在網(wǎng)上形成環(huán)路。

RFC2547定義了允許ISP使用其IP骨干網(wǎng)為用戶提供VPN服務的一種機制。RFC2547也被稱為BGP/MPLS VPN,因為BGP被用來在提供商骨干網(wǎng)中發(fā)布VPN路由信息,而MPLS被用來將VPN業(yè)務從一個VPN站點轉發(fā)至另一個站點。BGP/MPLS VPN又稱為三層MPLS VPN,是一種基于路由方式的VPN解決方案。該技術不僅可以提供一種動態(tài)建立的隧道技術,還能夠利用公用骨干網(wǎng)絡強大的傳輸能力,極大地提高用戶網(wǎng)絡運營和管理的靈活性,同時能夠滿足用戶對信息傳輸安全性、實時性、寬頻帶和方便性的需要。
2 BGP/MPLS VPN中幾個重要的概念
2.1 VPN路由/轉發(fā)
BGP/MPLS VPN的安全舉措之一就是路由隔離和信息隔離。它通過VRF(VPN Routing /Forwarding)表和MPLS中的LSP來實現(xiàn)。PE路由器上有多個VRF表。這些VRF表與PE路由器上的一個或多個子接口相對應,用于存放這些子接口所屬VPN的路由信息。通常情況下,VRF表中只包含一個VPN的路由信息,但是當子接口屬于多個VPN時,其對應的VRF表中則包含子接口所屬的所有VPN的路由信息。對于每一個VRF表,都具有路由區(qū)分符RD(Route Distinguisher)和路由目標RT(Route Target)兩大屬性。
2.2 路由識別符
VPN中IP地址的規(guī)劃是由客戶自行制訂的,因而有可能會出現(xiàn)客戶選擇在RFC1918中定義的私有地址作為他們的站點地址或者不同的VPN使用相同的地址域。這會在路由解析時出現(xiàn)沖突,BGP/MPLS VPN使用VPN-IPv4地址族和多協(xié)議擴展BGP(MP-BGP)解決該問題。一個VPN-IPv4地址(12字節(jié))由8字節(jié)的RD和4字節(jié)的IPv4地址組成,如圖2所示。這樣就可以把相同的地址前綴翻譯成不同的VPN-IPv4地址,也就可以分別為每個VPN站點生成與該VPN-IPv4地址對應的不同路由。
RD和VRF表之間建立了一一對應的關系。通常情況下每個VPN分配惟一的RD。但是對于重疊VPN,即某個站點屬于多個VPN的情況,由于PE路由器上的某個子接口屬于多個VPN,此時,該子接口所對應的VRF表只能被分配一個RD,從而多個VPN共享一個RD。

?

2.3 路由目標
RT的本質(zhì)就是BGP的community屬性的擴展,擴展的community有兩種格式,如圖3所示。其中type字段為0x0002或者0x0102時表示RT。RT用于路由信息的分發(fā),具有全局惟一性,且只能被一個VPN使用。它分成Import RT和Export RT,分別用于路由信息的導入和導出策略。當從VRF表中導出VPN路由時,要用Export RT對VPN路由進行標記;當向VRF表中導入VPN路由時,只有所帶RT標記與VRF表中任意一個Import RT相符的路由才會被導入VRF表中。RT使得PE路由器只包含與其直接相連的VPN的路由,而不是全網(wǎng)所有VPN的路由,從而節(jié)省了PE路由器的資源,提高了網(wǎng)絡拓展性。
3 BGP/MPLS VPN體系結構
3.1 BGP/MPLS VPN模型介紹
BGP/MPLS VPN示意圖如圖4所示。在RFC2547中定義了三種類型的路由器:用戶網(wǎng)邊緣路由器CE在用戶側為用戶所有,接收和分發(fā)用戶網(wǎng)絡路由,CE連接到提供商的骨干網(wǎng)邊緣路由器PE;PE處理VPN-IPv4路由,是BGP/MPLS VPN的核心;位于骨干網(wǎng)核心的P路由器負責MPLS包的轉發(fā)。

VPN是若干個用戶站點的集合,而站點是VPN中一個孤立的IP網(wǎng)絡,例如可以是公司總部或分支機構等。用戶接入BGP/MPLS VPN的方式是每個站點提供一個或多個CE同骨干網(wǎng)PE的連接,每個站點在PE中由各個VRF來表示,它包含了與一個站點相關的路由表、轉發(fā)表、接口、路由實例以及路由策略等。PE上的接口可以綁定" title="綁定">綁定到惟一的VRF上,一個VRF也可以被綁定到多個接口上,但PE之間不能交換VRF信息。
BGP/MPLS VPN中有兩種重要的數(shù)據(jù)流:一種是進行路由分發(fā)和LSP(標記轉發(fā)路徑)確定的控制流;另一種是用戶的VPN業(yè)務流。存在兩種控制機制:一種負責不同PE間路由信息的交換;另一種負責建立通過提供商骨干網(wǎng)的LSP。
3.2 數(shù)據(jù)轉發(fā)過程
在MPLS網(wǎng)絡中傳輸?shù)腣PN數(shù)據(jù)采用隧道標簽(外標簽)和VPN標簽(內(nèi)標簽)兩層標簽棧結構,它們分別對應于兩個層面的路由:域內(nèi)路由和VPN路由。域內(nèi)路由即MPLS中的LSP,是由PE和P路由器通過運行標簽分發(fā)協(xié)議LDP(Label Distribution Protocol)或資源預留協(xié)議RSVP(Resource Reservation Protocol)建立的。它所產(chǎn)生的標簽轉發(fā)表用于VPN分組外層標簽的交換。VPN路由是由PE路由器之間通過運行MP-iBGP建立的。該協(xié)議跨越骨干網(wǎng)的P路由器分發(fā)VPN標簽形成VPN路由。在PE路由器上除了VRF表外,還有MPLS路由表。該表用于存放VPN標簽和子接口的對應關系,為出口PE路由器到CE路由器之間的數(shù)據(jù)轉發(fā)提供依據(jù)。
具體數(shù)據(jù)轉發(fā)過程如下:當CE路由器通過某個子接口將一個VPN分組發(fā)給入口PE路由器后,PE路由器查找該子接口對應的VRF表,從VRF表中得到VPN標簽、初始外層標簽以及到出口PE路由器的輸出接口。當VPN分組被打上兩層標簽之后,就通過輸出接口發(fā)送到相應LSP上的第一個P路由器。骨干網(wǎng)中P路由器根據(jù)外層標簽逐跳轉發(fā)VPN分組,直至最后一個P路由器彈出外層標簽,將只含有VPN標簽的分組轉發(fā)給出口PE路由器。出口PE路由器根據(jù)VPN標簽,查找MPLS路由表得到對應的輸出接口,在彈出VPN標簽后通過該接口將VPN分組發(fā)送給正確的CE路由器,從而實現(xiàn)整個數(shù)據(jù)轉發(fā)過程。特別地,當出口PE路由器和入口PE路由器是同一個路由器時,PE路由器對收到的VPN分組將不經(jīng)過任何處理直接轉發(fā)給目的CE路由器。
3.3 路由信息分發(fā)過程
在MPLS VPN中,因為采用了兩層標簽棧結構,所以P路由器并不參與VPN路由信息的交互。客戶路由器通過CE和PE路由器之間、PE路由器之間的路由交互知道屬于某個VPN的網(wǎng)絡拓撲信息。
(1)CE-PE之間的路由信息分發(fā)。CE-PE之間通過采用靜態(tài)/缺省路由、IGP(RIPv2、OSPF)等動態(tài)路由協(xié)議,或建立EBGP連接等方式進行路由信息的交互。當入口PE路由器從某個子接口接收到來自CE路由器的路由信息時,除了將該路由導入對應的VRF表,PE路由器還要為該路由分配一個VPN標簽。該VPN標簽用以識別接收路由信息的子接口。因此從同一個子接口接收到的路由信息將被分配同樣的VPN標簽,從而PE路由器可以將收到的VPN分組轉發(fā)到合適的子接口。
(2)PE-PE之間的路由信息分發(fā)。PE-PE之間通過采用MP-iBGP進行路由信息的交互。PE路由器通過維持iBGP網(wǎng)狀連接或使用路由反射器來確保路由信息被分發(fā)給所有的PE路由器。當入口PE路由器分發(fā)路由信息時,將同時攜帶路由所在VRF表的RD,即將路由的IPv4地址轉化為VPN-IPv4地址。分發(fā)的具體路由信息包括該路由的VPN-IPv4地址前綴、下一跳BGP即入口PE路由器的VPN-IPv4地址(其中RD=0)、分配給該路由的VPN標簽和該路由所在VRF表的Export RT。該路由信息被稱為帶有標簽的VPN-IPv4路由信息。
當出口PE路由器收到路由信息時,將查看該路由的RT,如果RT與其任意VRF表中任意一個Import RT相符,就將該路由存入VPN-IPv4的RIB表。在路由選擇之后,將最優(yōu)路由中的VPN-IPv4地址轉化成IPv4地址,即去掉地址中的RD,導入到相應的VRF表中。
4 基于Cicso產(chǎn)品的BGP/MPLS VPN實例介紹
目前支持MPLS的設備不少,而Cicso路由器在網(wǎng)絡建設的高端產(chǎn)品中使用最廣,其中26、72等系列均支持MPLS功能。杭州師范學院于2004年建設了一個基于Cisco路由器和交換機的網(wǎng)絡通信實驗室,現(xiàn)有Cisco路由器10臺。下面以Cisco路由器為例,介紹相關路由器的配置。
4.1 配置描述
BGP/MPLS VPN的網(wǎng)絡物理結構圖如圖5所示。VPN的關鍵是讓CE之間能互相學習到私網(wǎng)路" title="網(wǎng)路">網(wǎng)路由,并能根據(jù)學習到的私網(wǎng)路由在公網(wǎng)上轉發(fā)報文。為了能讓私網(wǎng)路由發(fā)布到遠端CE,首先需要將本地CE的私網(wǎng)路由傳遞到本地PE,然后再由本地PE發(fā)布到遠端PE,最后由遠端PE傳遞到遠端CE。PE、CE之間的私網(wǎng)路由傳遞可以通過CE與PE之間建立M-EBGP鄰居、擴展RIP以及配置靜態(tài)路由等方式來實現(xiàn)。PE之間的私網(wǎng)路由傳遞需要通過建立M-IBGP鄰居來實現(xiàn);為了能讓私網(wǎng)流量在公網(wǎng)上轉發(fā)報文,需要在PE、P之間建立MPLS LDP鄰居并建立LSP隧道,這樣私網(wǎng)流量就可通過隧道在公網(wǎng)上轉發(fā)。
配置的大致步驟如下:
(1)配置PE路由器、P路由器上的MPLS基本能力,使它們能為私網(wǎng)流量建立LSP隧道。
(2)在PE路由器上配置VPN實例,并綁定在與CE相連的端口上。
(3)配置PE路由器、P路由器上的IGP協(xié)議,使它們能相互學習到其他路由器上的路由,尤其是Loopback地址的路由。因為PE之間的M-IBGP鄰居必須通過Loopback接口來建立。
(4)配置M-BGP協(xié)議,包括PE之間的IBGP鄰居以及PE和CE之間的EBGP鄰居。
4.2 具體配置信息
在圖5中,PE1-router(lo0地址為10.10.10.10/32)通過接口S0/1(172.16.1.1/24)與CE1(172.16.1.2/24)連接;PE2-router(lo0地址為11.11.11.11/32)通過接口S0/1(172.16.2.1/24)與CE2(172.16.2.2/24)連接。形成的VPN邏輯關系視圖如圖6所示。
各個路由器的具體配置信息介紹如下:
(1)PE1-router的關鍵配置(與P-router2的具體配置相似)。
hostname PE1-router
!
ip cef //啟用CEF轉發(fā)功能
!
ip vrf site1 //定義一個VRF,名字為site1
rd 100:12 //定義rd的值
route-target export 100:12 //定義導出策略
route-target import 100:12 //定義導入策略
!
interface lo0
ip address 10.10.10.10 255.255.255.255
!
interface Serial0/1 //配置端口
ip vrf forwarding site1//把該接口和VRF Site1聯(lián)系起來
ip address 172.16.1.1 255.255.255.0//分配Ipv4地址
encapsulation ppp //封裝PPP協(xié)議
no ip directed-broadcast
!
router bgp 6500 //配置BGP路由協(xié)議
bgp log-neighbor-changes
neighbor 11.11.11.11 remote-as 6500
//配置和CE1間的路由協(xié)議BGP
neighbor 11.11.11.11 update-source Loopback0
!
address-family ipv4 vrf site1//為VPN用戶配置Ipv4
//地址家族
neighbor 172.16.1.2 remote-as 6501//和PE2建立
//鄰居關系
neighbor 172.16.1.2 active//激活MP-iBGP鄰居關系
exit-address-family
!
address-family vpnv4
neighbor 11.11.11.11 active
neighbor 11.11.11.11 send-community extended
exit-address-family
!
(2)CE2配置。
router ospf 100//網(wǎng)內(nèi)配置OSPF路由協(xié)議
network 13.13.13.13 0.0.0.0 area 0
network 192.168.13.20 0.0.0.255 area 0
network 192.168.13.30 0.0.0.255 area 0
!
router bgp 6502//配置和PE2間的BGP路由協(xié)議
redistribute ospf 100
neighbor 172.16.2.1 remote-as 6500
!
BGP/MPLS VPN很好地融合了MPLS和BGP的優(yōu)點。BGP協(xié)議是惟一支持大量路由的路由協(xié)議。BGP/MPLS VPN解決了純?nèi)龑覫P VPN所不能解決的地址重疊和重疊VPN的問題;作為PP-VPN,提高了用戶網(wǎng)絡管理效率,降低了用戶在網(wǎng)絡管理方面的投入;具有良好的網(wǎng)絡拓展性,解決了傳統(tǒng)VPN在實現(xiàn)用戶節(jié)點全網(wǎng)狀連接時的網(wǎng)絡第二層問題;具有較高的安全性,MPLS骨干不負責維護任何VPN路由,只進行標簽交換,因此其安全性與二層的ATM技術相當。BGP/MPLS VPN可以作為傳統(tǒng)的基于二層專線的VPN、純?nèi)龑拥腎P VPN和隧道方式的VPN的替代技術。
參考文獻
1 Cisco.MPLS VPN over ATM:with OSPF on the customer side(with Area0).http://www.cisco.com/ en/US/tech/tk436/tk798/technologies_configuration_ex ample09186a0080093f82.shtml,2002
2 韓 波,沈富可.BGP/MPLS VPN在NS-2中的實現(xiàn).計算機應用,2006;(26)4:980~982
3 Rosen E,Rekhter Y.BGP/MPLS VPNs.RFC 2547,2002
4 Solie K著,李 津,卓 林譯.CCIE實驗指南.北京:人民郵電出版社,2002
5 Pepelnjak I,Guichard J著,信達工作室譯.MPLS和VPN體系結構.北京:人民郵電出版社,2002
6 董 玲,黃 楊.BGP/MPLS VPN實現(xiàn)細節(jié)探討.計算機工程與應用,2005;41(29):117~119

