mp-bgp在設計的時候為什麼不能通過rd來區分不同的實例(vrf)?對端pe1收到pe2的路由時,查看vpnv4的前綴不就是rd了嗎?把rd定義成vrf的id,不就可以省略掉rt的嗎?設計者是如何考慮的?為什麼要設計成現在的樣子(通過rd來區分傳遞出去的路由,通過rt來區分不同的實例vrf.


運營商的PE(運營商邊界)路由器,與客戶的CE(客戶邊界)路由器對連,並建立BGP鄰居關係,通過address-family ipv4 與CE交換 ipv4 路由,這些路由通常為私有路由,32位長度。

PE將客戶路由放在哪裡呢?

放在該客戶專用VIP包房裡,包房的名字叫VRF1,客戶的路由條目依然是32位的原始模樣,比如10.1.1.0/24,假設該PE的名字是PE1。

PE1如何將10.1.1.0/24告訴其它的PEn?

構思是這樣的,每一個PE與路由反射器RR建立iBGP鄰居關係,RR相當於謠言散播中心,從某一臺PE聽到的謠言(路由)會無條件散播給其它所有PEn。

通過以上學習、交換、散播的步驟,所有PE將同步用戶的路由,通俗地說,就是每個PE都學習到10.1.1.0/24這條路由。

問題來了,PE1 上有成百上千的VIP客戶,客戶們都使用10.1.1.0/24的路由,本地可以使用VIP包間將他們隔離,但是在傳輸給RR的路上如何區分這一個個10.1.1.0/24?

很好辦,只要讓客戶的10.1.1.0穿上不同顏色的馬甲(RD),馬甲的長度為64位,附著在客戶路由上,披上馬甲的10.1.1.0長度為96位,有一個全新的名字,VPNv4。

由於馬甲RD在運營商範圍內是唯一的、不會衝突,所以VPNv4路由條目是全局唯一:

12641:1000.10.1.1.0

這樣就可以保證在傳輸過程中不會互相混淆。

但是,還需要將客戶的馬甲上印刷一個logo(export Route Target)每一個客戶logo是唯一的。

PE們從RR處(謠言集散中心)一股腦把所有的VPNv4路由學習到本地,需要將不同的客戶的路由放在專屬的VIP包間。問題來了,是根據馬甲顏色還是客戶的logo來分配VIP包間呢?

客戶logo,這樣最合理。因為有的客戶比較叼,為了自己的便利,經常提出需求,希望自己可以使用多個顏色的馬甲,有同學會很好奇,為何有如此變態需求?

客戶的路由10.1.1.0/24,如果在本地被PE1、PE2分發給RR,如果披上不同顏色(RD),就會呈現為2條不同的VPNv4路由,其他PEn就會有2條路由,一旦其中一條路由消失,立馬可以切換到備用路由。

如果只使用一個顏色的RD,RR只會反射一條最佳路由,其他PEn只會有一條路由,一旦路由消失,需要RR檢測到路由消失(延遲大),然後再把原來的次優路由反射到PEn,這種收斂速度明顯要慢很多。

PEn們將特定logo VPNv4路由放入本地的VIP包間,其實潛臺詞是滿足(import Route Target)才會進入包間,對嗎?

馬甲還有用嗎?

沒有用了,需要脫掉馬甲,變成其原始的樣子:10.1.1.0/24,又成為了IPv4路由。

問題又來了,VRF完全隔離不同客戶,客戶間如果希望可以交換一些路由條目,如何做到?

只需要在定義VRF包間時,通過「import Route Target」準許別的客戶logo也進入自己的VIP包間不就可以了嗎?

對方也允許貴司的logo 進入他們的VIP包間,這樣雙向的路由交換完畢,就可以通信了。

問題的關鍵

RD和客戶不是一一對應關係,一個客戶可能有多個RD。

RT是公司logo,和公司是一一對應關係。

歡迎來公眾號看更多文章:https://mp.weixin.qq.com/s/47KHsTCiol4srlW0FKYYeg


要分兩部分來看.第一,vpnv4路由傳播部分,需要一個標識來區分不同客戶的相同前綴.如果用RT行不行呢?不行,因為RT是屬性,攜帶不同RT的路由優選後還是隻剩一條,只能加上RD形成不同的NLRI條目;第二,客戶路由導入部分,需要一個標識來表示vrf對路由的"喜好",通過路由策略形成各種vpn拓撲,那麼這個標識必須能靈活的添加,移除,乃至添加多個,符合這個要求沒有比BGP路由屬性更合適的了.


推薦閱讀:
查看原文 >>
相關文章