BGP知識點總結

BGP工作機制:BGP基於TCP協議。

1. BGP鄰居剛建立時,發送整個BGP路由表交換路由信息,之後為了更新路由表只交換更新消息(update message)。

1. 系統在運行過程中,通過接收和發送keepalive消息來檢測相互之間的連接是否正常的。

2. 一般情況下一條路由由自治系統內部的某種內部路由協議發現和計算產生,由自治系統邊界路由器(ASBR)通過EBGP連接傳播到其它自治系統中。

3. 路由在傳播過程中可能會經過若干個自治系統,這些自治系統稱為過渡自治系統(如:AS5)。若這個自治系統有多個邊界路由器,這些路由器之間運行IBGP來交換路由信息。另外一種自治系統稱為Stub AS(如:AS1),其內部只有一個ASBR通過EBGP連接外部,同外部其他AS的通信要靠過渡自治系統來轉接。

注:啟用BGP後,路由器會建立BGP路由表(即從鄰居或自己的BGP協議那裡學到路由表項);但實際用於轉發的路由表,需要從各種渠道學習路由協議進行優選,確定最優的用以指導報文轉發。

BGP 鄰居的建立需要能夠使用179端口建立TCP會話,並且能夠正確交換Open報文

一些關於BGP的原則:

1,BGP協議只能看到用戶建立TCP連接的peer地址,(一般是loopback地址)。而到該loopback地址的真實下一跳,一般是通過IGP協議迭代出來的。

2,如果BGP得到的一條路由的Original nexthop不可達,或者通過IGP無法顯式的迭代出下一跳Relay Nexthop,則該路由會被標記為非valid

3,IGP協議一般根據LSDB計算出路由信息來,而BGP無法自己計算,BGP只能將IGP計算出來的或者說是大路由表中的路由通過BGP發佈出去:

a)自己進行BGP發佈,自己的大路由表中看到該路由從其它協議學到,此時BGP路由表中是valid,且best的

b)接收到鄰居BGP發佈過來的,首先對接收的多條BGP路由進行比較,選出best的,然後再和其它協議學到的路由比較,如果BGP優先,則會向鄰居傳遞,不優先就不傳遞

BGP消息中的角色:

Speaker:發送BGP消息的路由器稱為BGP發言者(Speaker),它接收或產生新的路由信息,併發布(Advertise)給其它BGP Speaker。當BGP Speaker收到來自其它自治系統的新路由時,如果該路由比當前已知路由更優、或者當前還沒有該路由,它就把這條路由發佈給自治系統內所有其它BGP Speaker。

Peer:相互交換消息的BGP Speaker之間互稱對等體(Peer),若干相關的對等體可以構成對等體組(Peer Group)。

BGP通告路由的方法:

BGP採用發送路由增量(Incremental)的方法,完成全部路由信息的通告和維護:

初始化時發送所有的路由給BGP對等體(發送路由協議的路由器稱為BGPspeaker),同時在本地保存了已經發送給BGP對等體的路由信息。(然後依靠週期性keepalive報文校驗TCP的連通性)

當本地的BGP收到了一條新路由時(如通過IGP注入了新路由或加入了新的靜態路由),與保存的已發送信息進行比較:

a)如未發送過,則發送,如已發送過則與已經發送的路由進行比較;

b)如新路由花費更小,則發送此新路由,同時更新已發送信息,反之則不發送。當本地BGP發現一條路由失效時(如對應端口失效),如此路由已發送過,則向BGP對等體發送一個撤消路由消息。路由撤銷只能依靠notification通知撤除,而notification靠TCP協議來保證可靠性。

BGP路由更新使用TCP協議,端口號為179。BGP發送或接收路由的單位為整個AS系統。

4種報文及6種狀態機:

HELLO---BGP對等體間通過發送OPEN報文來交換各自的版本、自治系統號、保持時間、BGP標識符等信息,進行協商(用來建立BGP鄰居)。

UPDATE---UPDATE報文攜帶的是路由更新信息。其中包括撤銷路由信息和可達路由信息及其路徑屬性。

