目 錄
MPLS L3VPN是服務提供商VPN解決方案中一種基於PE的L3VPN技術,它使用BGP在服務提供商骨幹網上發布VPN路由,使用MPLS在服務提供商骨幹網上轉發VPN報文。
MPLS L3VPN組網方式靈活、可擴展性好,並能夠方便地支持MPLS QoS和MPLS TE,因此得到越來越多的應用。
MPLS L3VPN模型由三部分組成:CE、PE和P。
l CE(Customer Edge)設備:用戶網絡邊緣設備,有接口直接與SP(Service Provider,服務提供商)相連。CE可以是路由器或交換機,也可以是一台主機。CE“感知”不到VPN的存在,也不需要必須支持MPLS。
l PE(Provider Edge)路由器:服務提供商邊緣路由器,是服務提供商網絡的邊緣設備,與用戶的CE直接相連。在MPLS網絡中,對VPN的所有處理都發生在PE上。
l P(Provider)路由器:服務提供商網絡中的骨幹路由器,不與CE直接相連。P設備隻需要具備基本MPLS轉發能力。
圖 1是一個MPLS L3VPN組網方案的示意圖。
CE和PE的劃分主要是根據SP與用戶的管理範圍,CE和PE是兩者管理範圍的邊界。
CE設備通常是一台路由器,當CE與直接相連的PE建立鄰接關係後,CE把本站點的VPN路由發布給PE,並從PE學到遠端VPN的路由。CE與PE之間使用BGP/IGP交換路由信息,也可以使用靜態路由。
PE從CE學到CE本地的VPN路由信息後,通過BGP與其它PE交換VPN路由信息。PE路由器隻維護與它直接相連的VPN的路由信息,不維護服務提供商網絡中的所有VPN路由。
P路由器隻維護到PE的路由,不需要了解任何VPN路由信息。
當在MPLS骨幹網上傳輸VPN流量時,入口PE做為Ingress LSR(Label Switch Router,標簽交換路由器),出口PE做為Egress LSR,P路由器則做為Transit LSR。
在介紹VPN時經常會提到“Site”,Site(站點)的含義可以從下述幾個方麵理解:
l Site是指相互之間具備IP連通性的一組IP係統,並且,這組IP係統的IP連通性不需通過服務提供商網絡實現;
l Site的劃分是根據設備的拓撲關係,而不是地理位置,盡管在大多數情況下一個Site中的設備地理位置相鄰;
l 一個Site中的設備可以屬於多個VPN,換言之,一個Site可以屬於多個VPN;
l Site通過CE連接到服務提供商網絡,一個Site可以包含多個CE,但一個CE隻屬於一個Site。
對於多個連接到同一服務提供商網絡的Sites,通過製定策略,可以將它們劃分為不同的集合(set),隻有屬於相同集合的Sites之間才能通過服務提供商網絡互訪,這種集合就是VPN。
VPN是一種私有網絡,不同的VPN獨立管理自己使用的地址範圍,也稱為地址空間(Address Space)。
不同VPN的地址空間可能會在一定範圍內重合,比如,VPN1和VPN2都使用了10.110.10.0/24網段的地址,這就發生了地址空間重疊(Overlapping Address Spaces)。
在MPLS VPN中,不同VPN之間的路由隔離通過VPN實例(VPN-instance)實現。
PE為每個直接相連的Site建立並維護專門的VPN實例。VPN實例中包含對應Site的VPN成員關係和路由規則。如果一個Site中的用戶同時屬於多個VPN,則該Site的VPN實例中將包括所有這些VPN的信息。
為保證VPN數據的獨立性和安全性,PE上每個VPN實例都有相對獨立的路由表和LFIB(Label Forwarding Information Base,標簽轉發表)。
具體來說,VPN實例中的信息包括:標簽轉發表、IP路由表、與VPN實例綁定的接口以及VPN實例的管理信息。VPN實例的管理信息包括RD(Route Distinguisher,路由標識符)、路由過濾策略、成員接口列表等。
傳統BGP無法正確處理地址空間重疊的VPN的路由。假設VPN1和VPN2都使用了10.110.10.0/24網段的地址,並各自發布了一條去往此網段的路由,BGP將隻會選擇其中一條路由,從而導致去往另一個VPN的路由丟失。
PE路由器之間使用MP-BGP來發布VPN路由,並使用VPN-IPv4地址族來解決上述問題。
VPN-IPv4地址共有12個字節,包括8字節的RD和4字節的IPv4地址前綴,如圖 2所示。
圖 2 VPN-IPv4地址結構
PE從CE接收到普通IPv4路由後,需要將這些私網VPN路由發布給對端PE。私網路由的獨立性是通過為這些路由附加RD實現的。
SP可以獨立地分配RD,但必須保證RD的全局唯一性。這樣,即使來自不同服務提供商的VPN使用了同樣的IPv4地址空間,PE路由器也可以向各VPN發布不同的路由。
建議為PE上每個VPN實例配置專門的RD,以保證到達同一CE的路由都使用相同的RD。RD為0的VPN-IPv4地址相當於全局唯一的IPv4地址。
RD的作用是添加到一個特定的IPv4前綴,使之成為全局唯一的VPN IPv4前綴。
RD或者是與自治係統號(ASN)相關的,在這種情況下,RD是由一個自治係統號和一個任意的數組成;或者是與IP地址相關的,在這種情況下,RD是由一個IP地址和一個任意的數組成。
RD有三種格式,通過2字節的Type字段區分:
l Type為0時,Administrator子字段占2字節,Assigned number子字段占4字節,格式為:16bits自治係統號:32bits用戶自定義數字。例如:100:1
l Type為1時,Administrator子字段占4字節,Assigned number子字段占2字節,格式為:32bitsIPv4地址:16bits用戶自定義數字。例如:172.1.1.1:1
l Type為2時,Administrator子字段占4字節,Assigned number子字段占2字節,格式為:32bits自治係統號:16bits用戶自定義數字,其中的自治係統號最小值為65536。例如:65536:1
為保證RD的全局唯一性,建議不要將Administrator子字段的值設置為私有AS號或私有IP地址。
MPLS L3VPN使用BGP擴展團體屬性——VPN Target(也稱為Route Target)來控製VPN路由信息的發布。
PE路由器上的VPN實例有兩類VPN Target屬性:
l Export Target屬性:在本地PE將從與自己直接相連的Site學到的VPN-IPv4路由發布給其它PE之前,為這些路由設置Export Target屬性;
l Import Target屬性:PE在接收到其它PE路由器發布的VPN-IPv4路由時,檢查其Export Target屬性,隻有當此屬性與PE上VPN實例的Import Target屬性匹配時,才把路由加入到相應的VPN路由表中。
也就是說,VPN Target屬性定義了一條VPN-IPv4路由可以為哪些Site所接收,PE路由器可以接收哪些Site發送來的路由。
與RD類似,VPN Target也有三種格式:
l 16bits自治係統號:32bits用戶自定義數字,例如:100:1。
l 32bits IPv4地址:16bits用戶自定義數字,例如:172.1.1.1:1。
l 32bits自治係統號:16bits用戶自定義數字,其中的自治係統號最小值為65536。例如:65536:1。
MP-BGP(Multiprotocol extensions for BGP-4)在PE路由器之間傳播VPN組成信息和路由。MP-BGP向下兼容,既可以支持傳統的IPv4地址族,又可以支持其他地址族(比如VPN-IPv4地址族)。使用MP-BGP既確保VPN的私網路由隻在VPN內發布,又實現了MPLS VPN成員間的通信。
在通過入口、出口擴展團體來控製VPN路由發布的基礎上,如果需要更精確地控製VPN路由的引入和發布,可以使用入方向或出方向路由策略。
入方向路由策略根據路由的VPN Target屬性進一步過濾可引入到VPN實例的路由,它可以拒絕接收引入列表中的團體選定的路由,而出方向路由策略則可以拒絕發布輸出列表中的團體選定的路由。
VPN實例創建完成後,可以選擇是否需要配置入方向或出方向路由策略。
隧道策略用於選擇給特定VPN實例的報文使用的隧道。
隧道策略是可選配的,VPN實例創建完成後,就可以配置隧道策略。缺省情況下,選擇LSP做為隧道,不進行負載分擔(負載分擔條數為1)。另外,隧道策略隻在同一AS域內生效。
在基本MPLS L3VPN應用中(不包括跨域的情況),VPN報文轉發采用兩層標簽方式:
l 第一層(外層)標簽在骨幹網內部進行交換,指示從PE到對端PE的一條LSP。VPN報文利用這層標簽,可以沿LSP到達對端PE;
l 第二層(內層)標簽在從對端PE到達CE時使用,指示報文應被送到哪個Site,或者更具體一些,到達哪一個CE。這樣,對端PE根據內層標簽可以找到轉發報文的接口。
特殊情況下,屬於同一個VPN的兩個Site連接到同一個PE,這種情況下隻需要知道如何到達對端CE。
以圖 3為例,說明VPN報文的轉發:
圖 3 VPN報文轉發示意圖
(1) Site 1發出一個目的地址為1.1.1.2的IP報文,由CE 1將報文發送至PE 1。
(2) PE 1根據報文到達的接口及目的地址查找VPN實例表項,匹配後將報文轉發出去,同時打上內層和外層兩個標簽。
(3) MPLS網絡利用報文的外層標簽,將報文傳送到PE 2(報文在到達PE 2前一跳時已經被剝離外層標簽,僅含內層標簽)。
(4) PE 2根據內層標簽和目的地址查找VPN實例表項,確定報文的出接口,將報文轉發至CE 2。
(5) CE 2根據正常的IP轉發過程將報文傳送到目的地。
在MPLS L3VPN網絡中,通過VPN Target屬性來控製VPN路由信息在各Site之間的發布和接收。VPN Export Target和Import Target的設置相互獨立,並且都可以設置多個值,能夠實現靈活的VPN訪問控製,從而實現多種VPN組網方案。
最簡單的情況下,一個VPN中的所有用戶形成閉合用戶群,相互之間能夠進行流量轉發,VPN中的用戶不能與任何本VPN以外的用戶通信。
對於這種組網,需要為每個VPN分配一個VPN Target,作為該VPN的Export Target和Import Target,並且,此VPN Target不能被其他VPN使用。
圖 4 基本的VPN組網方案
在圖 4中,PE上為VPN 1分配的VPN Target值為100:1,為VPN 2分配的VPN Target值為200:1。VPN 1的兩個Site之間可以互訪,VPN 2的兩個Site之間也可以互訪,但VPN 1和VPN 2的Site之間不能互訪。
如果希望在VPN中設置中心訪問控製設備,其它用戶的互訪都通過中心訪問控製設備進行,可以使用Hub&Spoke組網方案,從而實現中心設備對兩端設備之間的互訪進行監控和過濾等功能。
對於這種組網,需要設置兩個VPN Target,一個表示“Hub”,另一個表示“Spoke”。
各Site在PE上的VPN實例的VPN Target設置規則為:
l 連接Spoke站點(Site 1和Site 2)的Spoke-PE:Export Target為“Spoke”,Import Target為“Hub”;
l 連接Hub站點(Site 3)的Hub-PE:Hub-PE上需要使用兩個接口或子接口,一個用於接收Spoke-PE發來的路由,其VPN實例的Import Target為“Spoke”;另一個用於向Spoke-PE發布路由,其VPN實例的Export Target為“Hub”。
圖 5 Hub&Spoke組網方案
在圖 5中,Spoke站點之間的通信通過Hub站點進行(圖中箭頭所示為Site 2的路由向Site 1的發布過程):
l Hub-PE能夠接收所有Spoke-PE發布的VPN-IPv4路由;
l Hub-PE發布的VPN-IPv4路由能夠為所有Spoke-PE接收;
l Hub-PE將從Spoke-PE學到的路由發布給其他Spoke-PE,因此,Spoke站點之間可以通過Hub站點互訪。
l 任意Spoke-PE的Import Target屬性不與其它Spoke-PE的Export Target屬性相同。因此,任意兩個Spoke-PE之間不直接發布VPN-IPv4路由,Spoke站點之間不能直接互訪。
如果一個VPN用戶希望提供部分本VPN的站點資源給非本VPN的用戶訪問,可以使用Extranet組網方案。
對於這種組網,如果某個VPN需要訪問共享站點,則該VPN的Export Target必須包含在共享站點的VPN實例的Import Target中,而其Import Target必須包含在共享站點VPN實例的Export Target中。
圖 6 Extranet組網方案
在圖 6中,VPN 1的Site 3能夠被VPN 1和VPN 2訪問:
l PE 3能夠接受PE 1和PE 2發布的VPN-IPv4路由;
l PE 3發布的VPN-IPv4路由能夠為PE 1和PE 2接受;
l 基於以上兩點,VPN 1的Site 1和Site 3之間能夠互訪,VPN 2的Site 2和VPN 1的Site 3之間能夠互訪。
PE 3不把從PE 1接收的VPN-IPv4路由發布給PE 2,也不把從PE 2接收的VPN-IPv4路由發布給PE 1(IBGP鄰居學來的條目是不會再發送給別的IBGP鄰居),因此,VPN 1的Site 1和VPN 2的Site 2之間不能互訪。
在基本MPLS L3VPN組網中,VPN路由信息的發布涉及CE和PE,P路由器隻維護骨幹網的路由,不需要了解任何VPN路由信息。PE路由器也隻維護與它直接相連的VPN的路由信息,不維護所有VPN路由。因此,MPLS L3VPN網絡具有良好的可擴展性。
VPN路由信息的發布過程包括三部分:本地CE到入口PE、入口PE到出口PE、出口PE到遠端CE。完成這三部分後,本地CE與遠端CE之間將建立可達路由,VPN私網路由信息能夠在骨幹網上發布。
下麵分別對這三部分進行介紹。
CE與直接相連的PE建立鄰接關係後,把本站點的VPN路由發布給PE。
CE與PE之間可以使用靜態路由、RIP、OSPF、IS-IS或EBGP。無論使用哪種路由協議,CE發布給PE的都是標準的IPv4路由。
PE從CE學到VPN路由信息後,為這些標準IPv4路由增加RD和VPN Target屬性,形成VPN-IPv4路由,存放到為CE創建的VPN實例中。
入口PE通過MP-BGP把VPN-IPv4路由發布給出口PE。出口PE根據VPN-IPv4路由的Export Target屬性與自己維護的VPN實例的Import Target屬性,決定是否將該路由加入到VPN實例的路由表。
PE之間通過IGP來保證內部的連通性。
遠端CE有多種方式可以從出口PE學習VPN路由,包括靜態路由、RIP、OSPF、IS-IS和EBGP,與本地CE到入口PE的路由信息交換相同。
實際組網應用中,某用戶一個VPN的多個Site可能會連接到使用不同AS號的多個服務提供商,或者連接到一個服務提供商的多個AS。這種VPN跨越多個自治係統的應用方式被稱為跨域VPN(Multi-AS VPN)。
RFC 2547bis中提出了三種跨域VPN解決方案,分別是:
l VRF-to-VRF:ASBR間使用子接口管理VPN路由,也稱為Inter-Provider Option A;
l EBGP Redistribution of labeled VPN-IPv4 routes:ASBR間通過MP-EBGP發布標簽VPN-IPv4路由,也稱為Inter-Provider Option B;
l Multihop EBGP redistribution of labeled VPN-IPv4 routes:PE間通過MP-EBGP發布標簽VPN-IPv4路由,也稱為Inter-Provider Option C。
下麵逐一對這些方案進行介紹。
這種方式下,兩個AS的PE路由器直接相連,PE路由器同時也是各自所在自治係統的邊界路由器ASBR。
作為ASBR的PE之間通過多個子接口相連,兩個PE都把對方作為自己的CE設備對待,使用傳統的EBGP方式向對端發布IPv4路由。報文在AS內部作為VPN報文,采用兩層標簽轉發方式;在ASBR之間則采用普通IP轉發方式。
理想情況下,每個跨域的VPN都有一對子接口與之對應,用來交換VPN路由信息。
圖 7 ASBR間使用子接口管理VPN路由組網圖
使用子接口實現跨域VPN的優點是實現簡單:兩個作為ASBR的PE之間不需要為跨域進行特殊配置。
缺點是可擴展性差:作為ASBR的PE需要管理所有VPN路由,為每個VPN創建VPN實例。這將導致PE上的VPN-IPv4路由數量過於龐大。並且,為每個VPN單獨創建子接口也提高了對PE設備的要求。
這種方式下,兩個ASBR通過MP-EBGP交換它們從各自AS的PE路由器接收的標簽VPN-IPv4路由。
路由發布過程可分為以下步驟:
(1) AS 100內的PE先通過MP-IBGP方式把標簽VPN-IPv4路由發布給AS 100的邊界路由器PE,或發布給為ASBR PE反射路由的路由反射器;
(2) 作為ASBR的PE通過MP-EBGP方式把標簽VPN-IPv4路由發布給AS 200的PE(也是AS 200的邊界路由器);
(3) AS 200的ASBR PE再通過MP-IBGP方式把標簽VPN-IPv4路由發布給AS 200內的PE,或發布給為PE反射路由的路由反射器。
這種方式的ASBR需要對標簽VPN-IPv4路由進行特殊處理,因此也稱為ASBR擴展方式。
圖 8 ASBR間通過MP-EBGP發布標簽VPN-IPv4路由組網圖
在可擴展性方麵,通過MP-EBGP發布標簽VPN-IPv4路由優於ASBR間通過子接口管理VPN。
采用MP-EBGP方式時,需要注意:
l ASBR之間不對接收的VPN-IPv4路由進行VPN Target過濾,因此,交換VPN-IPv4路由的各AS服務提供商之間需要就這種路由交換達成信任協議;
l VPN-IPv4路由交換僅發生在私網對等點之間,不能與公網交換VPN-IPv4路由,也不能與沒有達成信任協議的MP-EBGP對等體交換VPN-IPv4路由。
前麵介紹的兩種方式都能夠滿足跨域VPN的組網需求,但這兩種方式也都需要ASBR參與VPN-IPv4路由的維護和發布。當每個AS都有大量的VPN路由需要交換時,ASBR就很可能成為阻礙網絡進一步擴展的瓶頸。
解決上述可擴展性問題的方案是:ASBR不維護或發布VPN-IPv4路由,PE之間直接交換VPN-IPv4路由。
兩個ASBR通過MP-IBGP向各自AS內的PE路由器發布標簽IPv4路由。
ASBR上不保存VPN-IPv4路由,相互之間也不通告VPN-IPv4路由。
ASBR保存AS內PE的帶標簽的IPv4路由,並通告給其它AS的對等體。另一個自治係統中的ASBR也通告帶標簽的IPv4路由。這樣,在入口PE和出口PE之間建立起一條LSP。
不同AS的PE之間建立Multihop方式的EBGP連接,交換VPN-IPv4路由。
圖 9 PE間通過Multi-hop MP-EBGP發布標簽VPN-IPv4路由組網圖
為提高可擴展性,可以在每個AS中指定一個路由反射器RR(Route Reflector),由RR保存所有VPN-IPv4路由,與AS的PE交換VPN-IPv4路由信息。兩個AS的RR之間建立跨域VPNv4連接,通告VPN-IPv4路由。如圖 10所示。
圖 10 采用RR的跨域VPN OptionC方式組網圖
MPLS L3VPN服務提供商的用戶可能也是一個服務提供商。這種情況下,前者稱為提供商運營商(Provider Carrier)或一級運營商(First Carrier),後者稱為客戶運營商(Customer Carrier)或二級運營商(Second Carrier)。這種組網模型稱為運營商的運營商(Carriers’ carriers),低級別的SP作為更高級別SP的CE。
為保持良好的可擴展性,一級運營商並不引入二級運營商的外部路由,隻引入為不同站點的二級運營商交換報文的路由。二級運營商維護的外部路由通過在相關二級運營商路由器間建立BGP會話交換。這可以大大減少一級運營商網絡中需要維護的路由數量。
與普通MPLS L3VPN相比,配置運營商的運營商的主要區別在於一級運營商PE接入二級運營商CE這一部分:
l 如果一級運營商PE與二級運營商CE位於同一個AS內,則它們之間配置IGP和LDP;
l 如果一級運營商PE與二級運營商CE位於不同的AS,則它們之間配置MP-EBGP。MP-EBGP為PE與CE之間交換的路由分配標簽。
無論哪種情況,CE上都需要使能MPLS。並且,CE上雖然有二級運營商的VPN路由,但它們並不把這些路由發布給一級運營商的PE,隻在二級運營商PE之間交換。
二級運營商可能隻是普通ISP,也可能是MPLS L3VPN服務提供商。
二級運營商是普通ISP時,其PE不需要運行MPLS,與CE之間運行IGP。PE 3和PE 4之間通過IBGP會話交換二級運營商的VPN路由。如圖 11所示。
二級運營商是MPLS L3VPN服務提供商時,其PE也需要運行MPLS,與CE之間運行IGP和LDP。PE 3和PE 4之間通過MP-IBGP會話交換二級運營商的VPN路由。如圖 12所示。
如果一級運營商和二級運營商之間存在等價路由,則建議在一級運營商和二級運營商之間建立對應的等價LSP。
在基本的MPLS L3VPN模型中,由運營商經營MPLS VPN骨幹網,通過PE設備提供VPN服務。VPN用戶通過CE設備與運營商的PE設備互連,接入MPLS VPN網絡,實現屬於用戶VPN的不同Site之間的通信。在這種情況下,用戶網絡是普通的IP網絡,VPN用戶不能再劃分子VPN。
實際組網中,VPN用戶網絡複雜多樣,繁簡不同。當VPN用戶內部需要進一步劃分多個VPN時,傳統的解決方案是直接在運營商的PE設備上配置用戶內部的VPN。這種方案實現簡單,缺點是將導致PE上承載的VPN數量急劇增加,並且,如果用戶內部需要調整VPN關係,也必須通過運營商操作。這不僅增加了網絡的運營成本,也帶來了管理和安全方麵的問題。
嵌套VPN是一種更為完善的解決方案,它的主要思想是在普通MPLS L3VPN的PE和CE之間傳遞VPNv4路由,由用戶管理自己內部的VPN劃分,運營商不參與用戶內部VPN的管理。如圖 13所示,用戶在運營商MPLS VPN網絡上所屬的VPN為VPN A,在用戶網絡內部劃分子VPN:VPN A-1和VPN A-2。運營商PE設備把用戶網絡當作普通VPN用戶對待,不參與子VPN的劃分。VPN用戶的CE設備(CE 1、CE 2、CE 7和CE 8)和運營商PE設備之間傳遞包括子VPN路由信息的VPNv4路由,從而實現用戶網絡內部子VPN路由信息的傳遞。
圖 13 嵌套VPN組網應用
嵌套VPN中,路由信息的傳播過程為:
(1) 運營商的PE設備與VPN用戶的CE設備交互VPNv4路由,VPNv4路由攜帶用戶內部的VPN信息。
(2) 運營商的PE設備收到VPNv4路由後,保留用戶內部的VPN信息,並附加用戶在運營商網絡上的MPLS VPN屬性,即將該VPNv4路由的RD更換為用戶所處運營商網絡VPN的RD,同時將用戶所處運營商網絡VPN的ERT(Export Route-target,引出路由標識)添加到路由的擴展團體屬性列表中。運營商的PE設備維護用戶內部的VPN信息。
(3) 運營商的PE設備向其他運營商PE設備發布這些攜帶綜合VPN信息的VPNv4路由。
(4) 其他的運營商PE設備收到VPNv4路由後,與本地的VPN進行匹配,每個VPN接收屬於自己的路由,然後將路由擴散到自己連接的子VPNCE設備(如1. 圖 13中的CE 3、CE 4、CE 5和CE 6):如果運營商PE和CE設備之間是IPv4連接,直接擴散IPv4路由;如果和CE設備之間是VPNv4連接,表示通過私網連接的是一個用戶MPLS VPN網絡,向CE擴散VPNv4路由。
嵌套VPN技術的主要優點是:
l 實現了VPN聚合功能,可以把用戶的多個內部VPN聚合成一個用戶VPN,接入運營商的MPLS VPN網絡;
l 支持對稱組網方式和非對稱組網方式,即屬於同一VPN用戶的不同Site包括的用戶內部VPN數目可以相同,也可以不同;
l 支持用戶內部VPN的多層嵌套。
嵌套VPN技術降低了用戶接入VPN網絡的複雜度和成本,為用戶提供多樣化的VPN組網方式,實現了用戶對內部VPN以及多層VPN之間的互訪權限控製管理。
從CE進入PE的報文的VPN屬性由入接口綁定的VPN決定,這就決定了由同一入接口經PE轉發的所有CE設備都必須屬於同一VPN。但在實際組網中,一個CE設備可能需要經過一個物理接口訪問多個VPN,這可以通過設置不同的邏輯接口來實現,但會增加額外的配置負擔,使用起來也有局限性。
多角色主機,是通過在PE上配置策略路由,使來自CE的報文可以訪問多個VPN。
為使其它VPN的信息能夠從PE發送到CE,需要在其它VPN上配置靜態路由,並指定連接CE的接口作為下一跳。
在實際應用中,應合理進行地址規劃,使每個VPN的地址段相對集中,以提高PE的轉發效率。
(1) 分層模型與平麵模型
在MPLS L3VPN解決方案中,PE設備最為關鍵,它完成兩方麵的功能:首先是為用戶提供接入功能,這需要PE具有大量接口;然後是管理和發布VPN路由,處理用戶報文,這需要PE設備具有大容量存儲和高轉發能力。
目前的網絡設計大多采用經典的分層結構,例如,城域網的典型結構是三層模型:核心層、彙聚層、接入層。從核心層到接入層,對設備的性能要求依次下降,網絡的規模則依次擴大。
而MPLS L3VPN是一種平麵模型,對網絡中所有PE設備的性能要求相同,當網絡中某些PE在性能和可擴展性方麵存在問題時,整個網絡的性能和可擴展性將受到影響。
由於MPLS L3VPN的平麵模型與典型的分層網絡模型不相符,在每一個層次上部署PE都會遇到擴展性問題,不利於大規模部署VPN。
(2) HoVPN
為解決可擴展性問題,MPLS L3VPN必然要從平麵模型轉變為分層模型。
在MPLS L3VPN領域,分層VPN(Hierarchy of VPN,簡稱HoVPN)解決方案的提出,實現了將PE的功能分布到多個PE設備上,多個PE承擔不同的角色,並形成層次結構,共同完成一個PE的功能。
HoVPN對處於較高層次的設備的路由能力和轉發性能要求較高,而對處於較低層次的設備的相應要求也較低,符合典型的分層網絡模型。
(1) HoVPN的基本結構
圖 14 HoVPN的基本結構
在圖 14中,直接連結用戶的設備稱為下層PE(Underlayer PE)或用戶側PE(User-end PE),簡寫為UPE;連結UPE並位於網絡內部的設備稱為上層PE(Superstratum PE)或運營商側PE(Sevice Provider-end PE),簡寫為SPE。
多個UPE與SPE構成分層式PE,共同完成傳統上一個PE的功能。
SPE與UPE的分工是:
l UPE主要完成用戶接入功能。UPE維護其直接相連的VPN Site的路由,但不維護VPN中其它遠程Site的路由或僅維護它們的聚合路由;UPE為其直接相連的Site的路由分配內層標簽,並通過MP-BGP隨VPN路由發布此標簽給SPE;
l SPE主要完成VPN路由的管理和發布。SPE維護其通過UPE連接的VPN所有路由,包括本地和遠程Site的路由,SPE將路由信息發布給UPE,並攜帶標簽。SPE發布的路由信息可以是VPN實例的缺省路由(或聚合路由),也可以是通過路由策略的路由信息。通過後者可以實現對同一VPN下不同站點之間互訪的控製。
由於分工的不同,對SPE和UPE的要求也不同:SPE的路由表容量大,轉發性能強,但接口資源較少;UPE的路由容量和轉發性能較低,但接入能力強。HoVPN充分利用了SPE的性能和UPE的接入能力。
需要說明的是,SPE和UPE是相對的概念。在多個層次的PE結構中,上層PE相對於下層就是SPE,下層PE相對於上層就是UPE。
分層式PE從外部來看同傳統上的PE沒有區別,可以同普通PE共存於一個MPLS網絡。
(2) SPE-UPE
SPE和UPE之間運行MP-BGP,可以是MP-IBGP,也可以是MP-EBGP,這取決於UPE和SPE是否屬於同一個AS。
采用MP-IBGP時,為了在IBGP對等體之間通告路由,SPE將作為路由反射器,把來自IBGP對等體UPE的VPN路由發布給IBGP對等體SPE,但SPE不作為其它PE的路由反射器。
(3) HoVPN的嵌套與擴展
HoVPN支持分層式PE的嵌套:
l 一個分層式PE可以作為UPE,同另一個SPE組成新的分層式PE;
l 一個分層式PE可以作為SPE,同多個UPE組成新的分層式PE;
l 以上這種嵌套可以多次進行。
通過分層式PE的嵌套,理論上可以將VPN無限擴展與延伸。
圖 15 分層式PE的嵌套
圖 15是一個三層的分層式PE,稱中間的PE為MPE(Middle-level PE)。SPE和MPE之間,以及MPE和UPE之間,均運行MP-BGP。
MP-BGP為上層PE發布下層PE上的所有VPN路由,為下層PE發布上層PE的VPN實例缺省路由或通過路由策略的VPN路由。
SPE維護了這個分層式PE接入的所有Site的VPN路由,路由數目最多;UPE隻維護它所直接連接的Site的VPN路由,路由數目最少;MPE的路由數目介於SPE和UPE之間。
OSPF是應用廣泛的一種IGP協議,很多情況下,VPN客戶端通過BGP對等體連接,客戶端內部則經常以OSPF作為內部路由協議。如果能夠在PE-CE之間使用OSPF,則CE上就不需要再為到PE的連接支持其它路由協議,從而簡化CE的管理和配置。並且,如果客戶需要通過傳統的OSPF骨幹區域提供MPLS L3VPN服務,在PE和CE之間使用OSPF可以簡化這種轉換。
為了在PE-CE間運行OSPF,PE必須支持OSPF多實例,每個OSPF實例與一個VPN實例對應,使用自己的接口、路由表。
下麵具體介紹在PE-CE間配置OSPF需要了解的知識。
(1) PE和CE間的OSPF區域配置
PE與CE之間的OSPF區域可以是非骨幹區域,也可以是骨幹區域。
在OSPF VPN擴展應用中,MPLS VPN骨幹網被看作是骨幹區域area 0。由於OSPF要求骨幹區域連續,因此,所有VPN站點的area 0必須與MPLS VPN骨幹網相連。
即:如果VPN站點存在OSPF area 0,則CE接入的PE必須通過area 0與這個VPN站點的骨幹區域相連(可以通過Virtual-link實現邏輯上的連通)。
(2) BGP/OSPF交互
在PE-CE間運行OSPF後,PE與PE通過BGP發布VPN路由,PE通過OSPF向CE發布VPN路由。
對於普通OSPF,即使兩個不同站點屬於同一VPN,它們也會被看作屬於不同的自治係統。這樣,在一個站點學到的路由,將被作為外部路由傳送給另一站點。這種處理方式導致了比較高的OSPF路由協議流量,並帶來了一些原本可以避免的網絡管理問題。
目前的OSPF可以解決上述問題。通過適當配置,運行OSPF的不同站點之間彼此看作是直接相連的。這樣,PE路由器交換OSPF路由信息時就好像是通過一條專線相連。改善了網絡管理並使OSPF的應用更為有效。
以圖 16為例,PE 1和PE 2通過MPLS骨幹網相連,CE 11、CE 21和CE 22都屬於VPN 1。假設圖中所有路由器屬於同一個域,即,CE 11、CE 21、CE 22屬於同一個OSPF域(OSPF domain)。
VPN 1路由的發布過程可以描述為:首先在PE 1上將CE 11的OSPF路由引入BGP;然後通過BGP將這些VPN路由發布給PE 2;在PE 2上將BGP的VPN路由引入到OSPF,再發布給CE 21和CE 22。
圖 16 OSPF在VPN中的使用
如果使用標準的BGP/OSPF交互過程,PE 2將把BGP VPN路由通過Type5 LSAs(即ASE LSAs)發布給CE 21和CE 22。但CE 11與CE 21、CE 22是同一個OSPF域,它們之間的路由發布應該使用Type3 LSAs,即區域間路由。
為了解決上述問題,PE使用一種經過修改的BGP/OSPF交互過程(簡稱為BGP/OSPF互操作功能),發布從一個Site到另一個Site的路由,將這種路由與真正的AS-External路由進行區分。這一過程需要BGP使用擴展團體屬性,攜帶可以標識OSPF屬性的信息。
在實現中,要求每個OSPF域有一個可配置的域ID(Domain ID)。一般建議:與每個VPN實例相關的網絡中的所有OSPF實例要麼配置一個相同的域ID,要麼都使用缺省的域ID。這樣在收到BGP的VPN路由時,域ID相同的是來自同一VPN實例的路由。
(3) 路由環的檢測
假設PE與CE之間通過OSPF骨幹區域相連,且同一個VPN站點(Site)連接到多個不同PE。這種情況下,當一個PE通過LSA向VPN站點發布從MPLS/BGP學的BGP VPN路由時,LSA可能被另一個PE接收到,造成路由環。
為了防止產生路由環,對於從MPLS/BGP學到的BGP VPN路由,無論PE與CE間是否通過OSPF骨幹區域相連,PE在生成Type3 LSA時,都會設置標誌位DN。PE路由器的OSPF進程在進行路由計算時,忽略DN置位的Type3 LSAs。
如果PE需要向CE發布一條來自其它OSPF域的路由,則PE應表明自己是ASBR,並將該路由作為Type5 LSA發布。
通常情況下,BGP對等體之間通過BGP擴展團體屬性在MPLS VPN骨幹網上承載路由信息。另一端PE上運行的OSPF可利用這些信息來生成PE到CE的Type3 summary LSA,這些路由是區域間路由。
如圖 17所示:在OSPF的PE-CE連接中,同一個OSPF區域中有兩個Site連接到不同的PE,兩個Site屬於同一個VPN,它們之間存在一條區域內OSPF鏈路(backdoor link)。這種情況下,通過PE連接兩個Site的路由將作為區域間路由(Inter-Area Route),由於其優先級低於經過backdoor鏈路的區域內路由(Intra-Area Route),不會被OSPF優選。
圖 17 Sham-link應用示意圖
上述情況導致VPN流量總是通過後門路由轉發,而不走骨幹網。為了避免這一問題,可以在PE路由器之間建立OSPF偽連接(Sham-link),使經過MPLS VPN骨幹網的路由也成為OSPF區域內路由。
Sham-link作為區域內的一條點到點鏈路,包含在Type1 LSA中發布。用戶可以通過調整度量值在Sham-link和backdoor之間進行選路。
Sham-link被看成是兩個VPN實例之間的鏈路,每個VPN實例中必須有一個Sham-link的端點地址,它是PE路由器上VPN地址空間中的一個有32位掩碼的Loopback接口地址。同一個OSPF進程的Sham-link可以共用端點地址,但不同OSPF進程不能擁有兩條端點地址完全相同的Sham-link。
Sham-link的端點地址被BGP作為VPN-IPv4地址發布。如果路由經過了Sham-link,它就不能再以VPN-IPv4路由的形式被引入到BGP。
Sham-link可以在任何區域配置。Sham-link需要手工配置,並且,本端VPN實例中必須有到Sham-link目的地址的路由。
OSPF多實例通常運行在PE路由器上,在局域網內部運行OSPF多實例的路由器稱為Multi-VPN-Instance CE,即多實例CE。與PE上的OSPF多實例相比,Multi-VPN-Instance CE不需要支持BGP/OSPF互操作功能。
Multi-VPN-Instance CE主要用於以較低的成本解決局域網的安全問題。
單純使用傳統路由器很難實現局域網中不同業務的完全隔離。目前,在一台路由器上可以運行多個OSPF進程,這些OSPF進程可以是公網進程,也可以是某個VPN實例的進程。因此,在一台路由器上可以運行多個OSPF進程,將不同的進程綁定到不同的VPN實例。
在實際應用中,通過為不同的業務建立各自的OSPF實例,可以實現不同業務的隔離,保證各自的安全性。
在MPLS L3VPN中,如果PE和CE之間運行EBGP,由於BGP使用AS號檢測路由環路,為保證路由信息的正確發送,需要為物理位置不同的站點分配不同的AS號。
如果物理分散的CE複用相同的AS號,就應該在PE上配置BGP的AS號替換功能。此功能是BGP的出口策略,在發布路由時有效。
使能了BGP的AS號替換功能後,當PE向指定對等體中的CE發布路由時,如果路由的AS_PATH中有與CE相同的AS號,將被替換成PE的AS號後再發布。
圖 18 BGP AS號替換應用示意圖
在圖 18中,CE 1和CE 2都使用AS號800,在PE 2上使能針對CE 2的AS號替換功能。當CE 1發來的Update信息從PE 2發布給CE 2時,PE 2發現AS_PATH中存在與CE 2相同的AS號800,就把它替換為自己的AS號100,這樣,CE 2就可以正確接收CE 1的路由信息。
對於PE使用不同接口連接多個CE的情況,如上圖中的CE 2和CE 3,也可以使用BGP的AS號替換功能。
BGP/MPLS VPN以隧道的方式解決了在公網中傳送私網數據的問題,但傳統的BGP/MPLS VPN架構要求每個VPN實例單獨使用一個CE與PE相連,如圖 1所示。
隨著用戶業務的不斷細化和安全需求的提高,很多情況下一個私有網絡內的用戶需要劃分成多個VPN,不同VPN用戶間的業務需要完全隔離。此時,為每個VPN單獨配置一台CE將加大用戶的設備開支和維護成本;而多個VPN共用一台CE,使用同一個路由表項,又無法保證數據的安全性。
使用以太網交換機提供的MCE功能,可以有效解決多VPN網絡帶來的用戶數據安全與網絡成本之間的矛盾,它使用CE設備本身的VLAN接口編號與網絡內的VPN進行綁定,並為每個VPN創建和維護獨立的路由轉發表(Multi-VRF)。這樣不但能夠隔離私網內不同VPN的報文轉發路徑,而且通過與PE間的配合,也能夠將每個VPN的路由正確發布至對端PE,保證VPN報文在公網內的傳輸。
下麵以圖 19為例介紹MCE對多個VPN的路由表項進行維護,並與PE交互VPN路由的過程。
圖 19 MCE工作原理示意圖
如圖 19所示,左側私網內有兩個VPN站點:Site1和Site2,分別通過MCE設備接入MPLS骨幹網,其中VPN1和VPN2的用戶,需要分別與遠端Site2內的VPN1用戶和Site1內的VPN2用戶建立VPN隧道。
通過配置MCE功能,可以在MCE設備上為VPN1和VPN2創建各自的路由轉發表,並使用Vlan-interface2接口與VPN1進行綁定、Vlan-interface3與VPN2進行綁定。在接收路由信息時,MCE設備根據接收接口的編號,即可判斷該路由信息的來源,並將其維護到對應VPN的路由轉發表中。
l 同時,在PE1上也需要將連接MCE的接口(子接口)與VPN進行綁定,綁定的方式與MCE設備一致。MCE與PE1之間通過Trunk鏈路連接,並允許VLAN2和VLAN3的報文攜帶VLAN Tag傳輸,從而使PE1在接收時可以根據報文所屬VLAN判別該報文屬於哪一個VPN,將報文在指定的隧道內傳輸。