(紅茶三杯http://weibo.com/vinsoney版權全部,轉載請註明出處)html
1、MPLS ×××模型網絡
1. PE(Provider edge)運營商邊界設備ide
運營商邊界設備,與客戶邊界設備相鏈接。運行MPLS。同時在PE上,使用VRF對×××客戶進行隔離。oop
2. P(Provider)運營商設備學習
運營商設備不直接與客戶設備相鏈接。運行MPLS。P設備每每並不知道×××客戶網絡、以及客戶的路由。它只負責在Backbone內運載標籤數據。ui
3. CE(customer edge )客戶邊界設備url
客戶網絡中,與PE直連的設備,主要的功能是將×××客戶的路由通告給PE,以及從PE學習同一個×××下其餘站點的路由spa
2、VRF翻譯
MPLS ×××一個很是吸引人的地方,就是可讓不一樣客戶的路由及數據穿越運營商的MPLS ××× Backbone,並且這些路由和數據又是相互隔離和獨立的,即便不一樣的客戶,擁有相同的IPv4地址空間也沒關係。router
那麼做爲這些客戶路由進入MPLS Backbone入口的設備 -- PE,就顯得很是重要了。在PE上有個很是重要的概念—VRF(嚴格的說,VRF的做用如今已經擴展了,咱們這裏重點討論在MPLS ××× PE中的運用)。
VRF:Virtual Routing and Forwarding,翻譯成虛擬路由及轉發,它是一種×××路由和轉發實例。一臺PE路由器,因爲可能同時鏈接了多個×××用戶,這些用戶(的路由)彼此之間須要相互隔離,那麼這時候就用到了VRF,PE路由器上每個×××都有一個VRF。PE路由器除了維護全局IP路由表以外,還爲每一個VRF維護一張獨立的IP路由表,這張路由表稱爲VRF路由表。要注意的是全局IP路由表,以及VRF路由表都是相互獨立或者說相互隔離的。
由於每個×××都有一張獨立的VRF路由表,因此PE路由器上每個×××也會有一張獨立的CEF表來轉發這些報文,這就是VRF CEF表。
一旦在PE路由器上建立了一個VRF,咱們就能夠將特定的接口(物理或邏輯的)放入這個VRF,那麼這個接口將再也不屬於全局IP路由表或其餘任何VRF,只爲該VRF服務。
3、RD
因爲×××前綴是經過MP-BGP在MPLS ×××網絡中擴散,那麼可能,同一時間,MPLS ×××網絡承載着多個客戶的×××前綴,甚至有多是相同的IPv4地址空間,那麼怎麼作到客戶之間地址空間的惟一性呢?就須要用到RD值了。RD值在VRF中進行配置。
RD(route distinguisher)64bits,用於在MP-BGP運載VRF前綴時,確保這些前綴的惟一性。可是RD並不會說明該前綴屬於哪個VRF(須要搭配RT),RD的功能並非×××標示符,由於在一些複雜的×××環境中,可能一個×××存在多個RD。RD的最重要的兩個功能:
與32bits的Ipv4前綴一塊兒構成96bits的×××v4前綴;
若是不一樣的×××客戶,存在相同的IPv4地址空間,那麼能夠經過設置不一樣的RD值從而保證前綴的惟一性。
這個64比特的值能夠有兩種表現形式:AS:nn或者IP-address:nn。其中nn表明數字。最經常使用的格式是AS:nn,其中AS表明AS號。一般AS是IANA分配給服務提供商的AS號,nn是服務提供商分配給VRF的惟一號碼。
產生的×××v4前綴經過MP-BGP在PE路由器之間被傳遞。
(紅茶三杯http://weibo.com/vinsoney版權全部,轉載請註明出處)
4、RT
Route Targets,這玩意就是用來區分customer的。是BGP community 的擴展屬性,在VRF中進行配置。它跟在×××v4前綴後面被一塊兒傳遞。一條路由能夠附加多個RT值。
Export RTs
經過在vrf中定義export RT值,將使得輸出的×××v4路由攜帶上該RT值一塊兒傳遞 – 以BGP擴展community的方式。注意這些×××v4路由,是由×××客戶的IPv4路由導入VRF後,加上VRF中配置的RD值所造成的。
Import RTs
PE會從其餘MP-BGP對等體的PE那收到×××v4的前綴,這些前綴都是攜帶RT值的。默認狀況下,PE是不會將這些×××v4路由以IPv4的形式裝載到VRF路由表裏,除非在本地的VRF中,配置import RTs,那麼若是import RTs與收到的×××v4前綴中的RT匹配的話,這些×××v4前綴纔會被以IPv4的形式裝載到相應的VRF路由表裏,至關於在這裏RT起到一個前綴過濾或者識別的做用,這個功能在許多場景中很是有用。
×××v4路由可能攜帶不止一個RT值,只要有一個匹配import RT便可導入到VRF路由表。
5、PE設備邏輯詳解
PE設備是MPLS ×××部署很是關鍵的一個環節。上面這張圖就是一個典型的PE路由器的邏輯分解圖。藍色的這個框框表明的就是一臺PE路由器。咱們看到這個PE設備建立了兩個VRF,VRF-A對應的是客戶A,VRF-B對應的是客戶B。(紅茶三杯http://weibo.com/vinsoney版權全部,轉載請註明出處)
一旦建立了兩個VRF,咱們就能夠將特定的接口放入特定的VRF,那麼這些接口將只爲所屬的VRF服務。上圖中的PE路由器實際上就有了三張路由表,分別是兩張VRF路由表,以及一張全局IP路由表。
一個PE路由器鏈接不一樣的客戶Customer,使用相似虛擬路由器的概念,來進行邏輯上的進行區分,看到上圖中的virtual router for A和virtual router for B了麼。這些客戶甚至有可能使用相同的地址空間,那麼咱們在一臺PE上,使用多個virtual路由表,將客戶及客戶的路由進行邏輯上的隔離。這裏virtual路由表是相對於咱們的全局IP路由表的概念。從global接口上學習到的路由,放入全局IP路由表,從VRF接口上學習到的路由,放入相應的VRF路由表。不一樣的virtual路由表徹底隔離。
再來看仔細一點,上面這個PE,咱們建立了VRF ABC,那麼同時一併出現的還有VRF ABC的路由表以及VRF ABC的CEF表。咱們將PE上與CE直連的接口放入VRF ABC。接下去來分解一下,看看這裏頭有什麼東西:
首先PE上,運行一個Core的IGP協議,這裏用的是OSPF 100,這個OSPF進程是爲全局IP路由表貢獻路由的。OSPF 100與運營商骨幹網內的其餘設備造成OSPF鄰居關係而且交互骨幹網Core內的路由,交互這些路由的目的是,能夠爲後面的MP-BGP的創建服務,由於MP-BGP每每是經過PE之間的Loopback來建,MP-BGP鄰居關係創建須要這些IGP路由。同時後續的LDP也依賴這個Core的IGP協議。
接着PE上運行一個MP-BGP,MP-BGP至少有兩個address-family也就是地址族,一個是address-family ***v4,用於和對端的PE交互×××v4前綴。另外一個地址族是address-family ipv4 vrf ABC,注意這個地址族是和vrf ABC關聯的,用於獲取×××客戶的路由,這個圖中就是customer-A。
接着PE上跑一個PE-CE的路由協議,例如靜態、RIP、EIGRP、BGP等等,目的是爲了從×××客戶那,也就是CE設備那學習到×××客戶的路由。注意因爲鏈接CE的接口被放入了VRF ABC,所以經過這個接口學習到的路由,被放入了VRF ABC的路由表。放入了VRF ABC路由表以後呢?接下來就要將路由引入到MP-BGP中,若是PE-CE之間運行的是路由協議是非BGP,那麼就須要作路由重發布,將客戶路由重發布進address-family ipv4 vrf ABC這個地址族下面,而若是PE-CE之間運行的已是BGP了,那麼路由固然就直接進入MP-BGP了。
如今MP-BGP已經有了×××客戶的路由,如今要將這些IPv4的路由前綴,變成×××v4的路由前綴,經過已經創建起來的×××v4的鄰接關係傳遞給對端PE。因爲這些路由是屬於VRF ABC的,而VRF是定義了RD、RT值的,那麼這些值在這裏就派上用場了。32bits的IPv4路由前綴,搭配上64bits的RD值,就造成了96bits的×××v4的前綴。另外,RT值跟隨着這個×××V4前綴,被MP-BGP更新給了對端PE。