NOTIFICATION---當BGP檢測到差錯(連接中斷、協商出錯、報文差錯等)時,發送NOTIFICATION 報文,關閉同對等體的連接。

KEEPALIVE---KEEPALIVE報文在BGP對等體間週期地發送,以確保連接保持有效。

Idle(空閒):Idle是BGP連接的第一個狀態,在空閒狀態,BGP在等待一個啟動事件,啟動事件出現以後,BGP初始化資源,復位連接重試計時器(Connect-Retry),發起一條TCP連接,同時轉入Connect(連接)狀態。

Connect(連接):在Connect 狀態,BGP發起第一個TCP連接,如果 連接重試計時器(Connect-Retry)超時,就重新發起TCP連接,並繼續保持在Connect 狀態,如果TCP 連接成功,就轉入OpenSent 狀態,如果TCP 連接失敗,就轉入Active 狀態。

Active(活躍):在Active狀態,BGP總是在試圖建立TCP 連接,如果連接重試計時器(Connect-Retry)超時,就退回到Connect 狀態,如果TCP 連接成功,就轉入OpenSent 狀態,如果TCP 連接失敗,就繼續保持在Active狀態,並繼續發起TCP連接。

OpenSent(打開消息已發送):在OpenSent 狀態,TCP連接已經建立,BGP也已經發送了第一個Open報文,剩下的工作,BGP就在等待其對等體發送Open 報文。並對收到的Open報文進行正確性檢查,如果有錯誤,系統就會發送一條出錯通知消息並退回到Idle狀態,如果沒有錯誤,BGP就開始發送Keepalive 報文,並復位Keepalive 計時器,開始計時。同時轉入OpenConfirm狀態。

OpenConfirm(打開消息確認)狀態:在OpenConfirm狀態,BGP等待一個Keepalive 報文,同時復位保持計時器,如果收到了一個Keepalive 報文,就轉入Established 階段,BGP鄰居關係就建立起來了。如果TCP連接中斷,就退回到Idle 狀態。

Established(連接已建立):在Established 狀態,BGP 鄰居關係已經建立,這時,BGP將和它的鄰居們交換Update 報文,同時復位保持計時器。

還有一種狀態:

No neg(無須協商):如果該BGP鄰居在MBGP中enable了,但是在公網中沒有enable,則看公網鄰居表就會顯示no neg

成為BGP路由的方法:

純動態注入是指:路由器將通過IGP路由協議動態獲得的路由信息直接注入到BGP中去。純動態注入方式沒有對路由信息做任何過濾和選擇,它會把路由器獲得的所有IGP路由信息都引入到BGP系統中。即使用import命令引入的路由條目。

半動態注入是指:路由器有選擇性的將IGP發現的動態路由信息注入到BGP系統中去。意即IGP協議發現該網段,然後BGP通過靜態配置的方式引用。即由某種路由協議首先發現該路由,此時可以在路由表項中看到其精確表項,此時再用network發佈。(此時bgp路由表中的優先級就是該igp路由的優先級)

靜態注入是指:路由器將靜態配置的某條路由注入到BGP系統中。即首先配置該條靜態路由,或者是直連路由,然後使用network發佈的。

注:1、執行引入或發佈動作時,默認把原協議的優先級設置為該BGP路由的優先級。

2、注入路由時,相應的IGP路由必須已經通過競爭加入到總路由表了,如果總路由表中的這條路由是BGP鄰居傳遞過來的,那麼是不會觸發本地生成BGP路由的


BGP路由通告原則:

1、多條路徑(專指BGP鄰居傳遞過來的)時,BGP Speaker只選最優的給自己使用(即加入到BGP路由表,但不表示一定best);(是指根據BGP選路原則選出的路由)

注:這個最優是指在BGP路由表中最優的。即在BGP路由表中多條相同路由時,按照選路原則選出一個最優的,作為BGP路由表中的最優,參與總路由表的競爭。

2、BGP Speaker只把自己使用的路由通告給相鄰體(包括兩種:自己發佈的;鄰居傳遞過來的);

注:“自己使用的路由”即標識為best的路由;如果該路由看到沒有“best”,則可以看到該路由沒有向鄰居通告。

