自 1978 年溫頓·瑟夫、鮑伯·卡恩、丹尼·科恩(Danny Cohen)和約翰·普斯特爾(Jon Postel)合力將 TCP 協議從分層思想的角度劃分為 IP 和 TCP 這 2 個協議并建立了著名的沙漏模型以來。
IP 路由轉發技術就被廣泛地應用到了廣域網絡數據傳輸場景中。IP 技術是一種無連接的、盡力而為的通信方式,采用了 “最長匹配優先” 算法進行路由轉發,每個 Router 都需要先解析出 IP Packet 的 dstIP 地址,并根據此信息獨立對 Packet 進行路由決策。
上世紀 90 年代中期,IP 技術憑借實現簡單和成本低廉的優勢快速發展,但由于硬件轉發芯片技術存在限制,Router 必須要提供軟件實現的最長匹配優先算法,難免轉發性能低下。因此 IP 技術的轉發性能成為當時限制網絡發展的瓶頸。高性能的快速路由器技術成為當時研究的熱點之一。
ATM(Asynchronous Transfer Mode)技術就是在這樣的時代背景下誕生的。ATM 源于 1983 年美國貝爾研究所提出的快速分組交換以及 1984 年法國電信 CENT 提出的異步時分交換思想,它采用了固定長度為 188Bytes 的長標簽(信元)轉發方式,并且只需要維護比路由表規模小得多的標簽表,因此能夠提供比 IP 路由方式高得多的轉發性能。同時,ATM 還采用了面向連接和服務質量保障的方式進行通信。
由于 ATM 技術能夠滿足 ISP 對廣域網絡的可靠性和可管理性要求,因而在 ATM 技術興起的早期就被廣泛應用。然而,由于 ATM 協議相對復雜且部署成本非常高,這也使 ATM 技術很難普及。
隨著 Internet 的爆炸式增長,經濟性和效率性的邊界效益隨著網絡的規模進一步增大而降低。如何更有效地建設更大規模的廣域網絡成為擺在面前的現實問題。此外,隨著計算機網絡向寬帶化、智能化方向發展,網絡業務也呈現出突發特性。網絡通信更加強調效率和通用性。
ATM 以交換機為核心,通過信令技術建立長標簽轉發路徑,強調網絡智能。而 IP 以路由器為核心,通過路由技術支持逐跳轉發,強調終端智能。ATM 與 IP 有著各自的特色,也都有著適合自己的應用場景。
IP 技術簡單,但性能受到限制;
ATM 技術性能高,但協議相對復雜,且 ATM 網絡部署成本高昂。
很自然的,在當時的背景下,如何將 IP 和 ATM 各自的優勢結合起來是一個熱門的研究主題,即:在保持 IP 技術簡潔性的前提下,提供 ATM 技術的高性能。
直到,在 1996 年 MPLS(Multi-Protocol Label Switching,多協議標簽交換技術)在這種背景下誕生。至此,傳統網絡中就擁有了 3 種經典轉發實現,它們分別是:
L2 交換轉發
L2.5 標簽轉發
L3 路由轉發
MPLS 協議則作用于 L2.5 層,其將 L3 路由技術和 L2 交換技術相結合,充分發揮了 IP 路由的靈活性和 MAC 交換的高效性能。
MPLS 協議格式
MPLS Label Stack
MPLS Label Stack 是 MPLS 協議格式的核心,又稱之為 MPLS Header,其位于 L2 Header 和 L3 Header 之間,使得 MPLS 能夠適用于 “Multi-Protocol(多種上層 Internet 協議類型)",包括:IPv6、IPX(Internet Packet Exchange)和 CLNP(Connectionless Network Protocol)等等。
如上圖所示,MPLS Label Stack 由若干個 MPLS Label Entries 組成。這些 MPLS Label Entries 從位置上還可以分為:
Outer MPLS Label(棧頂標簽):靠近 L2 Frame Header 的 Label Entry。
Inner MPLS Label(棧底標簽):靠近 L3 Packet Header 的 Label Entry。
多條 Label Entries 遵循著 FIFO(先進先出)的 Stack 特性,也就說 MPLS 設備會從 Outer Label 開始進行處理,此時的 Stack Index 為 0。直到 Stack Index 為 1 時,指向了 Inner Label,此時 MPLS 設備再執行一次 POP 操作,就完全剝除 MPLS Label Stack,還原了一個標準的 IP Packet。
如下面的 2 個例子,它們分別包含了 2 條和 3 條 Entries。
2 Label Entries
3 Label Entries
MPLS Label Stack 是實現 MPLS-TE FRR(Traffic Engineering Fast ReRoute)或 SR-MPLS 的關鍵,它們可以被 SDN Controller 統一控制標簽轉發的路徑。
MPLS Label Entries
上圖是一條 MPLS Label Entry 的報文各式,包括了:
0-15:特殊標簽值。
16-1023:靜態信令協議的標簽空間,例如:靜態 LSP、靜態 CR-LSP 等。
1024-1048575:動態信令協議的標簽空間,例如:LDP、RSVP-TE、MP-BGP 等。動態信令協議的標簽空間不是共享的,而是獨立且連續的,互不影響。
Label(20bits):用于標識一個 FEC 或作為僅在設備本地有特殊意義的標識,支持百萬級別的容量。Label Space 的標準定義如下:
EXP(3bits):擴展字段,現常被用于 CoS(Class of Service)特性。
S(Bottom of Stack,1bit):在 MPLS Label Stack 場景中表示該 Entry 的位置。
TTL(生存時間,8bits):當 IP Packet 被封裝到 MPLS Header 之后,IP Header TTL 會被 Copy 到 MPLS Header TTL。然后,每一次執行 MPLS LSH,MPLS Header TTL - 1。當解封裝 IP Packet 時,再將 MPLS Header TTL Copy 到 IP Header TTL。
針對將 EXP 字段應用于 MPLS TC(Traffic Control, 流量控制)場景,在 RFC 5462 中,將 EXP 字段被定義為了 TC 字段,用于支持 QoS and ECN 的功能。如下圖所示。
MPLS 廣域網絡轉發原理
MPLS 的基本組網元素
LSR(Label Switching Router,標簽交換路由器):MPLS 網絡的 Core 設備。
LER(Label Edge Router,標簽邊緣路由器):MPLS 網絡的 Network Edge 設備。可再細分為 2 類:
MPLS Ingress Node:進入 MPLS 網絡的 LER,Ingress Node 會計算出 IP Packets 歸屬的 FEC,并把 FEC 對應的 Label 封裝到 IP Packet。
MPLS Egress Node:出 MPLS 網絡的 LER,將 MPLS Label 剝離,還原為標準的 IP Packet 再重新回到 IP Routing 網絡中。
MPLS Router 的基本組成部分
MPLS Control Plane 負責管理 Routes 和 Labels 信息等。
IRP(IP Routing Protocol,IP 路由協議):生成 Routes。
RIB(Routing Information Base,路由信息表):存放 Routes。
LDP(Label Distribution Protocol,標簽分發協議):生成 Labels。
LIB(Label Information Base,標簽信息表):存放 Labels。
MPLS Data Plane 負責 IP Packets 的 Label 封裝、Label 解封裝、Label 轉發、Routing 轉發等。
FIB(Forwarding Information Base,轉發信息表):從 RIB 獲取 Routes 來完成 IP Packet 轉發。
LFIB(Label Forwarding Information Base,標簽轉發信息表):從 LIB 獲取 Labels 來完成 MPLS Packet 轉發。
MPLS 的基本轉發原理
傳統的 IP Packets 路由決策,Router 首先需要識別 IP Header,再根據 dstIP 計算出歸屬的 FEC(Forwarding Equivalence Class,轉發等價類)。在傳統的采用最長匹配算法的 IP Routing 中,匹配到同一條 Route 的所有 IP Packets 就是一個 FEC,Router 在確定了 FEC 后即可完成最終的路由轉發。
相對于 FEC,MPLS 提出了稱為 LSH(Label Switching Hop,基于 Label 的轉發)的新方法:
當 IP Packets 首次進入 MPLS 網絡時,首先還是會對 Packet 進行解包、分類、查找。然后,根據 MPLS 網絡配置為不同的 IP Packets 分配對應的 Label。
當 MPLS Packets 在 MPLS 網絡中進行傳輸時,后面的所有路由決策都是基于 Label 和 NHLFE(Next Hop Label Forwarding Entry)來完成的。NHLFE 包含了 Label 和 Next Hop 的映射關系,以及需要對 Label 執行的操作,包括:替換(SWAP)、刪除(POP)、添加(PUSH)。直到 IP Packets 流出 MPLS 網絡為止。
這樣帶來了兩個直觀的好處:
Router 不需要解析 IP Header 了,MPLS Label 的解析由硬件芯片來完成。
因為 MPLS Label 被設計為了 Integer 類型,可以達到 O(1) 的查找時間。
因此,MPLS 的 LSH 可以大大地減少路由決策的時間。
標簽轉發表的生成流程如下圖所示:
IP 路由協議建立鄰居,交互路由信息,生成 IP 路由表。
標簽交換協議從 IP 路由表中獲取路由信息。IP 路由表中的路由前綴匹配了 FEC。
IP 路由表中激活的最優路由生成 IP 轉發表。
標簽轉換協議建立鄰居,為 FEC 分配標簽并發布給鄰居,同時獲取鄰居發布的標簽,生成標簽轉發表。
MPLS VPN 廣域網專線
上文介紹了 MPLS 協議最初的目的是為了提高 L3 Router 的轉發速度而設計的。與傳統 IP 路由方式相比,MPLS 在數據轉發時,只需要在 Network Edge Gateway 分析 IP Header,而不用在每一跳的 L3 Router 上都分析,因此節約了大量的計算時間。
然后在現代網絡中,隨著 ASIC 和 NP 等數通芯片技術的發展,路由查找速度已經不再是阻礙網絡發展的瓶頸了,這使得 MPLS 在提高轉發速度方面不再具備明顯的優勢。不過,MPLS 憑借其支持多層標簽、轉發平面面向連接等特性,使其在 VPN、TE(Traffic Engineering,流量工程)、QoS 等廣域網專線的場景中仍然得到了廣泛的應用。
MPLS VPN,即:基于 ISP 電信運營商 MPLS 廣域網絡之上構建的 VPN,也被稱之為 MPLS 專線服務,本質是一種廣域網 Underlay 專用線路租賃服務。運營商把專線租給用戶,并承諾這條線路的 SLA(Service Level Agreement,服務等級協議,包括帶寬、時延、抖動、丟包率等)。常用于企業多分支和 DCI(數據中心連接)場景。通過這條 MPLS 專線,跨域廣域網的多個 Sites(站點)之間,邏輯上構建了一個企業內網。
根據具體應用場景的不同,MPLS VPN 還可以細分為 L2VPN 和 L3VPN 這兩大類型。
MPLS L2VPN
MPLS L2VPN 是一個 L2 over MPLS 網絡,用于在多個 Sites 之間建立 L2 交換網絡,支持實現多種不同的數據鏈路層,包括:ATM、FR、VLAN、Ethernet、PPP 等等。
另外,MPLS L2VPN 的技術實現種類有很多,例如:VLL、PWE3 和 VPLS 等。由于 MPLS L2VPN 中 PE 不參與用戶流量的 L3 路由處理,因此 PE 的橫向擴展性要比 L3VPN 要好得多,只與 PE 能連接的 VPN 用戶數目相關。但是作為代價,L2VPN 的靈活性要差一些。
值得注意的是,隨著 EVPN Control Plane 的興起和發展,基于 VPLS Control Plane 的 MPLS L2VPN 已經逐漸被替代,所以這里只做簡單的介紹。
MPLS L3VPN
MPLS L3VPN 是本文介紹的重點,也是更加被廣泛應用的類型。之所以稱之為 L3VPN 是因為其 Control Plane 基于 MP-BGP 動態路由協議來實現,而 Data Plane 仍然是 MPLS。
MPLS L3VPN 工作原理
基本組網元素
在 MPLS L3VPN 的模型中,網絡由 ISP 的骨干網與用戶的各個 Sites 組成,組網方式靈活、可擴展性好,并能夠方便地支持 MPLS QoS 和 MPLS TE,因此至今是一種主流方案。
經典的 MPLS L3VPN 網絡架構主要由若干個 Sites 和 3 類網元組成:
Site(用戶站點):表示一個本地的用戶網絡(例如:公司總部、分支機構),一個用戶站點可以通過一條或多條鏈路連接到 ISP 的骨干網絡。
CE(Customer Edge,用戶邊緣路由器):用戶側設備,是接入 ISP 的 DC-GW(IP 路由器,或是一臺主機),與連接的一個或多個 PE 建立鄰接關系。CE 不需要必須支持 MPLS 協議棧。
PE(Provider Edge,骨干網邊緣路由器):接入層設備,ISP 的路由器,連接 P 和 CE,相當于 LER(標簽邊緣路由器)。在 MPLS 網絡中,對 VPN 的所有處理都發生在 PE 上。
P(Provider,骨干網路由器):核心層設備,ISP 的路由器,連接 PE,不連接 CE,相當于 LSR(標簽交換路由器)。只需要具備基本的數據面轉發能力。
MP-BGP VPN-IPV4 Routes 類型
VPN-IPV4 Routes 是一種 BGP MP 擴展,通過擴展了 BGP NLRI(Network Layer Reachability Information,網絡層可達信息)中的 VPNv4 地址族,用于支撐 MPLS L3VPN 的應用場景,具體而言,它具有下述的 3 個核心字段。
VPN-IPv4 字段
傳統的 BGP-4 協議無法正確處理地址空間重疊的 VPN Routes,例如:VPN1 和 VPN2 都使用了 10.110.10.0/24 網段,并且各自都發布了一條 NextHop Local Routes,而 BGP-4 只能選擇保留其中一條 Route,從而丟失了去往另一個 VPN 的路由。
為了解決地址空間重疊的問題,MPLS L3VPN 實現了互相隔離的 VPN Instances。每個 VPN Instance 都擁有專屬的 VPN-IPv4 地址空間,而每個 VPN-IPv4 地址均由 RD(Route Distinguisher,路由區分符)和 IPv4 地址 2 大部分組成。即:在 IPv4 地址字段前面再增加了一個 8Byte 的 RD 字段,用來區分不同 VPN Instance 的 IPV4 地址。
如下圖所示,VPN-IPv4 地址共有 12 Byte,包括了 8Byte 的 RD 和 4Byte 的 IPv4 地址前綴。
RD(Route Distinguisher,路由區分符)字段
RD 的作用是添加到一個特定的 IPv4 前綴,使之成為全局唯一的 VPN-IPv4 前綴。
RD 的 Value 自身通常有 2 種組成方式:
與 ASN(自治系統號)關聯:RD 由 ASN 和一個任意數字組成;
與 IP 地址關聯:RD 是由 IP 地址和一個任意數字組成。
相對的,RD 有 3 種類型,通過 Type 字段區分:
Type == 0:2Byte Administrator,4Byte Assigned number。格式為:{16bits ASN}:{32bits Custom number},例如:100:1。
Type == 1:4Byte Administrator,2Byte Assigned number。格式為:{32bits IPv4}:{16bits Custom number},例如:172.1.1.1:1。
Type == 2:4Byte Administrator,2Byte Assigned number。格式為:32bits ASN}:{16bits Custom number},其中的 ASN 最小值為 65536,例如:65536:1。
建議為 PE 上每個 VPN Instances 都配置專門的 RD,以保證到達同一個 CE 的 Routes 都使用相同的 RD。而 RD 為 0 的 VPN-IPv4 地址,就相當于是全局唯一的 IPv4 地址了。
ISP 是運行獨立劃分 RD 的,但必須保證 RD 的全局唯一性,這樣即使不同的 ISP 的 VPN 使用了重疊的 IPv4 地址,PE 也可以向各 VPN 發布不同的 Routes 了。
為保證 RD 的全局唯一性,建議不要將 Administrator 字段的值設置為私有的 ASN 或私有的 IP 地址。
RT(Route Target,路由目標)字段
MP-BGP 的 RT(Route Target,路由目標)擴展字段用于實現 PE 的 VPN Instance 的 Route Target Filter(目標路由過濾器)功能,可以控制 VPN Routes 的發布。
PE 上的 VPN Instance 有 2 類 RT 字段:
Export Target:Local PE 發布 VPN-IPv4 Routes 到 Remote PE 之前,為這些 Routes 設置 Export Target 屬性;
Import Target:Local PE 在接收到 Remote PE 發布的 VPN-IPv4 Route 時,檢查其 Export Target 屬性,只有當 Export Target 與 Local PE 上的 VPN Instance 的 Import Target 屬性匹配時,才會把這些 Routes 加入到相應的 VPN VRF 中。
PE 針對每個 VPN VRF 都可以配置一些 Export Target / Import Target Policies,規定了一個 VRF 可以接收攜帶何種 RT 屬性的路由信息,向外發布路由時攜帶什么 RT 屬性。
也就是說,VPN-IPV4 Route 所攜帶的 RT 屬性決定了 VPN 的成員關系。RT 屬性定義了一條 VPN-IPv4 Routes 可以被哪些 PE 接收,或者說,定義了 PE 可以接收哪些 VPN-IPv4 Routes。
與 RD 類似,RT 也有 3 種格式:
{16bits ASN}:{32bits Custom number},例如:100:1。
{32bits IPv4}:{16bits Custom number},例如:172.1.1.1:1。
{32bits ASN}:{16bits Custom number},其中的 ASN 最小值為 65536。例如:65536:1。
PE 設備支持 VPN-IPV4 Routes 類型
PE 的 VPN Instance
在 MPLS L3VPN 中,一個 VPN 表述一個用戶(租戶),不同 VPN 之間的路由隔離通過 VPN Instance 實現。
PE 為每個直接相連的 CE 建立并維護專門的 VPN Instance。VPN Instance 中包含對應 Site 的 VPN 成員關系和路由規則。如果一個 Site 中的用戶同時屬于多個 VPN,則該 Site 的 VPN Instance 中將包括所有這些 VPN 的信息。為保證 VPN 數據的獨立性和安全性,PE 上每個 VPN Instance 都有相對獨立的 VRF 和 LFIB。
具體來說,VPN Instance 中的信息包括:
LFIB(Label Forwarding Information Base,標簽轉發表);
VRF(VPN Routing & Forwarding,VPN 的路由轉發表);
與 VPN Instance 綁定的 Interface;
VPN Instance 的管理信息,包括:RD(Route Distinguisher,路由區分符)、RT(Route Target,路由目標)路由過濾策略、成員接口列表等。
PE 的 VRF
PE Virtualization 是 VRF 之于 Router,類似 VLAN 之于 Switch,Trunk 之于 Ethernet Connection,VDOM 之于 Firewall,VM 之于 Server。VRF 的本質就是一種 Path Isolation(路徑隔離)技術。
在 MPLS L3VPN 的 PE 中,維護了一張全局的路由表(公網路由表)。同時,還會維護著多張 VRF 表,VRF 是一種路由隔離和信息隔離的方式,使得每個 VRF 實例相互隔離,可以將 VRF 看作是一個 vPE 設備。
這些 VRF 是和 PE 上的一個或多個 VPN Instance 相對應,用于存放這些 VPN Instance 的 VPN Routers Information。通常的,一個 VRF 中只包含一個 VPN Instance 的 Routers。
通常的,一個 VRF 中包括了以下元素:
RIB(Routing Information Base),獨立的 Routes Table。
FIB(Forwarding Info Base),獨立的 Forwarding Table。
一組歸屬于本 VRF 的 Interfaces 的集合。
一組只用于本 VRF 的路由協議。
VPN-IPV4 Routes 的交換方式
在基本的 MPLS L3VPN 組網中,VPN Routes 的發布主要涉及 CE 和 PE。PE 也只維護與它直接相連的 VPN Routes,不維護所有 VPN Routes。而 P 只維護骨干網 PE 的路由,不需要了解任何 VPN Routes。因此,MPLS L3VPN 網絡具有良好的可擴展性。
VPN Routes 的發布過程包括 3 部分:
本地 CE 到入口 PE。
入口 PE 到出口 PE。
出口 PE 到遠端 CE。
完成這 3 部分后,Local CE 與 Remote CE 之間將建立可達路由。
Local CE 和 Ingress PE 之間的路由交換
CE 通常是一臺普通的 Router,當 CE 與直接相連的 PE 建立了 Adjacency(鄰接)關系后,CE 就把 Local Site 的 VPN Routers 發布給 PE,并從 PE 學到 Remote VPN 的 Routes。
CE 與 PE 之間交換 Routes,可以采用靜態路由、或動態路由(e.g. RIP、OSPF、BGP、IS-IS)的方式。而采用靜態路由方式的好處是可以降低因為 CE 管理不善等原因導致對骨干網 BGP 路由產生了震蕩,影響了骨干網的穩定性。
Ingress PE 學習了 Local CE Site 的 VPN Routes 后,PE 會為這些 VPN Routes 增加 RD 和 RT 屬性,形成標準的 VPN-IPv4 Routes。然后再發布到 Local CE 的 VPN Instance 中,也會通過 BGP 發布到其它 Egress PE。
Ingress PE 和 Egress PE 之間的路由交換
PE 只會維護與它直接相連的 VPN Routes,不會維護 ISP 網絡中所有的 VPN Routes。
Ingress PE 通過 MP-BGP 把 VPN-IPv4 Routes 發布給 Egress PE。Egress PE 根據 VPN-IPv4 Routes 的 Export Target 屬性與自己維護的 VPN Instance 的 Import Target 屬性,決定是否將該 Routes 加入到 VPN Instance 的 Route Table 中。
Egress PE 和 Remote CE 之間的路由交換
Remote CE 有多種方式可以從 Egress PE 學習 VPN Routes,包括:靜態路由、RIP、OSPF、IS-IS 和 E-BGP。與 Local CE 到 Egress PE 的路由信息交換方式相同。
L3VPN 的報文轉發流程
用戶接入 MPLS L3VPN 的方式是為每個 Site 提供一個或多個 CE,再與 PE 連接。在 PE 上為這個 Site 配置 VRF,將連接 PE-CE 的物理接口、邏輯接口、甚至 L2TP/IPSec 隧道綁定到 VRF 上。
當在 MPLS 骨干網上傳輸 VPN 流量時,入口 PE 作為 Ingress LER,出口 PE 作為 Egress LER,P 路由器則作為 Transit LSR。
在基本 MPLS L3VPN 應用中(不包括跨域的情況),VPN 報文轉發采用兩層標簽方式:
第一層(外層)標簽:在骨干網內部進行交換,指示從 Local PE 到 Remote PE 的一條 LSP(標簽轉發路徑)。VPN 報文利用這層標簽,可以沿 LSP 到達 Remte PE;
第二層(內層)標簽:在從 Remote PE 到達 CE 時使用,指示報文應被送到哪個 CE。
特殊情況下,屬于同一個 VPN 的兩個 CE 連接到同一個 PE,這種情況下只需要知道如何到達對端 CE。
以下圖為例,說明 VPN 報文的轉發過程:
Site1 發出一個目的地址為 1.1.1.2 的 IP 報文,由 CE1 將報文發送至 PE1。
PE1 根據報文到達的接口及目的地址查找 VPN Instance 中的 VRF 和 LFIB 表項,匹配后將報文轉發出去,同時打上內層和外層兩個標簽。
MPLS 網絡利用報文的外層標簽,將報文傳送到 PE2(報文在到達 PE2 前一跳時已經被剝離外層標簽,僅含內層標簽)。
PE2 根據內層標簽和目的地址查找 VPN Instance 中的 VRF 和 LFIB 表項,確定報文的出接口,將報文轉發至 CE2。
CE2 根據正常的 IP 轉發過程將報文傳送到目的地。
MPLS L3VPN 的經典組網方案
單域 L3VPN 場景
單域 MP-BGP MPLS VPN 在一個 AS 內運行,任何 VPN 的 Routes 都是只能在一個 AS 內按需擴散。
基本組網方案
最簡單的情況下,一個 VPN 中的所有用戶形成閉合用戶群,相互之間能夠進行流量轉發,VPN 中的用戶不能與任何本 VPN 以外的用戶通信。
對于這種組網,需要為每個 VPN Instance 分配一個 Route Target(VPN Target),作為該 VPN Routes 的 Export Target / Import Target 屬性值。并且,此 Route Target 通常是全局唯一的。
下圖中,PE 上為 VPN1 分配的 Route Target 值為 100:1,為 VPN2 分配的 Route Target 值為 200:1。VPN1 的兩個 Site 之間可以互訪,VPN2 的兩個 Site 之間也可以互訪,但 VPN1 和 VPN2 的 Site 之間不能互訪。
Hub & Spoke 組網方案
如果希望在 VPN 中設置中心訪問控制設備,其它用戶的互訪都通過中心訪問控制設備進行,可以使用 Hub&Spoke 組網方案,從而實現中心設備對兩端設備之間的互訪進行監控和過濾等功能。
對于這種組網,需要設置兩個 VPN Target,一個表示 Hub,另一個表示 Spoke。
各 Site 在 PE 上的 VPN Instance 的 Route Target 設置規則為:
連接 Spoke 站點(Site1 和 Site2)的 Spoke-PE:Export Target 為 Spoke,Import Target 為 Hub;
連接 Hub 站點(Site3)的 Hub-PE:Hub-PE 上需要使用兩個接口或子接口,一個用于接收 Spoke-PE 發來的路由,其 VPN Instance 的 Import Target 為 Spoke;另一個用于向 Spoke-PE 發布路由,其 VPN Instance 的 Export Target 為 Hub。
下圖中,Spoke 站點之間的通信通過 Hub 站點進行(圖中箭頭所示為 Site2 的路由向 Site1 的發布過程):
Hub-PE 能夠接收所有 Spoke-PE 發布的 VPN-IPv4 路由;
Hub-PE 發布的 VPN-IPv4 路由能夠為所有 Spoke-PE 接收;
Hub-PE 將從 Spoke-PE 學到的路由發布給其他 Spoke-PE。因此,Spoke 站點之間可以通過 Hub 站點互訪。
任意 Spoke-PE 的 Import Target 屬性不與其它 Spoke-PE 的 Export Target 屬性相同。因此,任意兩個 Spoke-PE 之間不直接發布 VPN-IPv4 路由,Spoke 站點之間不能直接互訪。
Extranet 組網方案
如果一個 VPN 用戶希望提供部分本 VPN 的站點資源給非本 VPN 的用戶訪問,可以使用 Extranet 組網方案。
對于這種組網,如果某個 VPN 需要訪問共享站點,則該 VPN 的 Export Target 必須包含在共享站點的 VPN Instance 的 Import Target 中,而其 Import Target 必須包含在共享站點 VPN Instance 的 Export Target 中。
下圖中,VPN1 的 Site3 能夠被 VPN1 和 VPN2 訪問:
PE3 能夠接受 PE1 和 PE2 發布的 VPN-IPv4 路由;
PE3 發布的 VPN-IPv4 路由能夠為 PE1 和 PE2 接受;
基于以上兩點,VPN1 的 Site1 和 Site3 之間能夠互訪,VPN2 的 Site2 和 VPN1 的 Site3 之間能夠互訪。
PE3 不把從 PE1 接收的 VPN-IPv4 路由發布給 PE2,也不把從 PE2 接收的 VPN-IPv4 路由發布給 PE1(IBGP 鄰居學來的條目是不會再發送給別的 IBGP 鄰居),因此,VPN1 的 Site1 和 VPN2 的 Site2 之間不能互訪。
跨域 L3VPN 場景
如果同一個 VPN 的 2 個 Site 位于不同的 AS,意味著連接 VPN 的 PE 已經無法簡單地建立 I-BGP 鄰居關系、或是與 RR 建立鄰居關系了。因此,需要一些手段通過建立 E-BGP 鄰居關系來傳遞 VPNv4 Routes。
為了支持不同 AS 之間的 VPNv4 Routes 交換,就需要使用跨域(Inter-AS)的 MPLS VPN 架構了,以便可以穿過 AS 間的鏈路來發布路由前綴和標簽信息。
MPLS 有三種不同的 LDP (Label Distribution Protocol) 部署選項,即 Option A、B 和 C。這些選項定義了如何在 MPLS 網絡中分發標簽和構建標簽交換路徑(LSP)。
Inter-Provider Backbones Option A
Option A 是一種簡單的部署選項,每個 LSR(Label Switching Router)只分發到其相鄰的下游 LSR 的標簽。這種方式需要在網絡中維護大量的標簽交換路徑,因此不適用于大型網絡。
簡單的說就是每個 AS 只在自己內部通過 MP-iBGP 宣告路由。需要手動地在跨域 VPN 的 ASBR 間通過專用的接口管理自己的 VPN Routes,也稱為 VRF-to-VRF。
Inter-Provider Backbones Option B
Option B 是一種折中的部署選項,每個 LSR 只與其相鄰的下游 LSR 通信,但是在某些情況下會向網絡中的其他 LSR 分發標簽。這種方式可以在一定程度上減少標簽和路徑信息的數量,適用于中等規模的網絡。
簡單地說就是,處理在每個 AS 內部使用 MP-iBGP 宣告路由之外,不同的 AS 之間還會通過 ASBR PE 使用 MP-eBGP 宣告彼此 AS 的路由信息。
Inter-Provider Backbones Option C
Option C 是一種復雜的部署選項,可以實現在整個網絡中分布 Lables。每個 LSR 分別與網絡中所有其他 LSR 通信,以構建完整的標簽交換路徑。這種方式需要在網絡中維護大量的標簽和路徑信息,因此不適用于大型網絡。
簡單的說,就是整網都使用 MP-eBGP 宣告路由。
-
通信技術
+關注
關注
20文章
1141瀏覽量
92320 -
交換機
+關注
關注
21文章
2656瀏覽量
99978 -
VPN
+關注
關注
4文章
294瀏覽量
29802 -
MPLS
+關注
關注
0文章
131瀏覽量
24172 -
廣域網
+關注
關注
1文章
246瀏覽量
21838
原文標題:SD-WAN — MPLS 廣域網 VPN 技術解析
文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論