《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信与网络 > 业界动态 > 基于CISCO路由器的BGP/MPLS VPN的研究与实现

基于CISCO路由器的BGP/MPLS VPN的研究与实现

2008-04-09
作者:陶国芳

  摘 要: 針對BGP/MPLS VPN介紹其體系結(jié)構(gòu)、數(shù)據(jù)的轉(zhuǎn)發(fā)、路由協(xié)議" title="路由協(xié)議">路由協(xié)議等,并針對CISCO路由器進(jìn)行了實例分析。
  關(guān)鍵詞: 多協(xié)議" title="多協(xié)議">多協(xié)議標(biāo)簽交換 路由器 邊界網(wǎng)關(guān)協(xié)議 虛擬專網(wǎng)(VPN)


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


  RFC2547定義了允許ISP使用其IP骨干網(wǎng)為用戶提供VPN服務(wù)的一種機制。RFC2547也被稱為BGP/MPLS VPN,因為BGP被用來在提供商骨干網(wǎng)中發(fā)布VPN路由信息,而MPLS被用來將VPN業(yè)務(wù)從一個VPN站點轉(zhuǎn)發(fā)至另一個站點。BGP/MPLS VPN又稱為三層MPLS VPN,是一種基于路由方式的VPN解決方案。該技術(shù)不僅可以提供一種動態(tài)建立的隧道技術(shù),還能夠利用公用骨干網(wǎng)絡(luò)強大的傳輸能力,極大地提高用戶網(wǎng)絡(luò)運營和管理的靈活性,同時能夠滿足用戶對信息傳輸安全性、實時性、寬頻帶和方便性的需要。
2 BGP/MPLS VPN中幾個重要的概念
2.1 VPN路由/轉(zhuǎn)發(fā)

  BGP/MPLS VPN的安全舉措之一就是路由隔離和信息隔離。它通過VRF(VPN Routing /Forwarding)表和MPLS中的LSP來實現(xiàn)。PE路由器上有多個VRF表。這些VRF表與PE路由器上的一個或多個子接口相對應(yīng),用于存放這些子接口所屬VPN的路由信息。通常情況下,VRF表中只包含一個VPN的路由信息,但是當(dāng)子接口屬于多個VPN時,其對應(yīng)的VRF表中則包含子接口所屬的所有VPN的路由信息。對于每一個VRF表,都具有路由區(qū)分符RD(Route Distinguisher)和路由目標(biāo)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地址對應(yīng)的不同路由。
  RD和VRF表之間建立了一一對應(yīng)的關(guān)系。通常情況下每個VPN分配惟一的RD。但是對于重疊VPN,即某個站點屬于多個VPN的情況,由于PE路由器上的某個子接口屬于多個VPN,此時,該子接口所對應(yīng)的VRF表只能被分配一個RD,從而多個VPN共享一個RD。

?


2.3 路由目標(biāo)
  RT的本質(zhì)就是BGP的community屬性的擴展,擴展的community有兩種格式,如圖3所示。其中type字段為0x0002或者0x0102時表示RT。RT用于路由信息的分發(fā),具有全局惟一性,且只能被一個VPN使用。它分成Import RT和Export RT,分別用于路由信息的導(dǎo)入和導(dǎo)出策略。當(dāng)從VRF表中導(dǎo)出VPN路由時,要用Export RT對VPN路由進(jìn)行標(biāo)記;當(dāng)向VRF表中導(dǎo)入VPN路由時,只有所帶RT標(biāo)記與VRF表中任意一個Import RT相符的路由才會被導(dǎo)入VRF表中。RT使得PE路由器只包含與其直接相連的VPN的路由,而不是全網(wǎng)所有VPN的路由,從而節(jié)省了PE路由器的資源,提高了網(wǎng)絡(luò)拓展性。
3 BGP/MPLS VPN體系結(jié)構(gòu)
3.1 BGP/MPLS VPN模型介紹

  BGP/MPLS VPN示意圖如圖4所示。在RFC2547中定義了三種類型的路由器:用戶網(wǎng)邊緣路由器CE在用戶側(cè)為用戶所有,接收和分發(fā)用戶網(wǎng)絡(luò)路由,CE連接到提供商的骨干網(wǎng)邊緣路由器PE;PE處理VPN-IPv4路由,是BGP/MPLS VPN的核心;位于骨干網(wǎng)核心的P路由器負(fù)責(zé)MPLS包的轉(zhuǎn)發(fā)。


  VPN是若干個用戶站點的集合,而站點是VPN中一個孤立的IP網(wǎng)絡(luò),例如可以是公司總部或分支機構(gòu)等。用戶接入BGP/MPLS VPN的方式是每個站點提供一個或多個CE同骨干網(wǎng)PE的連接,每個站點在PE中由各個VRF來表示,它包含了與一個站點相關(guān)的路由表、轉(zhuǎn)發(fā)表、接口、路由實例以及路由策略等。PE上的接口可以綁定" title="綁定">綁定到惟一的VRF上,一個VRF也可以被綁定到多個接口上,但PE之間不能交換VRF信息。
  BGP/MPLS VPN中有兩種重要的數(shù)據(jù)流:一種是進(jìn)行路由分發(fā)和LSP(標(biāo)記轉(zhuǎn)發(fā)路徑)確定的控制流;另一種是用戶的VPN業(yè)務(wù)流。存在兩種控制機制:一種負(fù)責(zé)不同PE間路由信息的交換;另一種負(fù)責(zé)建立通過提供商骨干網(wǎng)的LSP。