而判斷該BGP路由是否“best”的依據就是在總路由表中所用的該路由是從BGP得到的(即收到鄰居傳遞過來的路由,要參與與其它協議的路由競爭,勝出了才向鄰居繼續傳遞)。或者這條路由是自己通告的(此時也會標記為best)。此時會向鄰居傳遞,但鄰居是否會使用就難講了。

3、BGP Speaker從EBGP獲得的路由會向它所有BGP相鄰體通告(包括EBGP和IBGP);

4、BGP Speaker從IBGP獲得的路由不向它的IBGP相鄰體通告;

5、BGP Speaker從IBGP獲得的路由是否通告給它的EBGP相鄰體要依IGP和BGP同步的情況來決定;所以一般都是把同步關閉的,來允許從IBGP來的路由向EBGP通告。

注:IGP協議一般根據LSDB計算出路由信息來,而BGP無法自己計算,BGP只能將IGP計算出來的或者說是大路由表中的路由通過BGP發佈出去:

a)自己進行BGP發佈,自己的大路由表中看到該路由從其它協議學到,此時BGP路由表中是valid,且best的

b)接收到鄰居BGP發佈過來的,首先對接收的多條BGP路由進行比較,選出best的,然後再和其它協議學到的路由比較,如果BGP優先,則會向鄰居傳遞,不優先就不傳遞。

BGP路由優選原則:

在VRP5.30的實現中,當到達同一目的地存在多條路由時,BGP採取如下策略進行路由選擇(統一選路):

1. BGP優選Preference值較低的本地始發路由(研發解釋本地始發路由即本AS內BGP路由器通過network發佈的路由)。這個優先級是IP路由表(管理路由表)中各個協議路由(包括直連路由和靜態路由)的Preference值。(不僅包括本地IGP產生的路由,也包括通過bgp學習到的路由,會比較preference選出最優路由,如果bgp路由獲勝,那麼bgp路由會加入總路由表,同時bgp路由表中標記為best,並向鄰居傳遞;否則不標記best,也不向鄰居傳遞)

本地始發路由是指BGP通過import命令、network命令引入的路由或通過aggregate命令、summary automatic命令聚合生成的路由,是相對於BGP鄰居接收的路由而言的。

2. 如果不同協議路由的Preference值相同,系統會按照如下的順序優選一種協議路由:OSPF、IS-IS Level-1、IS-IS Level-2、EBGP(包含BGP Aggregate)、Static、RIP、OSPF_ASE、IBGP;由於直連路由的Preference是最小值0,所以在BGP本地始發路由中如果存在直連路由,BGP會優先選擇直連路由。

注:使用network、import方式產生的BGP路由在本地的協議優先級為對應IGP路由的協議優先級而非BGP-Local路由的協議優先級;只有使用aggregate命令本地聚合生成的路由才使用BGP-Local協議優先級。

3. 首先丟棄下一跳(Next_Hop)不可達的路由(這個是下一跳必須是在總路由表中可以顯示看到的);

4. 無條件優選帶Label的IPv4路由;(是指BGP+傳遞過來的,同時攜帶label標籤,一般用於optionC場景)

5. 優選協議首選值(PrefVal)最高的路由;(類似於BGP的cost值,可以通過route-policy來添加,華為特有的,僅本地有效)

6. 優選本地優先級(Local_Pref)最高的路由;

7. 優選聚合路由(聚合路由優先級高於非聚合路由);???(不僅可以聚合本地路由,ebgp傳遞過來的路由也可以進行聚合)當然要掩碼相同,優先級相同

8. 優選AS路徑(AS_Path)最短的路由;(只判斷長度,不判斷AS路徑的實際AS是否一致)

9. 比較Origin屬性,依次選擇Origin類型為IGP、EGP、Incomplete的路由;

10. 優選MED值最低的路由;

11. 優選從EBGP學來的路由;是指EBGP和IBGP路由優先級相同的情況下,如果通過preferens改變優先級,那麼在第一條就比較出來了。

