生活中無處不在的MPLS虛擬專用網

目錄

  1. 前言
  2. 原理描述
  3. MPLS VN數據的轉發
  4. 常見問題

一、前言

VN(虛擬專用網)在公網上爲用戶提供一個發送數據的專用的隧道,提供安全性和專用性。

相關概念

CE ( Custom Edge,用戶邊界) : 直接與服務提供商相連的用戶設備。通常情況下,CE“感知”不到VN的存在,也不需要支持MPLS。
PE ( Provider Edge Router 提供商邊界) : 指骨幹網上的邊緣路由器,與CE相連,主要負責VPN業務的接入。在MPLS網絡中,對VN的所有處理都發生在PE上,對PE性能要求較高。
P ( Provider Router 提供商路由器) : 指骨幹網上的核心路由器,主要完成路由和快速轉發功能。P設備只需要具備基本MPLS轉發能力,不維護VN信息。

VN分類:

1、Overlay VN方式:
服務提供商只提供邏輯的專用通道用戶邊緣路由器直接交換用戶路由信息。
L2 VN :通過FR(Frame Relay)和ATM等_二層廣域網技術實現
L3 VN :通過三層隧道技術GRE、IPsec實現
2、Peer-to-Peer VN :

在用戶路由器和服務提供商路由器之間交換用戶路由信息。

根據路由信息交換的類型分爲:
在這裏插入圖片描述

可以簡單理解爲:Overlay VN是靜態指定的,Peer-to-Peer是動態生成的。

出現原因

Overlay VN的本質是一 種“靜態”VN, 這好比是靜態路由,所以他具有類似靜態路由的缺陷:

  • 所有的配置與部署都需要手工完成,如果某個客戶的VN中新增了一個結點,則需要完成如下工作:

    1. 在這個新增結點上建立與所有已存在的N個結點的隧道及相關的路由。
    2. 對於已存在的N個結點,需要在每個結點上都建立一個與新增結點之間的隧道及相關的路由。如果客戶站點的數量是N,最優路由所需的總數爲N(N-1)/2條電路。
  • 由於是“靜態”VN,則無法反應網絡的實時變化。而且,如果隧道建立在CE上,則必須由用戶維護,如果建立在PE上,則又無法解決地址衝突問題。

當幀中繼或者ATM爲客戶提供虛擬專用網絡時,供應商不參與客戶的路由。服務提供商只負責爲客戶提供了運輸客戶數據的所使用的虛擬點至點鏈接。因此,服務供應商將只爲客戶提供在第2層的虛電路連接,這種實施方式被稱爲疊加模型。

針對疊加模型的弊端,開發出了對等模型。在對等模式中,客戶和服務提供商之間交換路由信息,客戶數據通過服務提供商的核心進行傳輸、優化。客戶的路由信息在服務提供商網絡中(P和PE路由器)和客戶網絡(CE路由器)之間通告。因此,對等模式並不需要建立虛電路。

MPLS VN基於對等模型,相比較傳統的VN,MPLS VN更容易擴展和管理。新增一個站點時,只需要修改提供該站點業務的邊緣節點的配置。

MPLS VN支持地址空間重疊、支持重疊VN、組網方式靈活、可擴展性好,並能夠方便地支持MPLS TE,成爲在IP網絡運營商提供增值業務的重要手段,因此得到越來越多的應用。

二、原理描述

基本概念

  • VRF
    VRF(Virtual Routing and Forwarding)虛擬路由轉發表:每個VRF可以理解爲一臺虛擬邏輯路由器,每臺支持VRF的路由器可以創建多個VRF,這臺路由器的路由表是由全局路由表和VRF路由表構成的。

    默認情況下,VRF之間、VRF與主路由器之間是邏輯隔離的,一臺PE路由器分配多個VRF來連接不同的客戶設備,實現同一PE 下的不同客戶網絡信息的隔離需求。

    VRF中的信息包括:IP路由表、標籤轉發表、與VRF綁定的接口以及VRF的管理信息。VRF的管理信息包括RD(Route Distinguisher,路由標識符)、路由過濾策略、成員接口列表等。

  • RD
    RD(route distinguisher路由標識):本地有效,作用是解決地址空間重疊的問題。

