㈠ BGP工作原理(5)
一、BGP路由信息決策過程
1、Adj-RIB-In 存放從對等體接收到的更新
當從對等體接收到Update報文時,路由器會把Update報文存儲到路由信息庫RIB,並指明是來自哪個對等體的;
Update報文經過BGP輸入策略引擎路由過濾或修改屬性;
路由器執行路徑選擇演算法,來為每一條前綴確定最佳路徑;
2、Loc-RIB 存放經過輸入策略引擎、路徑選擇處理過的路由
得出的最佳路徑被存儲到本地BGP RIB中,然後將loc-RIB的路由載入到IP-RIB中;
3、Adj-RIB-Out 存放經過輸出策略引擎處理過的路由
Loc-RIB中的路由在被通告給其他對等體之前,必須通過輸出策略引擎,只有那些成功通過輸出策略引擎的路由,才會被安裝到輸出RIB中;
二、BGP選路規則
1、忽略下一跳不可達的路由;
2、優選prefer-value數值大的路由; 預設值0
3、優選Local-preference數值大的路由; 預設值100
----------------------------------------------------4、5、6三條規則用於比較自身產生的路由
4、聚合路由優於非聚合路由;
5、手工聚合路由優於自動聚合路由;
6、network發布的路由優於import發布的路由;
7、優選as-path長度短的路由;
8、IGP起源的路由優於EGP起源的路由優於未知起源的路由;
9、優選MED數值小的路由; 預設值0,命令compare-different-as-med修改預設比較行為
10、EBGP路由優於IBGP路由;
11、優選下一跳IGP開銷小的路由;
============================滿足以上條件可選實現負載分擔;
12、優選cluster-list長度短的路由; 有的有,有的沒有,沒有的優先
13、優選Originator-ID或RouterID小的路由; 二選一,優先比較Originator-ID
14、優選對等體地址小的路由;
三、BGP的負載分擔
1、BGP路由的負載分擔
到達同一目的地通常會存在多條有效路由,但是BGP只將最優路由發布給對等體;
前11個屬性完全相同的情況下,可通過命令maximum load-balancing ebgp|ibgp配置BGP負載分擔的最大等價路由條數,實現下發多條不同下一跳的BGP路由到IP路由表中,預設值為1,不進行BGP路由負載分擔;
如果滿足負載分擔條件的BGP路由數大於定義的BGP負載分擔規格,繼續從第12條規則比較下去;
到達同一目的地的eBGP路由和iBGP路由不能形成負載分擔,如果最優路由是ibgp路由,則只是ibgp路由形成負載分擔;如果最優路由是ebgp路由,則只是ebgp路由形成負載分擔;
預設情況下,BGP只對AS-path屬性完全相同的路由進行負載分擔,也適用於聯盟內部的自治系統之間,可通過命令load-balancing as-path-ignore配置路由在形成負載分擔時不比較路由的as-path屬性,但是該方式可能會引起路由環路;
2、下一跳路由的負載分擔
BGP區別於IGP協議的一點是其下一跳地址可以是非直連路由的介面IP,非直連的下一跳在路由器上會執行迭代路由進行查找路由表,BGP依賴下一跳路由來轉發數據,所以如果下一跳地址所對應路由在IP路由表中是負載分擔的(IGP的ICMP),也就間接實現了BGP報文轉發的負載分擔;
BGP同步
在華為VRP平台中,BGP同步默認是關閉的,並且不能手動開啟;
BGP同步指BGP路由器必須與IGP同步,AS內的路由器不僅要通過BGP學習到此路由,並且要從IGP協議學習到該路由,才會將該路由通告給eBGP鄰居;
除了BGP同步外,避免路由黑洞問題的方法還有IBGP全互連、RR、聯盟、MPLS VPN;
四、BGP路由及默認路由
1、生成BGP路由,BGP協議自身是不能發現路由的
(1)通過network方式生成來自IGP的路由
將IP路由表中存在的路由注入進BGP,注入的路由要和IP路由表中路由的前綴和掩碼一致;
network方式注入的路由,origin屬性為igp;
(2)通過import-route方式引入外部路由
import-route方式引入外部路由,origin屬性為incomplete;
(3)通過aggregate進行聚合的路由
自動聚合
自動聚合只能對import引入的路由進行有類聚合,不能對network方式注入的路由進行自動聚合;
自動聚合通過命令summary automatic實現,只能在引入路由的設備上生效,預設未啟用;
手動聚合
手動聚合通過命令aggregate可以對BGP路由表中的路由進行聚合;
如果聚合路由中所包含的明細路由的origin屬性各不相同,那麼聚合路由的origin屬性按照優先順序incomplete>egp>igp;
聚合路由會繼承原明細路由中的所有團體屬性;
聚合時可以攜帶關鍵字:
detail-suppressed 預設手工聚合後通告所有明細路由,此參數抑制明細路由;
suppress-policy 用來實現部分抑制,部分不抑制,匹配route-policy的明細才抑制;
as-set 聚合路由as-path繼承成員明細路由的AS號,預設聚合路由會丟失明細的AS信息;
與普通as-path的segment類型as-sequence不同的是,as-set類型是一種AS號的無序集合;
對明細路由做聚合時,把所有明細路由AS-Path由前向後相同的部分放在()的前面,其餘部分去重後放入();
origin-policy 有條件的聚合,只有滿足route-policy匹配條件時,才生成聚合路由;
attribute-policy 用來修改聚合路由的屬性;
2、默認路由
如果一台設備在網路中有多個EBGP鄰居,或者存在多個路由反射器,那麼該設備將會從鄰居或者反射器接收全網的路由,該設備也會向本AS內的IBGP對等體發布路由,這樣會極大地增加路由表的容量,通過向對等體發布預設路由,減少對等體路由表的數量。
通過命令peer x.x.x.x default-route-advertise向對等體發布一條默認路由,可以通過route-policy來設置默認路由的屬性;
參數conditional-route-match-any/all用來設置匹配條件,如果滿足條件則發布默認路由;
(1)any指當匹配任一條件時,發布默認路由;
(2)all指當匹配所有條件時,發布默認路由;