1. 程式人生 > >MPLS VPN簡單介紹

MPLS VPN簡單介紹

這裡的MPLS VPN,應該是指MPLS L3 VPN

  • VPN:虛擬專用網路。使用者不需要專用的物理線路,而是在公共基礎設施上進行私有網路服務的傳播,從而達到專用網路的功能。
  • L3 VPN:一種VPN實現方式,它構建在L3網路之上,傳輸的是L3packet
  • MPLS L3 VPNL3VPN構建在MPLS網路之上。
  • peer-to-peer模式的實現
  • 控制簡單,成本低,支援IP地址重疊
1 MPLS VPN模型

PE1,PE2,P,一起構成的MPLS 網路,與PE直接相連的是CE

CE(Customer EdgeRouter,使用者網路邊緣路由器)裝置直接與服務提供商網路相連

  • 感知不到
    “VPN”的存在,
  • 主要功能就是將VPN客戶的路由通告給PE,以及從PE學習同一個VPN下其他站點的路由

PEProvider EdgeRouter,網路邊緣路由器)裝置與使用者的CE直接相連,還連線P路由器,

  • 負責VPN業務接入,處理VPN-IPV4路由
  • 使用VRFVPN客戶進行隔離,
  • 通過與客戶裝置CE進行路由協議,以便獲取客戶路由,並將路由生成VPNv4字首放入MPLS VPN骨幹網傳遞到對端PE

PProvider Router骨幹網核心路由器):與PE或其他的P相連

  • 負責快速轉發資料。
  • 不知道VPN客戶網路,以及客戶的路由。只負責在骨幹網內運載標籤資料

PE之間,是通過

MPLSTunnelLSP)通訊的。是通過MP-BGP協議傳遞路由資訊

CE-PE之間,是兩個路由器之間普通的交流,可以是IGP,如:OSPFEIGRP,可以是BGP,也可以配置靜態路由。

以下對概念的講解是在此模型的基礎上的

2 基本概念:

a,VRF(Virtual Router Forwarding)

MPLS VPN不同於其他VPN,有一個很大的特點是,支援不同VPN中IP地址的重疊,

PE1 是連著VPNAVPNB ,且CE1CE3 的IP地址相同都是10.0.0.1,那麼目的地是10.0.0.1的網路流量到達PE1PE1怎麼區分該網路流量轉發CE 1還是CE3呢?

VRF

PE路由器上每一個VPN都有一個VRF每一個VRF,可看作是虛擬的路由器,包括:

  • 獨立的路由表,包括獨立的地址空間
  • 組歸屬於這個VRF的介面的集合,
  • 組只用於本VRF的路由協議

因此PE1對於VPNA和VPNB都分別對應一個VRF,到達PE1的網路流量只需要先決定到了那個VRF裡,到了每個VRF裡後,IP地址為10.0.0.1就只有一個了,就能知道是轉發到CE1還是CE3了

MP-BGP(MultiProtocol-BGP)

  • BGP-4的多協議擴充套件,原本的BGP協議只能管理IPV4的資訊,這個能支援如ipv6這樣的其他協議,本質還是一個BGP。
  • 在MPLSL3 VPN的場景下,本質上就是一個iBGP
  • MP-BGP session建立在PE1和PE2之間。
  • PE2通過這個MP-BGPsession將CE4的路由傳遞給PE1。

這裡有兩個問題?

1.PE1和PE2之間就一個MP-BGP session,VPNA和VPNB需要通過這個session來傳遞各自的路由。如果VPNA和VPNB的路由的目的地址是一樣的(像上面提到過的那樣),那session的對端怎麼區分相同的地址? 2.就個BGPsession,對端的PE怎麼知道傳遞過來的路由是來自哪個VPN,又要寫入到自己的哪個VRF table中 c RDRoute-Distinguisher)

為解決第一問題:MP-BGP協議專門為MPLS L3 VPN指定了VPNv4字首。那麼VPNv4是什麼?


VPNv4字首有12位元組(96bits)就是在4位元組的IPv4地址之前,增加了8個位元組的識別符號,增加的8個位元組叫做RD(RouteDistinguisher)。格式就是上面那樣。

RDRoute-Distinguisher)

格式:Type=0,AdministratorSubfield=iBGP AS number,Assigned Number Subfield=每個VPN唯一的編號。這是比價常用的

            Type=0,AdministratorSubfield=IP-Address,Assigned Number Subfield=每個VPN唯一的編號。

功能:32bitsIPv4字首一起構成96bitsVPNv4字首

不同的VPN使用者,存在相同的IPv4地址空間,可通過設定不同的RD值,來保證字首的唯一性

本質:就是一個數字,不包含了實際的資訊,區分相同IPv4字首的路由,保證BGP的程序不會認為這些路由相同

對於第一個問題,10.0.0.1這個路由資訊,若想傳到VPNA,就IP前加VPNA對應的RD,若想傳到VPNB,就IP前加VPNB對應的RD,這樣地址就可以在MP-BGP session中區別出來了

VPNARD1:1IPv410.0.0.1/24     VPNv4 1:1:10.0.0.1/24

VPNB: RD2:2 IPv410.0.0.1/24     VPNv4 2:2:10.0.0.1/24

RTRoute Target

本質每個VRF表達自己的路由輸出和輸出方式,主要用於控制VPN路由的釋出和安裝策略

屬性:importexport

           前者import屬性表示我需要的路由屬性,後者export屬性表示我發出的路由的屬性

            當PE釋出路由時,將使用路由所屬VRFRT export規則,直接傳送給其他的PE裝置

            對端PE接收路由時,首先接收所有的路由,並根據每個VRF配置的RTimport規則進行檢查,如果與路由中的RT屬性match,則將該路由加入到相應的VRF

CE1: 我發的路由 RT101:101,我也只接收 RT100:100

CE2:我發的路由RT100:100,我也只接收RT101:101

CE3:我發的路由 RT201:201,我也只接收 RT200:200

CE4:我發的路由 RT200:200,我也只接收 RT201:201

CE1發出的路由只能由CE2接收,CE2發出的路由只能由CE1接收,這樣CE1和CE2都在一個VPN裡,實現互訪

同理CE3和CE4也在一個VPN裡,實現互訪

RTRD有著同樣的結構,為什麼不用RD來區分VPN(即用RD實現RT功能)?

  • 分開定義有分開定義的靈活性。
  • 當一條路由需要傳遞到多個VPN時,如果沒有RT,就需要建立多條BGP資料,每條有著不同的RD而有RT的話,只需要建立一條BGP資料,帶上多個RT即可。從資料的長短來看,後者更有優勢。

要想實現CE3pingCE4,那麼控制平面的過程:

CE4--PE2

PE內部對每一個VPN,都會有一個獨立的路由交換程序與對應的CE相連。這裡有2VPN連線PE,那就會有2個獨立的路由交換程序,分別與CE交換各自的路由。CE4PE2兩個路由器之間普通的交流,可以是IGP例如:OSPFEIGRP,也可以是BGP,可以配置靜態路由。這樣CE4的路由就可以成功傳遞到了PE2中的VPNBVRF tableVRFB當中。

PE2--PE1

PE2 是通過MP-BGP sessionCE4的路由轉發給PE1

PE2中對應VPNB的VRFB Virtual router包含了與VPN相關的路由器變數,就是指RTRD

MP-BGP程序會自動的取出RDRT,在IP地址前加上RD生成VPNv4,在後面加上RT(export 屬性),進而生成相應的MP-BGP資料。

同時,PE2還會生成為PE1,生成一個MPLSLabel,用於指定是哪個VPN

PE2把這MP-BGP資料送到PE1之後,PE1首先會取出RT,對比本地的VRFsImport Targets,記錄Import TargetsBGPRT有交集的VRFs

如果沒有匹配的VRFs,丟棄MP-BGP資料。

這裡VRFBImport Targets匹配,再計算得出IPv4格式的next-hopIPv4格式的prefix,這樣就得到了IPv4格式的路由。再分別寫入相應的VRF中,這裡是寫入PE1的VRFB對應的虛擬轉發表中。

至於MPLSLabel,隨著上面的IPv4格式路由繫結,一起寫入到這個VRF當中。

PE2終於有了CE1的路由資訊,並且多個VPN可以共用這個路由傳輸通道且相互不影響。

PE1--CE3
通過PE1中的Virtual router和對應的路由交換程序,CE3的路由最終到達了CE4

整個控制平面的過程就結束了

CE3 ping CE4,資料轉發的過程:

1 CE3因為從PE1學習到了CE4網路的路由,因此,對應的路由下一跳是PE1。CE1直接將目的地址是CE2的資料包發往PE1。這就是一個普通的路由轉發。

2 資料包到達PE1,準確的說是到達了PE1中對應的VPNB的VRFB的路由表中。因為之前是從PE2學習的CE2網路的路由,因此,對應的路由下一跳是PE2,此時會將資料包發往PE2地址。PE2通過MP-BGP不是給PE1分配了一個標籤,也就是一個內部標籤,標識不同的VPN,這樣在VRF內部,IP 資料包就變成了MPLS資料包。

在MPLS網路內部,PE1到PE2並未直接相連,所以,將資料包傳遞到PE2 就和之前的資料包傳遞過程時一樣的

PE2 再將VPN標籤去掉,找到對應的VRF轉發表,將IP包轉發給對應CE2

由於PE1並未與PE2直接相連,雖然VRF 會將資料包發往PE1,但是資料包不能直接到達目的地。雖然PE1未與PE2直接相連,但是在建立MPLSTunnel的時候,PE1已經把自己的路由