RD的格式

TYPE(2字節) Administrator Field Assigned Number Field
0x0002 2字節AS號 4字節分配編號
0x0102 4字節IP地址 2字節分配編號

配置RD

  • 每臺路由器的每個VRF上的RD值都是唯一的
  • 從該VRF上學習到的所有IPv4路由前綴,都會在IPv4路由前綴前插入
  • 該VRF所配置的RD值,從而變成VNv4路由前綴

CE的IPv4路由進入全局的VNv4地址簇時,在32位的IPv4路由前面增加一個8個字節的RD,變成VNv4路由前綴(12字節),即使客戶CE的路由是重疊的,但是可以通過添加唯一的RD ,形成獨一無二的VNv4路由前綴,以解決重疊客戶路由的通告問題。

地址空間重疊

VN是一種私有網絡,不同的VN獨立管理自己的地址範圍,也稱爲地址空間(address space)。不同VN的地址空間可能會在一定範圍內重合,例如,VRF1和VRF2都使用10.110.10.0/24網段地址,這就發生了地址空間的重疊(address spaces overlapping)。

  • RT
    RT(Route Target),RT的作用:將PE上接收到的VNv4前綴通告給正確的CE設備。

RT作爲BGP的擴展community屬性有如下兩種格式,其中type字段爲0x0002或者0x0102時表示RT

TYPE(2字節) Administrator Field Assigned Number Field
0x0002 2字節AS號 4字節分配編號
0x0102 4字節IP地址 2字節分配編號

每個VRF關聯一個或多個VPN Target屬性。有兩類VPN Target屬性:

  • Export Target:本地PE從直接相連CE學到IPv4路由後,轉換爲VN-IPv4路由,併爲這些路由設置Export Target屬性。Export Target屬性作爲BGP的擴展團體屬性隨路由發佈。
  • Import Target:PE收到其它PE發佈的VN-IPv4路由時,檢查其Export Target屬性。當此屬性與PE上某個VRF的Import Target匹配時,PE就把路由加入到該VRF中。

三、MPLS VPN數據的轉發

本部分內容轉載自:CSDN博主「曹世宏的博客」的原創文章
原文鏈接:https://blog.csdn.net/qq_38265137/article/details/80503475

私網標籤的分發

PE通過MP-BGP發佈私網路由給骨幹網的其他相關的PE前,需要爲私網路由分配MPLS標籤(私網標籤)。當數據包在骨幹網傳輸時,攜帶私網標籤。

PE上分配私網標籤的方法有如下兩種:

  • 基於路由的MPLS標籤分配:爲VN路由表的每一條路由分配一個標籤(one label per route)。這種方式的缺點是:當路由數量比較多時,設備入標籤映射表ILM(Incoming Label Map)需要維護的表項也會增多,從而提高了對設備容量的要求。
  • 基於VRF的MPLS標籤分配:爲整個VRF分配一個標籤,該VRF裏的所有路由都共享一個標籤。使用這種分配方法的好處是節約了標籤。

私網路由交叉:

兩臺PE之間通過MP-BGP傳播的路由是VNv4路由。當接收到VNv4路由,PE先進行如下處理:

  • 檢查其下一跳是否可達。如果下一跳不可達,該路由被丟棄。
  • 對於RR發送過來的VNv4路由,如果收到的路由中cluster_list包含自己的cluster_id,則丟棄這條路由。
  • 進行BGP的路由策略過濾,如果不通過,則丟棄該路由。

之後,PE把沒有丟棄的路由與本地的各個VRF的Import Target屬性匹配。VNv4路由與本地VRF的Import VN-Target進行匹配的過程稱爲私網路由交叉