3.2 數(shù)據(jù)轉(zhuǎn)發(fā)過程
  在MPLS網(wǎng)絡(luò)中傳輸?shù)腣PN數(shù)據(jù)采用隧道標(biāo)簽(外標(biāo)簽)和VPN標(biāo)簽(內(nèi)標(biāo)簽)兩層標(biāo)簽棧結(jié)構(gòu),它們分別對應(yīng)于兩個層面的路由:域內(nèi)路由和VPN路由。域內(nèi)路由即MPLS中的LSP,是由PE和P路由器通過運行標(biāo)簽分發(fā)協(xié)議LDP(Label Distribution Protocol)或資源預(yù)留協(xié)議RSVP(Resource Reservation Protocol)建立的。它所產(chǎn)生的標(biāo)簽轉(zhuǎn)發(fā)表用于VPN分組外層標(biāo)簽的交換。VPN路由是由PE路由器之間通過運行MP-iBGP建立的。該協(xié)議跨越骨干網(wǎng)的P路由器分發(fā)VPN標(biāo)簽形成VPN路由。在PE路由器上除了VRF表外,還有MPLS路由表。該表用于存放VPN標(biāo)簽和子接口的對應(yīng)關(guān)系,為出口PE路由器到CE路由器之間的數(shù)據(jù)轉(zhuǎn)發(fā)提供依據(jù)。
  具體數(shù)據(jù)轉(zhuǎn)發(fā)過程如下:當(dāng)CE路由器通過某個子接口將一個VPN分組發(fā)給入口PE路由器后,PE路由器查找該子接口對應(yīng)的VRF表,從VRF表中得到VPN標(biāo)簽、初始外層標(biāo)簽以及到出口PE路由器的輸出接口。當(dāng)VPN分組被打上兩層標(biāo)簽之后,就通過輸出接口發(fā)送到相應(yīng)LSP上的第一個P路由器。骨干網(wǎng)中P路由器根據(jù)外層標(biāo)簽逐跳轉(zhuǎn)發(fā)VPN分組,直至最后一個P路由器彈出外層標(biāo)簽,將只含有VPN標(biāo)簽的分組轉(zhuǎn)發(fā)給出口PE路由器。出口PE路由器根據(jù)VPN標(biāo)簽,查找MPLS路由表得到對應(yīng)的輸出接口,在彈出VPN標(biāo)簽后通過該接口將VPN分組發(fā)送給正確的CE路由器,從而實現(xiàn)整個數(shù)據(jù)轉(zhuǎn)發(fā)過程。特別地,當(dāng)出口PE路由器和入口PE路由器是同一個路由器時,PE路由器對收到的VPN分組將不經(jīng)過任何處理直接轉(zhuǎn)發(fā)給目的CE路由器。
3.3 路由信息分發(fā)過程
  在MPLS VPN中,因為采用了兩層標(biāo)簽棧結(jié)構(gòu),所以P路由器并不參與VPN路由信息的交互。客戶路由器通過CE和PE路由器之間、PE路由器之間的路由交互知道屬于某個VPN的網(wǎng)絡(luò)拓?fù)湫畔ⅰ?BR>  (1)CE-PE之間的路由信息分發(fā)。CE-PE之間通過采用靜態(tài)/缺省路由、IGP(RIPv2、OSPF)等動態(tài)路由協(xié)議,或建立EBGP連接等方式進(jìn)行路由信息的交互。當(dāng)入口PE路由器從某個子接口接收到來自CE路由器的路由信息時,除了將該路由導(dǎo)入對應(yīng)的VRF表,PE路由器還要為該路由分配一個VPN標(biāo)簽。該VPN標(biāo)簽用以識別接收路由信息的子接口。因此從同一個子接口接收到的路由信息將被分配同樣的VPN標(biāo)簽,從而PE路由器可以將收到的VPN分組轉(zhuǎn)發(fā)到合適的子接口。
  (2)PE-PE之間的路由信息分發(fā)。PE-PE之間通過采用MP-iBGP進(jìn)行路由信息的交互。PE路由器通過維持iBGP網(wǎng)狀連接或使用路由反射器來確保路由信息被分發(fā)給所有的PE路由器。當(dāng)入口PE路由器分發(fā)路由信息時,將同時攜帶路由所在VRF表的RD,即將路由的IPv4地址轉(zhuǎn)化為VPN-IPv4地址。分發(fā)的具體路由信息包括該路由的VPN-IPv4地址前綴、下一跳BGP即入口PE路由器的VPN-IPv4地址(其中RD=0)、分配給該路由的VPN標(biāo)簽和該路由所在VRF表的Export RT。該路由信息被稱為帶有標(biāo)簽的VPN-IPv4路由信息。
  當(dāng)出口PE路由器收到路由信息時,將查看該路由的RT,如果RT與其任意VRF表中任意一個Import RT相符,就將該路由存入VPN-IPv4的RIB表。在路由選擇之后,將最優(yōu)路由中的VPN-IPv4地址轉(zhuǎn)化成IPv4地址,即去掉地址中的RD,導(dǎo)入到相應(yīng)的VRF表中。