12. 優選AS內部IGP的Metric最低的路由。(判斷的依據為迭代的實際的IGP下一跳的cost值)這個是指到Original nexthop的總igp路由的cost值.作為BGP傳遞過來的路由,其下一跳根據配置(強制不改變或者強制為本地),有可能不相同,需要根據顯示的下一跳計算總的cost值。

注:如果配置了負載分擔,並且有多條As_Path完全相同的外部路由,則根據配置的路由條數選擇多條路由進行負載分擔;???如果不相同呢

13. 優選Cluster_List最短的路由;

14. 優選Originator_ID最小的路由;(這個專指RR反射路由時添加的屬性)

15. 優選Router ID最小的路由器發佈的路由;即產生路由的起始路由器。

16. 比較對等體的IP Address,優選從具有較小IP Address的對等體學來的路由。

路由迭代:在路由表中,報文轉發依賴下一跳地址進行轉發;如果某網段的下一跳地址不是直連的,可以在表中查找該地址的表項(該路由稱為依賴路由),找出下一跳,繼而進行報文的轉發。如果依賴路由是負載分擔的,則該路由就是負載分擔的。但是針對BGP+的負載均衡不決定於路由,而是看LSP是否配置了負載均衡。

注:針對BGP+的路由優選原則,同上一致。

關於BGP的統一選路原則和獨立選路原則(以V5R7C02 VRP版本為界)

1、BGP統一選路,先進行協議間選路,再進行BGP協議內選路,如果igp獲勝了,那麼該路由可以通過network等方式引入到bgp中,再參與bgp內選路,此時不再比較優先級。簡單來說就是:剛開始把ebgp、ibgp和igp路由進行協議優先級的比較,如果igp獲勝,才能發佈對應的本地bgp路由,再參與到bgp協議內選路。不過如果igp比不過bgp,無法入選總路由表,那麼也不會觸發建立bgp本地路由。

2、BGP獨立選路,不管igp的路由表是否最優,先通過network等方式生成本地bgp路由,參與到與ebgp和ibgp路由之間的協議內選路,此時bgp選路不進行考慮協議優先級條件,選舉出bgp最優路由時,再與igp路由進行競爭,獲勝者加入總路由表。此時就會出現兩種情況:一種是bgp協議內選路時,ebgp或ibgp路由比不過引入的本地bgp路由(相同路由肯定比不過,因為本地路由優先,所有隻要收到了本地IGP路由,就會導致BGP學習到的路由不生效),導致不放入bgp路由表,於是沒有參與總路由表競爭的資格,此時即使igp路由優先級低於ebgp或ibgp優先級,也會被髮布到bgp中。另一種是,bgp先從鄰居學習到,此時igp路由過來了,但優先級低於bgp,導致無法裝入總路由表,導致無法觸發生成bgp本地路由,此時bgp獲勝。(V8R3已經解決了該問題:BGP選路結果若BEST路由為從RM引入的路由,支持下發次優的BGP路由)

所以不管哪種選路方式,靜態黑洞+network方式時,都要使靜態路由優於ibgp路由,但小於igp路由,意思是讓本地觸發生成bgp本地路由的靜態路由優先級一定要戰勝ibgp這種不可靠路由(為了防環,因為ibgp容易成環,此處沒有提及ebgp,因為一般其為通往as外的通道,一般都是要求信任的),但是要確保其優先級小於igp,避免將路由導入黑洞。因為黑洞路由配置了就不會消失,用以避免ibgp到來過晚或經常消失的缺陷。但其僅僅為了觸發生成bgp本地路由,不能比igp這種真正傳遞路由協議的優先級高。

附:ibgp路由的作用,是在as內同步所有bgp路由器的bgp路由的,其實質就是一個距離矢量路由協議,所以為了防環才規定其ibgp得到的路由不能傳遞給其他ibgp路由,所以其可靠性比較低,一般其優先級設置為最低。其次,黑洞路由是為了觸發生成bgp本地路由的(因為其比igp路由穩定),和避免環路(因為壓制住了ibgp路由),其不為了指導路由轉發,所以其優先級第二低。igp路由用來指導as內路由轉發,需要人為保證其無環,在這個條件下由其指導轉發沒有問題,所以其優先級要高於ibgp和黑洞路由。ebgp路由是指導到as外的路由,理論上是as發往外部的唯一通道,且發往as外一般不會環路(即使ebgp路由有問題,我們本as也沒有辦法),所以其優先級要最高。當然該原則不絕對。