PE上有種特殊的路由,即來自本地CE的屬於不同VN的路由。對於這種路由,如果其下一跳直接可達或可迭代成功,PE也將其與本地的其他VN實例的Import Target屬性匹配,該過程稱爲本地交叉
例如:CE1屬於VRF1,CE2屬於VRF2,且CE1和CE2同時接入PE1。當PE1收到來自CE1的VN1的路由時,也會與VN2對應的VRF的Import Target屬性匹配。

公網隧道迭代:

爲了將私網流量通過公網傳遞到另一端,需要有一條公網隧道承載這個私網流量。因此私網路由交叉完成後,需要根據目的IPv4前綴進行路由迭代,查找合適的隧道(本地交叉的路由除外);只有隧道迭代成功,該路由才被放入對應的VRF路由表。將路由迭代到相應的隧道的過程叫做隧道迭代。

隧道迭代成功後,保留該隧道的標識符(Tunnel ID),供後續轉發報文時使用。Tunnel ID用於唯一標識一條隧道。VPN報文轉發時根據Tunnel ID查找對應的隧道,然後從隧道上發送出去。

私網路由的選擇規則:

經過路由交叉和隧道迭代的路由並不是全部被放入VRF路由表。從本地CE收到的路由和本地交叉路由也不是全部被放入VRF路由表。

對於到同一目的地址的多條路由,如果不進行路由的負載分擔,按如下規則選擇其中的一條:

  • 同時存在直接從CE收到的路由和交叉成功後的同一目的地址路由,則優選從CE收到的路由。
  • 同時存在本地交叉路由和從其他PE接收並交叉成功後的同一目的地址路由,則優選本地交叉路由。
    (本地最優)

對於到同一目的地址的多條路由,如果進行路由的負載分擔,則:

  • 優先選擇從本地CE收到的路由。只有一條從本地CE收到的路由而有多條交叉路由的情況下,也只選擇從本地CE收到的路由。
  • 只在從本地CE收到的路由之間分擔或只在交叉路由之間分擔,不會在本地CE收到的路由和交叉路由之間分擔。
    負載分擔的AS_PATH屬性必須完全相同。

路由發佈(重!):

基本MPLS VPN組網中,VPN路由信息的發佈涉及CE和PE,P設備只維護骨幹網的路由,不需要了解任何VPN路由信息。PE設備一般維護所有VPN路由。

VN路由信息的發佈過程包括三部分:本地CE到入口PE、入口PE到出口PE、出口PE到遠端CE。完成這三部分後,本地CE與遠端CE之間建立可達路由,VN路由信息能夠在骨幹網上發佈。

下面分別對這三部分進行介紹。

  1. 本地CE到入口PE的路由信息交換

    CE與直接相連的PE建立鄰居或對等體關係後,把本站點的IPv4路由發佈給PE。CE與PE之間可以使用靜態路由、RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)、IS-IS(Intermediate System to Intermediate System)或BGP(Border Gateway Protocol)。無論使用哪種路由協議,CE發佈給PE的都是標準的IPv4路由

  2. 入口PE到出口PE的路由信息交換

    1. PE從CE學到VPN路由信息後,存放到VRF中。同時,爲這些標準IPv4路由增加RD,形成VN-IPv4路由。
    2. 入口PE通過MP-BGP的Update報文把VN-IPv4路由發佈給出口PE。Update報文中攜帶Export VPN Target屬性及MPLS標籤。
    3. 出口PE收到VN-IPv4路由後,在下一跳可達的情況下進行路由交叉、隧道迭代和路由優選,決定是否將該路由加入到VRF的路由表。被加入到VPN路由表的路由,本地PE爲其保留如下信息以供後續轉發報文時使用:
      • MP-BGP Update消息中攜帶的MPLS標籤值
      • Tunnel ID
  3. 出口PE到遠端CE的路由信息交換

    遠端CE有多種方式可以從出口PE學習VN路由,包括靜態路由、RIP、OSPF、IS-IS和BGP,與本地CE到入口PE的路由信息交換相同。此處不再贅述。值得注意的是,出口PE發佈給遠端CE的路由是普通IPv4路由。

