路由反射器(Route Reflector)簡介

       在使用BGP路由協議的網絡中,爲保證IBGP對等體之間的連通性,須要在IBGP對等體之間創建全鏈接關係。假設在一個AS內部有n臺路由器,那麼應該創建的IBGP鏈接數就爲n(n-1)/2。當IBGP對等體數目不少時,對網絡資源和CPU資源的消耗都很大。網絡

1、路由反射器的定義ide

       利用路由反射能夠解決這一問題。在一個AS內,其中一臺路由器做爲路由反射器RR(Route Reflector),其它路由器作爲客戶機(Client)。客戶機與路由反射器之間創建IBGP鏈接。路由反射器和它的客戶機組成一個集羣(Cluster)。路由反射器在客戶機之間傳遞(反射)路由信息,而客戶機之間不須要創建BGP鏈接。學習

       既不是反射器也不是客戶機的BGP路由器被稱爲非客戶機(Non-Client)。非客戶機與路由反射器之間,以及全部的非客戶機之間仍然必須創建全鏈接關係。以下圖所示。.net

路由反射器

 

 

 

 

 

 

 

2、路由反射器的工做步驟資源

 

       當RR收到IBGP發來的路由,首先使用BGP選擇路由的策略選擇最佳路由。在公佈學習到的路由信息時,RR按照RFC2796中的規則發佈路由:路由

 

1)從非客戶機IBGP對等體學到的路由,發佈給此RR的全部客戶機。get

2)從客戶機學到的路由,發佈給此RR的全部非客戶機和客戶機(發起此路由的客戶機除外)。it

3)從EBGP對等體學到的路由,發佈給全部的非客戶機和客戶機。class

 

       RR的一個好處就是配置方便,由於只須要在反射器上配置,客戶機不須要知道本身是客戶機。集羣

 

3、Originator_ID

 

       RFC2796定義了Originator_ID屬性和Cluster_List屬性,用於檢測和防止路由環路。

 

       Originator_ID屬性長4字節,是由路由反射器(RR)產生的,攜帶了本地AS內部路由發起者的Router ID。

 

1)當一條路由第一次被RR反射的時候,RR將Originator_ID屬性加入這條路由,標識這條路由的發起路由器。若是一條路由中已經存在了Originator_ID屬性,則RR將不會建立新的Originator_ID。

 

2)當其它BGP Speaker接收到這條路由的時候,將比較收到的Originator_ID和本地的Router ID,若是兩個ID相同,BGP Speaker會忽略掉這條路由,不作處理。

 

Originator_ID屬性保證路由在反射器和客戶機/非客戶機之間的不出現循環。

 

4、Cluster_List

 

       對於AS之間,BGP用於防止環路的主要措施是經過AS_Path屬性記錄途經的AS路徑,帶有本地AS號的路由將被路由器丟棄;對於AS以內,BGP防止路由環路的方法是禁止IBGP對等體發佈從AS內部學來的路由。

 

       路由反射器的實現是基於放寬對「BGP在AS內學到的路由不會在AS中轉發」的要求,即容許IBGP對等體之間發佈從AS內部學來的路由。在這種狀況下,Cluster_List屬性被引入,用於防止AS內部的環路。

 

       Cluster_List由一系列的Cluster_ID組成,描述了一條路由所通過的反射器路徑,這和描述路由通過的As路徑的AS_Path屬性有類似之處。Cluster_List由路由反射器產生。

 

1)當RR在它的客戶機之間或客戶機與非客戶機之間反射路由時,RR會把本地Cluster_ID添加到Cluster_List的前面。若是Cluster_List爲空,RR就建立一個。

 

2)當RR接收到一條更新路由時,RR會檢查Cluster_List。若是Cluster_List中已經有本地Cluster_ID,丟棄該路由;若是沒有本地Cluster_ID,將其加入Cluster_List,而後反射該更新路由。

 

       爲了保證客戶機能夠學習到反射器發來的路由,Cluster_ID不能和客戶機的Router ID相同。若是相同,客戶機會將收到的路由丟棄。Cluster_List只在AS內部傳播,從EBGP對等體收到的含有Cluster_List的路由將被丟棄。

原文連接:http://www.net1980.com/2011/06/14/route-reflector/

相關文章
相關標籤/搜索