備註:NE5000E從V3R7到V8R3版本針對BGP選路又有變化:V3R7版本針對BGP引入的IGP路由一旦符合條件生成BGP路由,在與EBGP或IBGP路由比較時,由於屬於本地路由,所以一定會優選,導致EBGP和IBGP路由不生效,即使兩者的優先級比IGP協議路由高。而V8R3版本針對這一點做了調整,如果BGP引入了IGP的路由,那麼生成的BGP本地引入路由,需要和EBGP和IBGP路由比較優先級,如果優先級低,那麼會導致IGP路由不優選,從而撤銷從IGP引入的BGP路由;而如果BGP沒有配置引入IGP路由,那麼EBGP和IBGP路由就參考獨立選路原則,選出最優BGP路由後,參與到與IGP路由的優先級比較中,再決定出最後路由。

BGP屬性詳解:

Origin 起點屬性:定義路徑信息的來源,標記一條路由是怎樣成為BGP路由的。如IGP、EGP、Incomplete等。

1)BGP把聚合路由和用直接注入到BGP路由表的具體路由看成是AS內部的(即使用network命令注入的),起點類型設置為IGP,

2)BGP把通過其它IGP協議引入的路由起點類型設置為Incomplete。(即用import命令注入的)

3)BGP把通過EGP得到的路由的起點類型設置為 EGP(最初的一種路由協議,目前基本上看不到)。

As-Path AS 路徑屬性:是路由經過的AS的序列,即列出在到達所通告的網絡之前所經過的AS的清單。BGP發言者將自己的AS前置到接收到的AS路徑的頭部,它可以防止路由循環,並用於路由的過濾和選擇。如果接受到的路由as屬性中發現自己的as號,則拒絕接受該路由。

Next hop 下一跳屬性:包含到達更新消息所列網絡的下一跳邊界路由器的IP地址(即Original nexthop,根據這個地址迭代出Relay Nexthop;如果迭代不出,說明下一跳不可達,路由不生效)。BGP的下一跳與IGP有所不同,它可以是通告此路由的對等體的地址,如EBGP,這同IGP是相同的。而在其它情況下,BGP使用第三方的下一跳,如IBGP對從EBGP對等體獲得的下一跳不加改變的在自治系統內傳遞;在多路訪問媒體上,BGP以路由的實際來源為下一跳,即使它不是BGP對等體。如果該路由是本地始發路由(即本地引入或發佈的路由),那麼傳遞給ibgp或ebgp鄰居時,下一跳為其建立bgp鄰居關係的地址(不一定是router id)。

1)BGP在向IBGP通告從其它EBGP(或反射的ibgp客戶端的路由)得到的路由時,不改變路由的下一跳屬性,本地BGP將從EBGP得到的路由的下一跳屬性直接傳遞給IBGP。

2)BGP在向EBGP對等體通告路由時(無論是ibgp路由或其他ebgp的路由),下一跳屬性是本地BGP與對端連接的端口地址。

3)對於可以多路訪問的網絡(如:以太網或幀中繼),下一跳情況則可能有所不同。

注:默認若通告的路由的下一跳(即本路由器看到該路由的下一跳,即與本路由器建立鄰居的地址)和通告的接口位於同一個三層網段,則不修改下一跳(一般不會遇到,因為router-id總是選擇loopback接口);但可通過命令強制修改下一跳為本身(主要用於NBMA網絡)。這裡的“下一跳”指的是建立BGP的router id地址。??????

MED屬性:當某個AS有多個入口時,可以用MED屬性來幫助其外部的鄰居路由器選擇一個較好的入口路徑。一條路由的MED值越小,其優先級越高。在引入路由時可以設置med值,在向AS外發布該路由時,會影響EBGP鄰居對路由的選擇(在傳多一個AS時,該值被清空,且在AS內傳遞時該值不生效)