以下圖爲(PE-CE之間使用BGP,公網隧道爲LSP)爲例,說明將CE2的一條路由發送到CE1的過程。

在這裏插入圖片描述

  1. 在CE2的BGP IPv4單播地址族下引入IGP(Interior Gateway Protocol)路由。
  2. CE2將該路由隨EBGP的Update消息一起發佈給Egress PE。Egress PE從連接CE2的接口收到Update消息,把該路由轉化爲VN IPv4路由,加入對應的VRF路由表。
  3. Egress PE爲該路由分配MPLS標籤,並將標籤和VPN IPv4路由信息加入MP-IBGP的Update消息中的NLRI字段中,Export-RT屬性加入MP-BGP Update消息的擴展團體屬性字段中,將Update消息發送給Ingress PE。
  4. Ingress PE對該路由進行路由交叉。交叉成功則根據路由目的IPv4地址進行隧道迭代,查找合適的隧道。如果迭代成功,則保留該隧道的Tunnel ID和標籤,並將路由加入該VRF路由表。
  5. Ingress PE把該路由通過BGP Update消息發佈給CE1。此時路由是普通IPv4路由
  6. CE1收到該路由後,把該路由加入BGP路由表。通過在IGP中引入BGP路由的方法可使CE1把該路由加入IGP路由表。

MPLS VN的報文轉發(重!):

在基本MPLS VN應用中(不包括跨域的情況),VPN報文轉發採用兩層標籤方式:

  • 第一層(公網)標籤在骨幹網內部進行交換,指示從PE到對端PE的一條LSP。VPN報文利用這層標籤,可以沿LSP到達對端PE
  • 第二層(私網)標籤在從對端PE到達CE時使用,指示報文應被送到哪個Site,或者更具體一些,到達哪一個CE。這樣,對端PE根據內層標籤可以找到轉發報文的接口

以下圖爲例說明MPLS VN報文的轉發過程。下圖是CE1發送報文給CE2的過程。其中,I-L表示內層標籤,O-L表示外層標籤。
在這裏插入圖片描述

  1. CE1發送一個VN報文。
  2. Ingress PE從綁定了VN實例的接口上接收VPN數據包後進行如下操作:
    1. 先根據綁定的VRF的RD查找對應VN的轉發表。
    2. 匹配目的IPv4前綴,查找對應的Tunnel ID。
    3. 將報文打上對應的標籤(I-L),根據Tunnel-ID找到隧道。
    4. 將報文從隧道發送出去。此例的隧道是LSP,則打上公網(外層)MPLS標籤頭(O-L1)。

接着,該報文攜帶兩層MPLS標籤穿越骨幹網。骨幹網的每臺P設備都對該報文進行外層標籤交換。

  1. Egress PE收到該攜帶兩層標籤的報文,交給MPLS協議處理。MPLS協議將去掉外層標籤(此例最後的外層標籤是O-L2,但如果應用了倒數第二跳彈出,則此標籤會在到達Egress PE之前的一跳彈出,Egress PE只能收到帶有內層標籤的報文)。

  2. 此時Egress PE就可以看見內層標籤,發現該標籤處於棧底,將內層標籤剝離。

  3. Egress PE將報文從對應出接口發送給CE2。此時報文是個純IP報文。

這樣,報文就成功地從CE1傳到CE2了。CE2按照普通的IP轉發過程將報文傳送到目的地。

四、常見問題

  1. 如何做到同-臺PE設備的不同客戶CE設備之間的隔離? ——VRF
  2. 如何在PE設備與CE設備之間維護路由信息? ——RT值
  3. 如何在公網.上傳遞客戶私有路由? ——MP-BGP傳遞VPNV4路由實現
  4. 如何容許重疊的客戶私有路由? ——RD值
  5. 如何在公網.上轉發客戶數據(解決路由黑洞)? ——標籤傳遞
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章