4 基于Cicso產(chǎn)品的BGP/MPLS VPN實例介紹
  目前支持MPLS的設(shè)備不少,而Cicso路由器在網(wǎng)絡(luò)建設(shè)的高端產(chǎn)品中使用最廣,其中26、72等系列均支持MPLS功能。杭州師范學(xué)院于2004年建設(shè)了一個基于Cisco路由器和交換機的網(wǎng)絡(luò)通信實驗室,現(xiàn)有Cisco路由器10臺。下面以Cisco路由器為例,介紹相關(guān)路由器的配置。


4.1 配置描述
  BGP/MPLS VPN的網(wǎng)絡(luò)物理結(jié)構(gòu)圖如圖5所示。VPN的關(guān)鍵是讓CE之間能互相學(xué)習(xí)到私網(wǎng)路" title="網(wǎng)路">網(wǎng)路由,并能根據(jù)學(xué)習(xí)到的私網(wǎng)路由在公網(wǎng)上轉(zhuǎn)發(fā)報文。為了能讓私網(wǎng)路由發(fā)布到遠(yuǎn)端CE,首先需要將本地CE的私網(wǎng)路由傳遞到本地PE,然后再由本地PE發(fā)布到遠(yuǎn)端PE,最后由遠(yuǎn)端PE傳遞到遠(yuǎn)端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)上轉(zhuǎn)發(fā)報文,需要在PE、P之間建立MPLS LDP鄰居并建立LSP隧道,這樣私網(wǎng)流量就可通過隧道在公網(wǎng)上轉(zhuǎn)發(fā)。
  配置的大致步驟如下:
  (1)配置PE路由器、P路由器上的MPLS基本能力,使它們能為私網(wǎng)流量建立LSP隧道。
  (2)在PE路由器上配置VPN實例,并綁定在與CE相連的端口上。
  (3)配置PE路由器、P路由器上的IGP協(xié)議,使它們能相互學(xué)習(xí)到其他路由器上的路由,尤其是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邏輯關(guān)系視圖如圖6所示。
  各個路由器的具體配置信息介紹如下:
  (1)PE1-router的關(guān)鍵配置(與P-router2的具體配置相似)。
  hostname PE1-router
  !
  ip cef       //啟用CEF轉(zhuǎn)發(fā)功能
  !
  ip vrf site1    //定義一個VRF,名字為site1
  rd 100:12     //定義rd的值
  route-target export 100:12 //定義導(dǎo)出策略
  route-target import 100:12 //定義導(dǎo)入策略
  !
  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建立
  //鄰居關(guān)系
  neighbor 172.16.1.2 active//激活MP-iBGP鄰居關(guān)系
  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)絡(luò)管理效率,降低了用戶在網(wǎng)絡(luò)管理方面的投入;具有良好的網(wǎng)絡(luò)拓展性,解決了傳統(tǒng)VPN在實現(xiàn)用戶節(jié)點全網(wǎng)狀連接時的網(wǎng)絡(luò)第二層問題;具有較高的安全性,MPLS骨干不負(fù)責(zé)維護任何VPN路由,只進(jìn)行標(biāo)簽交換,因此其安全性與二層的ATM技術(shù)相當(dāng)。BGP/MPLS VPN可以作為傳統(tǒng)的基于二層專線的VPN、純?nèi)龑拥腎P VPN和隧道方式的VPN的替代技術(shù)。
參考文獻(xiàn)
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).計算機應(yīng)用,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著,信達(dá)工作室譯.MPLS和VPN體系結(jié)構(gòu).北京:人民郵電出版社,2002
6 董 玲,黃 楊.BGP/MPLS VPN實現(xiàn)細(xì)節(jié)探討.計算機工程與應(yīng)用,2005;41(29):117~119

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容