路由反射器(Route Reflector)簡介


關鍵字:Reflector 客戶機 反射器 路由技術  路由器

  在使用BGP路由協議的網絡中,為保證IBGP對等體之間的連通性,需要在IBGP對等體之間建立全連接關系。假設在一個AS內部有n台路由器,那么應該建立的IBGP連接數就為n(n-1)/2.當IBGP對等體數目很多時,對網絡資源和CPU資源的消耗都很大。

  一、路由反射器的定義

  利用路由反射可以解決這一問題。在一個AS內,其中一台路由器作為路由反射器RR(Route Reflector),其它路由器做為客戶機(Client)。客戶機與路由反射器之間建立IBGP連接。路由反射器和它的客戶機組成一個集群(Cluster)。路由反射器在客戶機之間傳遞(反射)路由信息,而客戶機之間不需要建立BGP連接。

  既不是反射器也不是客戶機的BGP路由器被稱為非客戶機(Non-Client)。非客戶機與路由反射器之間,以及所有的非客戶機之間仍然必須建立全連接關系。如下圖所示。

  二、路由反射器的工作步驟

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

  1)從非客戶機IBGP對等體學到的路由,發布給此RR的所有客戶機。

  2)從客戶機學到的路由,發布給此RR的所有非客戶機和客戶機(發起此路由的客戶機除外)。

  3)從EBGP對等體學到的路由,發布給所有的非客戶機和客戶機。

  RR的一個好處就是配置方便,因為只需要在反射器上配置,客戶機不需要知道自己是客戶機。

  三、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屬性保證路由在反射器和客戶機/非客戶機之間的不出現循環。

  四、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的路由將被丟棄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM