apache nginx wordpress php Ubuntu mysql google 程序员 linux 微软 java 开源 centos 云计算 Python Windows Android 编程 shell Firefox

BGP route reflection理論知識

1.簡介

目前在因特網中,BGP部署被配置成在一個單一自治系統中的所有BGP報告者必須全互連,並且任意外部的路由信息必須被重新傳輸到在此自治系統內的所有的其他的路由器。對於在一個自治系統中的n個BGP報告者而言,需要維護n*(n-1)/2個獨立的IBGP對話。因為當前許多因特網網絡通常存在大量的IBGP報告者,每個報告者間相互交換大容量的路由信息,所以“全互連”的要求明顯不好調節。

本文檔闡述了另一種用於緩解“全互連”的可選方案叫做“路由反射”。這個方法允許一個BGP報告者(叫做“路由反射器”)廣播IBGP學得的路由給某些IBGP對等方。本文檔闡述了對通常理解的IBGP概念的一個改變,並且增加了兩個新的可選的過渡BGP屬性來防止在路由更新中的環回。

本文檔是RF1966的一個修訂版,並且它包括了基於路由反射的部署經驗的編輯修改、闡明和校正。

2.設計標準

  路由反射被設計為滿足下列標準:

  。簡單化

  任何的改變必須既易於理解又易於配置。

  。容易過渡

  必須在不需改變拓撲或自治系統的情況下,能從一個全互連配置過渡到路由反射。這是一項效果不好的對[3]中建議的技術的管理開支。

  。兼容性

  必須在不丟失任何BGP路由信息的情況下,可以使得不兼容RR的IBGP對等繼續成為原始自治系統或域的一部分。

  這些標準受到有許多外部連接的一個非常大和拓撲復雜的網絡的操作經驗的驅動。

3.路由反射

路由反射的基本概念非常簡單。讓我們考慮下面圖1中敘述的簡單例子。

 

                                    图1: 全互连IBGP

在ASX自治系統中有三個IBGP報告者(路由器RTR-A,RTR-B,RTR-C)。根據現存的BGP模型,如果A收到一個外部路由且它被選為最佳路徑,它必須廣播此路由給B、C。B、C(作為IBGP報告者)將不再廣播此IBGP學得的路由給其它IBGP報告者。

如果此規則被放寬,C被允許廣播IBGP學得的路由給IBGP對等,那麽它將可以重播(或反射)這條從A學得得路由給B,反之亦然。這就消除了在A、B間存在IBGP對話得必要,如下圖2所示。

 

 

                                       图2: 路由反射IBGP

      

    這個路由反射方案就是基於這個基本原理。

4.術語和概念

我們使用術語“路由反射”來敘述一個IBGP報告者廣播一條IBGP學得得路由給另一個IBGP對等的過程。這樣的一個IBGP報告者被稱為一個“路由反射器“,並且這樣一條路由被稱為一個被反射的路由。

一個路由反射器的內部對等可以被分為兩個組:

1)客戶對等

2)非客戶對等

一個路由反射器不僅反射這些組間的路由,還可以反射客戶對等間的路由。一個路由反射器和它的客戶對等一起構成一個簇。非客戶對等必須全互連而客戶對等則不必。圖3畫出的一個簡例概括了使用上述註釋的術語的基本路由反射器的構件。

 

 

                        Figure 3: 路由反射器构件

5.操作

    當一個路由反射器收到一條路由時,它基於它的路徑選擇規則來選擇最佳路徑。在選擇了最佳路徑後,它必須根據它接收的最佳路徑所來自的對等的類型來進行下列操作:

1)從一個非客戶對等來的路由反射到全部的客戶對等。

2)從一個客戶對等來的路由既反射到全部的非客戶對等,也反射到客戶對等。(從而客戶對等不需要全互連)。

    一個自治系統可以有許多個路由反射器。一個路由反射器將其他的路由反射器作為任意其他的BGP報告者對待。一個路由反射器也可以被配置為其他路由反射器的一個客戶組或非客戶組。

  在一個簡單配置中,主幹可以被分為許多個簇。每個路由反射器可以被配置作為其他路由反射器的非客戶對等(那麽全部路由反射器將是全互連)。客戶僅和它們同一簇的路由反射器維持IBGP對話。由於路由反射,全部的BGP報告者將收到被反射的路由信息。

  在一個自治系統中可能存在不理解路由反射器概念的BGP報告者(讓我們稱之為傳統的BGP報告者)。路由反射器方案允許這些傳統的BGP報告者共存。傳統的BGP報告者可以是非客戶組的成員也可以是客戶組的成員。這使得易於逐漸從當前IBGP模式過渡到路由反射模式。可以通過將單一一個路由器配置為指定的路由反射器、並且配置其他的路由反射器和它們的客戶為普通的IBGP對等來開始產生一個簇。另外的簇也可以逐漸產生。

6.冗余的路由反射器

    通常一個簇的客戶只有單一一個路由反射器。在次情況下,這個簇將由這個路由反射器的ROUTER_ID來標識。但是,這意味著單點故障將全簇故障,因此同一簇中需要多個路由反射器。在同一簇中的全部路由反射器必須用一個4字節的CLUSTER_ID來配置,從而一個路由反射器可以辨認出來自同一簇的其他路由反射器的路由。

7.避免路由信息環回

    當一條路由被反射時,它可能因為不正確的配置導致路由的再傳播環回。路由反射方法定義了下列屬性來檢測和避免路由信息環回:

ORIGINATOR_ID

  ORIGINATOR_ID是一個新的、可選的、非過渡性的類型碼為9的BGP屬性。這個屬性有4字節長,將由一個路由反射器在反射一條路由時產生。這個屬性將搭載本地自治系統中的路由的原始方的ROUTER_ID。如果一個ORIGINATOR_ID已經存在,BGP報告者將不能產生一個ORIGINATOR_ID屬性。可以識別這個屬性的路由器將忽略所接收的一條路由的ROUTER_ID,不將它作為ORIGINATOR_ID。

CLUSTER_LIST

  CLUSTER_LIST是一個新的、可選的、非過渡性的類型碼為10的BGP屬性。這是一個CLUSTER_ID值的序列表,表示這條路由通過的反射路徑。它被如下編碼:

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Attr. Flags |Attr. type Code| Length | value ...

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

此處Length代表字節數。

  當一個路由反射器反射一條路由時,它必須預先附加本地的CLUSTER_ID 給CLUSTER_LIST。如CLUSTER_LIST是空的,路由反射器就必須產生一個新的CLUSTER_LIST。使用這個屬性路由反射器就可以辨認出因為錯誤配置被環回到同一簇

的路由信息。如果在CLUSTER_LIST中發現本地的CLUSTER_ID,將不再傳播此路由信息。

8.實施方面的考慮

  必須註意的是,要確保當在路由反射器和客戶及非客戶對等之間交換網絡路由信息時,不是上述定義的BGP路徑屬性能通過配置來被修改。這些修改可能潛在的導致路由環回。

此外,當一個路由反射器反射路由時,它將不能修改下列的路徑屬性:NEXT_HOP,AS_PATH, LOCAL_PREF, MED。它們的修改可能潛在的導致路由環回。

9.配置和執行方面的考慮

  BGP協議沒有為一個客戶提供用於將自己動態的標識為一個路由反射器的客戶的方法。要達到這個目的的最簡單的方法是手工配置。

路由反射方法可解決規模問題的一個關鍵是路由反射器總結了路由信息並且僅反射它的最佳路徑。

MED和IGP權值都可以影響BGP路由選擇。因為MED通常不可以比較而且IGP權值因每個路由器的不同而不同。對於某個路由反射拓撲,路由反射方法進行路由選擇的結果可能和完全IBGP網狀連接方法得到的不同。為了保證它們相同,需要保證路由反射器從不強制基於由於它們的客戶的IGP權值不同而顯著不同的IGP權值、或是基於不可比較的MED來執行BGP路由選擇。前者可以通過配置簇內IGP權值而非簇間IGP權值來得到。後者則可以通過:

  。 在一個邊界路由器上設置一個路由的本地選擇權來反射MED值。

  。 或者確保當此AS_PATH長度值被用作一個路由選擇標準時,來自不同的自治

    系統的AS_PATH長度值不同。

  。 或者通過基於這個路由反射器所用於決定最佳路徑的策略來配置團體。

  有人會爭辯說最後一個要求太嚴了,在一些情況下不實際。有人會進一步爭辯說既然不會有路由環回,那麽就不必強迫路由反射的路由選擇結果和完全IBGP網狀連接方法相同。

  為了防止路由環回和保持一致路由的目的,在設計一個路由反射拓撲時必須仔細考慮該網絡的拓撲。通常,當對於一個前綴存在條路徑時,此路由反射拓撲應該和這個網絡拓撲相一致。一個常用的方法就是基於POP反射,每個POP在POP中維護它自己的路由反射器所服務的客戶,並且全部路由反射器時全互連的。此外,為了優化POP內路由,在每個POP中的反射器的客戶常常全互連,並且POP內IGP權值被配置優於POP間IGP權值。

10.安全方面的考慮

這裏對BGP屬性的擴展不改變現存的IBGP內在的基本安全結論。

延伸阅读

    评论