注:1)BGP生成路由時會添加MED值(igp的cost),並且MED屬性會在AS內的IBGP鄰居中傳遞(可以看到),不加改變,除非用路由策略進行改變,用來指導路由優選;

2)MED值在AS內傳遞,在向EBGP傳遞時會被取消掉(因為同一個AS得到的MED,不會向另一個AS傳遞)當然邊界路由器自身產生的BGP路由向EBGP鄰居傳遞時就會添加默認的med值。?????ebgp傳遞的路由是否包含med屬性

3)default med命令僅在AS邊界路由器向EBGP鄰居傳遞時才起效(自己bgp路由表中看還是0),配置該命令後,在向EBGP鄰居傳遞任何路由(包括自己產生的或是傳遞鄰居的)都會加上設置的med值。

4)當使用路由策略更改了med後,是可以向IBGP或EBGP鄰居傳遞的該值的。

5)缺省情況下,如果路由屬性中沒有MED值,則按0處理,參與競爭。可使用命令使其作為最大值處理。

BGP知識點總結


6) 對同一個AS不同EBGP鄰居過來的路由,才進行MED比較,不同AS過來的路由,不比較MED。

Local-Preference 本地優先屬性:本地優先屬性用於在自治系統內優選到某一個目的地的路由。在引入路由時,設置該路由的本地優先級,用以影響鄰居對路由的選取(需要通過路由策略來實現)。向本地優先屬性值越大,路由的優選程度就越高。只對本AS內的路由通告有效,若出了AS則該值自動取消;

注:1)路由發佈給IBGP鄰居時(無論是自己產生的還是傳遞鄰居的路由),都會添加上local-preference屬性,自己的BGP路由表中則看不到該屬性。

2)無論有沒有做local-preference的設置或路由策略來改變local-preference,在AS內都會帶著該屬性。

3)傳遞給EBGP鄰居時,local-preference自動消失。

4)進行路由優選時,如果看不到localpref選項,那麼默認為100,參與競爭。

Community 團體屬性: 團體屬性標識了一組具有相同特徵的路由信息,與它所在的IP子網和自治系統無關。公認的團體屬性值有:NO-EXPORT、NO-ADVERTISE、LOCAL-AS和 INTERNET。解釋:可以認為團體屬性類似於tag(因為BGP無法傳遞路由的tag屬性,所以產生了團體屬性,藉此可以進行路由匹配並執行動作)缺省路由不帶團體屬性。

1)NO_EXPORT:帶有這一團體值的路由在收到後,不應被通告給一個聯盟之外的對等體。

2)NO_ADVERTISE:帶有這一團體值的路由在收到後,不應被通告給任何的BGP對等體。

3)LOCAL-AS:帶有這一團體值的路由在收到後,應該被通告給本地AS內的對等體,不應被通告給任何的EBGP對等體(包括聯盟內的EBGP對等體)。

4)INTERNET: 帶有這一團體值的路由在收到後,應該被通告給所有的其他路由器。

注:針對團體屬性的格式定義:我們設備定義的團體屬性格式為16:32模式的,沒有特殊意義,可以認為就是一串數字。另外如果使用apply community 100命令為路由添加團體屬性,則可以看到實際上設備路由的團體屬性被加成了0:100,即apply community 100和apply community 0:100命令效果一樣。

路由反射器相關知識:

路由反射器的作用:AS內部的所有路由器都運行BGP,在AS內部部署路由反射器,構建hub and spoke的IBGP(會話數為N-1), 然後關閉所有BGP路由器的同步。此方案可以使BGP路由器傳遞IBGP路由到EBGP, 並保證BGP路由的連通性。但是對物理拓撲有很大的限制15個路由器的AS,具有冗餘的RR方案(33個IBGP會話)

路由反射器概念的基本思路是:指定一個集中路由器作為內部對話的焦點。多個BGP路由器可以與一箇中心點對等化,然後多個路由反射器再進行對等化。

反射器,客戶機以及非客戶機:

1,路由反射器作為其他路由器的集中點,其他路由器就稱為客戶機。客戶機與路由反射器對等並與其交換選路信息。路由反射器會依次在客戶機之間傳遞(反射)信息。

2,路由反射器的IBGP對等體分為兩類:客戶機和非客戶機。一個路由反射器和它的客戶機構成一個群(Cluster)。在自治系統中不屬於這個群的其他所有對等體就是非客戶機。

3,非客戶機與路由反射器之間,以及非客戶機互相之間必須組成閉合網,因為它們遵循IBGP閉合網的基本規則。客戶機不應與其相關群之外的IBGP建立對等。路由反射功能只在路由反射器上完成,所有的客戶機和非客戶機都是常規的BGP對等體,與路由反射器的功能無關。

反射原則:

1,從一個非客戶機對等來的路由,反射到全部的客戶對等上;

2,從一個客戶對等來的路由,既反射到全部的非客戶對等,也反射到所有的客戶對等上。

注:RR將IBGP的路由反射給IBGP時,不改變下一跳的地址;而其它情況的反射都遵循“BGP下一跳屬性”的定義。

冗餘的路由反射設計,雙反射器;但是帶來了環路的問題(反射器把從鄰居反射器得到的路由信息又反射回了該客戶機),解決方案:

一,反射群組:通過4字節的Cluster_ID來標識Cluster(通常會使用LoopBack地址作為Cluster_ID),一個群組中擁有相同的標識

1,每一次路由被反射,Cluster_ID就被加入到Cluster_list屬性(新的,可選的,非過渡的10號BGP屬性)中;

2,如果RR發現擁有相同Cluster_ID的路由更新,就將其丟棄(因為一般都是雙掛場景,所以沒必要接收另一個RR傳遞的路由)。

3、RR只在路由從一個客戶反射給另一個客戶/非客戶,或者從非客戶反射被客戶的時候,才會創建Cluster_list;

4、當RR向EBGP通告路由時,已有的Cluster_list就被清除掉;

二,Originator_ID:(可選,非過度屬性,屬性類型為9)

1,由第一個反射器創建(將O_id設置為通告該路由的客戶機的router id),並且不被後續的反射器所更改(一個32bit長的數值,並且只應該從IBGP裡接收到)

以下這些路由器的Router ID:

1)本地AS始發路由:BGP宣告者的Router ID

2)非本地AS始發路由:本地AS的邊界路由器的Router ID

2,第一個反射器傳遞給第二個反射器,其再反射給客戶機時,客戶機會丟棄Originator_ID與其Router_ID一樣的路由更新信息。

將Cluster_ID設置為相同與不相同,到底有什麼區別呢?

首先,如果Cluster_ID設置為不相同的值,則該兩臺RR分別屬於不同的簇,一般對於下級普通客戶,會與兩個RR都建立IBGP鄰居關係。這樣的話,兩臺RR彼此間都會反射從客戶學習到的路由給對端;

如果Cluster_ID設置為相同的話,則該兩臺RR屬於同一個簇,一般對於下級普通客戶,會與兩個RR都建立IBGP鄰居關係,但是由於兩個RR的簇ID一致,使得彼此不會接受並計算對端RR發來的客戶路由;

綜合分析,建議將RR部署在相同的簇中,既能保證冗餘,而且還節省了路由器開銷。

RR前綴通告原則:

RR只通告或反射它所知道的最佳路徑(是否可以配置最大負載均衡數)??????

RR總是向EBGP對等體通告

RR客戶在通告前綴的時候遵循常規的IBGP環路防止規則

RR從EBGP學到的會通告給所有的客戶與非客戶

RR從非客戶學到的會通告給客戶(不會通告給非客戶,否則違反了第三條)

RR從客戶學到的會通告給其他的客戶與非客戶

額外提幾點設備網絡規劃的RR的部署:

1、針對大型網絡的出口核心設備,一般有一臺出口設備,就匹配一臺RR設備,主要原因是,RR在對收到的路由進行優選後再反射給網內設備時,由於優選原則都一樣,會造成出口路由只有一條被反射的情況。針對出口核心配置RR,然後每個RR針對每個對應出口的過來的路由分別區分打上不同的local pre優先級,就可以保證每臺RR優選其對應那臺核心出口的路由,這樣所有出口的路由就都會被反射給網絡內的設備了,再由這些設備自行配置路由的優選原則;

2、針對一個網絡比較龐大的情況,一般會考慮設備二級RR設備,避免所有設備都與一級RR建立鄰居過多的情況。劃分多個區域,每個區域的路由器與該區域的RR設備(一般是兩個互作備份的)建立IBGP鄰居關係,然後每個二級RR再與一級RR建立IBGP鄰居關係,以減少一級RR上的鄰居數目。這樣一級RR的路由反射給每個二級RR,然後每個二級RR再反射給該區域的路由器。

3、在對出口出去的路由進行優先級操作以控制優選和備份時,一般本端只能採用MED值進行控制(當然也可以用AS長度),但是MED值參數在BGP選路原則中比較靠後,容易不成功,所以還可以採用給發佈的BGP路由標記團體屬性的方式,然後由對端路由器針對該特定團體屬性,配置對應的local pre值,來間接控制路由的優選度。


AS內部的所有路由器都運行BGP,把一個原始的AS基於網絡拓撲劃分為若干個sub-AS(又稱聯盟AS),聯盟AS之間的BGP鄰居叫做聯盟EBGP,不需要full mesh BGP會話;在每個聯盟AS內部運full mesh IBGP或者hub and spoke反射器,然後就可以關閉所有路由器的BGP同步功能.


IGP負載分擔:

通過鏈路cost/metric規劃自動形成等值路由

BGP負載分擔:

(1)使用BGP路由分擔命令( vrp3.3 Balance /vrp5 Maximum )改變優選策略,形成BGP等值路由。

(2)使用Loopback接口創建BGP連接,通過到Loopback的IGP等值路由迭代形成BGP路由的負載分擔。

(3)虛擬下一跳:多臺EBGP路由器收到相同外部路由後向RR/IBGP鄰居通告時強制改變路由nexthop為一個指向對端AS的虛擬地址(本域每臺EBGP路由器上均配置到此虛擬地址的靜態路由指向對端EBGP鄰居,並將此路由引入IGP),通過到IGP路由迭代形成EBGP路由的負載分擔。(同上)

BGP FREE特性:

BGP FREE特性的主要作用是,減少transmit層設備的bgp開銷及路由表開銷。這個概念與BGP和IGP同步的特性有關(開啟BGP同步的情況下,一臺設備從另一臺設備通過BGP學過來的路由,會在其IGP路由表中檢查一下,如果該BGP路由迭代的實際下一跳和IGP路由表中該路由的下一跳一致,那麼才認為該BGP路由有效,否則可能會出現中間路由器由於沒有配置bgp,導致沒有對應路由,而把流量丟棄的情況)。

BGP FREE的做法就是:通過一條命令在BGP路由器(類似於MPLS VPN的PE設備)上開啟一個機制,就是在計算到該BGP路由的下一跳進行迭代時,如果傳遞過來的源下一跳存在LSP路徑,那麼就將到該路由的下一跳出口指定為該LSP,這樣到該路由的流量就直接封裝進行該LSP進行轉發,通過中間設備時,是不需要查公網路由的,所以就可以節省中間設備的BGP和路由開銷了。

附:未使能BGP FREE特性的路由器的行為,如果一條路由的下一跳不是本地直連的,那麼就會進行一層層的迭代,直到迭代出本身直連的下一跳。如果該下一跳需要進行lsp,才會送到lsp隧道中。而使能了BGP FREE功能後,路由器就不再進行路由迭代了,直接查找源下一跳是否存在LSP,如果存在就進LSP通道,如果不存在,就進行普通路由迭代,走普通igp轉發路徑。

其實BGP FREE的行為就類似於MPLS VPN,在查找私網路由的下一跳時,如果PE的32位路由存在LSP通道,那麼就不再針對PE的32位路由進行迭代了,而是直接進入LSP隧道進行轉發。這個MPLS VPN的轉發機制,而公網路由轉發的機制,默認必須要迭代出直連的下一跳的。


分享到:


相關文章: