MPLS-VPN

這是一個最終架構,需要使用多種路由協定組合,才可以達成這種架構。

Mutil-Protocol Label Switching(MPLS),簡單來說,就是把IP位置轉化成標籤,然後用IP位置與標籤,參照標籤資料庫去傳遞資料。也因為標籤介於Layer 2 header 跟 Layer 3 header之間,因此有人說這是 Layer 2.5 。

關於路由為何要標籤化?這就要講述路由是如何學來的:自己設定、自己連接或是路由協定。一旦路由量一大,中間的路由器就得涵蓋所有邊際路由器(Provider Edge)的路由,才能正常傳遞資料,中間的路由器路由怎麼來?自己設定、自己連接或是路由協定,這使得負擔太大。

而標籤化產生同一規格,自動化將路由轉換成標籤,標籤資訊在同一區域內傳遞,藉此使被以標籤取代路由的資料可以傳到對的邊際路由器,最後,設定簡單。中間的路由器只需要學習區域內的路由器。

不過會面臨到一個問題,那就是客戶透過VPN去串連不同的Site點,跟ISP業者買這個服務。設定的責任便落於ISP身上,因此MPLS-VPN是個解決客戶想跟ISP設備做VPN串聯的方式,客戶端就不需要甚麼設定或買相關設備跟Lisence。

MPLS-VPN可以先拆成兩部分:MPLS、VPN。

MPLS設定很簡單,但是不能解決相同網段的問題,必須得因為不同客戶再加上不同標籤才能區隔。

VPN設定較為困難,因為相同網段出現在路由表上,會選擇AD值較小的,如果沒有區分都共用同一份,會變得很混亂。仔細思考,客戶A應該要有個客戶A的路由表,客戶B也得有個客戶B路由表,最後,自己ISP要有個內部路由表。

為了使路由表要有所區分,就會使用Virtual Routing and Forwarding(vrf),切出個虛擬路由器,這個虛擬路由器只需要兩個,分別是連接客戶Site1跟Site2的那兩顆。客戶sites的路由要怎麼彼此交換?需要有一個傳遞路由的橋樑。

BGP是個適合當中間橋樑的路由協定,因為它的鄰居可以相隔許多台,甚至是穿過Internet。BGP透過Redistribute變成路由的載體,也因為盛載著別的路由協定的關係,所以又稱為Multi-Protocol BGP(MPBGP)。

以下是Topology
第一行,是最基本的架構,中間Router有兩個介面跟SiteA跟B接起。
第二行,中間Router可以藉由MP-BGP跟VRF拆成兩個部分。

CUST_A_SiteA <-> ISP Router(CUST_A) <-> CUST_A_SiteB
SiteA <-> { ISP Router(CUST_A) <-MPBGP-> ISP Router(CUST_A) } <-> SiteB

換一種簡化的示意圖。

SiteA <-> db <-> SiteB
SiteA <-> d ———- b <-> SiteB

因此,要完成MPLS-VPN將會有三大部分要做到:

  1. MPLS
  2. VRF
  3. MPBGP

學習設定範例及說明請參考:Multi-Protocol Label Switching (MPLS) 多協定標籤交換

VRF需要設定:Route Distinguishers(RD)、Route-Target去區分不同的虛擬路由,相同的虛擬路由需要有一樣的設定。

MPBGP要做的,就是把客戶路由協定redistribute到BGP,BGP再redistribute到客戶路由協定,以及把客戶路由傳到兩端點對應的VRF中。

設定順序建議:VRF -> MPLS -> MPBGP , MPLS-VPN是一個大工程,要做好就要穩穩地一步步來。