BGP的屬性和選路原則

一、BGP 的路由優先問題
BGP同步問題:
通過IBGP學習路由必須通過IGP學習,否則路由不優;爲了解決技術層面的路由黑洞問題,一般建立關閉,使用MPLS標籤轉換技術解決。
下一條問題:next-hop下一跳屬性在路由傳遞時,是否改變規則:
1、將IBGP鄰居學習到的路由傳遞給EBGP時,next-hop爲建立EBGP鄰居的更新源地址。
特例:若邊界設備與EBGP鄰居使用MA網絡並直連建立鄰居,並且邊界設備學習到達該路由的路由下一跳(遞歸後的)接口也爲該MA網絡接口,則使用EBGP學習的下一跳爲IBGP鄰居的MA接口地址(ICMP重定向),注意該特性也使用與EBGP學習路由傳遞給其他EBGP鄰居時。
2、將EBGP鄰居學習的路由傳遞給IBGP鄰居時,next-hop不發生改變;傳遞個其他EBGP鄰居時下一跳爲建立EGBP鄰居的更新源地址。

二、BGP路由導入和導出

BGP 路由引入:
1、Network
2、重發布
3、聚合產生

1、network引入時,若爲直連路由、靜態出接口寫法路由(包含出接口爲null 0),next-hop爲0.0.0.0;若爲IGP路由,本路由器中IGP路由的下一跳地址爲next-hop地址。
當接收到的next-hop爲自己直連接口BGP路由條目,不學習,直接忽略,防止出環。

2、重發布引入時,與next-hop一致。(必須關閉自動彙總,若開啓,則next-hop爲0.0.0.0)
注意:將OSPF路由重發布引入BGP時,默認不會將OSPF中的5類和7類LSA引入, 若要引入,則重發布過程中增加match匹配5類和7類LSA.

3、聚合產生的路由條目,next-hop爲0.0.0.0。

BGP路由導出:
將BGP重發布進入IGP中,默認僅將EBGP鄰居學習到的路由和本路由network引入的路由重發布引入。若要將IBGP鄰居學習到的路由重發布引入BGP,則使用命令:
R(config)#router bgp 1
R(config-router)#bgp redistribute-internal

三、BGP後門路由
1、Backdoor屬性是使router優選從IGP學習到的路由,而不是優選從IBGP鄰居學習到的路由,因爲缺省情況下,EBGP鄰居AD爲20,會始終優先選擇,而不會選擇其他AD的IGP路由協議傳遞過來的路由。
2、後門路由用於一些特殊的情況,將IGP路由的優先級調高於EBGP。

四、BGP路由懲罰
目的:抑制路由擺動
被懲罰的路由不能參與選路,不能傳遞,懲罰是針對該路由的路徑。

懲罰值:路由每翻滾一次,懲罰值增加1000,路由屬性每改變一次,懲罰值增加500
懲罰門限:開始進行懲罰的懲罰值,默認2000
重用門限:當懲罰值降低到該值是,恢復路由,默認750
半衰期:每經過一個半衰期,懲罰值減半,默認15分鐘
最大懲罰時間:最大懲罰路由時間,默認60分鐘
最大懲罰值:重用門限*2^(最大懲罰時間/半衰期),默認12000

五、BGP的屬性
一共10條,Cisco有11條,weight是Cisco私有屬性
1、公認必遵:Origin,AS-path,Next-hop
2、公認可遵:local-pref,auto-aggregate
3、可選傳遞:aggregator,community
4、可選非傳遞:MED,Originator-ID,cluster-list,weight
(1)Origin屬性:記錄了路由是如何進入路由表的。
Origin code:i--IGP,e--EGP,?--incomplete
使用i標示——管理員使用network宣告引入
使用e標記——通過EGP協議學習後,重發布到BGP協議中的路由
使用?標記——通過IGP協議學習後,重發布進入BGP協議中的路由
優先級:i > e > ?
(2)AS-path屬性:指出包含在update報文中的路由信息所經過的自治系統號。
1、路由條目在一個AS內部傳遞時,不會添加該AS的編號,而是在傳遞給其他EBGP鄰居時,才添加該參數;並且優選經過的AS數量少的路徑。
2、管理員可以通過添加AS來干涉選路,添加後即可干涉EBGP鄰居關係選路,也可干涉IGBP鄰居關係選路,但只能在EBGP鄰居修改該參數。
(3)Next-hop屬性:
1、將IBGP鄰居學習到的路由傳遞給EBGP鄰居時,next-hop爲建立EBGP鄰居的更新源地址。
2、將EBGP鄰居學習到的路由傳遞給IBGP鄰居時,next-hop不發生改變;傳遞個其他EBGP鄰居時下一跳爲建立EGBP鄰居的更新源地址。
(4)Local-pref屬性:
1、local-pref稱爲本地優先級,其中的(local)本地就是指AS,local-pref屬性的傳遞範圍只能在同一個AS內部有效,出了本AS就會被還原成默認值100.
2、local-pref屬性在BGP鄰居之間自動傳遞時,只有將路由發給IBGP時纔會傳遞,而發給EBGP時,沒有local-pref值。一條路由在AS內所有路由器上的默認local-pref值是100。
3、local-pref的值越高,路由的優先級就越高。
(5)auto-aggregate屬性:
用來警告下游路由器路由聚合後產生的路由路徑丟失。
BGP支持向BGP鄰居傳遞重疊路由,可以選擇多種方式:
1、明細和粗略的都公佈
2、只公佈明細
3、只公佈沒有重疊的
4、公佈聚合後的路由
5、明細和粗略都不公佈
(6)Aggregator屬性:
用來通告彙總路由的匯聚路由器BGP_ID(Cisco)和聚合路由的路由器的AS號。
(7)community屬性:
標準community (Standard community)做路由標示
擴展community(extended community)用於MPLS ×××
(8)MED多出口鑑別屬性:
MED就是BGP中的metric,在不同AS間傳遞。在有多個下一跳EBGP鄰居時,會優先選擇MED值最小的路徑;在同一個AS內部不傳遞該屬性,同一AS內的MED的默認值爲0,這是爲了在同一個AS內的路由器擁有等同的選路結果。
(9)Originator-ID屬性:
路由反射器使用該屬性,不接收與自己相同的起源者ID的路由,防止環路。
(10)Cluster-list屬性:
路由反射器使用該屬性,不接收與自己相同的簇列表的路由,防止環路。
(11)Weight屬性:
Weight屬性是Cisco私有屬性,只有Cisco的路由器才能識別weight。
1、路由的weight屬性只在本地路由器起作用,BGP將路由傳遞給鄰居時,並不保留weight。Weight值的範圍0~65535,默認爲0,如果是BGP本地發起路由,weight值32768。
2、當到達同一目的地存在多條路徑時,優選weight值大的。在Cisco路由器中,比較最優路徑的第一條規則就是比較weight值,所以只要改動weight值,就能控制Cisco路由器的BGP選路。

六、BGP的選路原則(13條)
BGP選路:a、無環(AS轉發環路)
b、路由優化(IBGP同步已解決;下一跳可達)
c、路由不能是被懲罰狀態

1、最高weight值 (選最高weight值的路由,Cisco私有,默認爲0,如果是BGP本地發起路由,weight值32768)
2、最高Local-pref值(若weight值相同,則選擇擁有最高local-pref值的路由,默認100)
3、本地發起(起源)路由(若local-pref值相同,則選擇BGP本地發起的路由:也就是下一跳爲0.0.0.0的路由。本地發起的路由有多種方式:network命令引入,重發布,彙總。)
4、最短AS-path(若本地發起路由無法比出最有路徑,則選擇擁有最短AS-path的路由。可以使用bgp bestpath as-path ignore 命令來忽略對AS-path的比較,而直接比較下一屬性。)
5、最低origin類型(若AS-path無法比較出最優路徑,則選擇擁有最低origin類型的路由。origin記錄了路由是如何進入路由表的,有三種方法:從IGP導入,從EGP導入,以及重發布。優先級:IGP > EGP > Incomplete)
6、最小MED值(若origin類型無法比較出最優路徑,則選擇擁有最小MED值的路由,並且只有當多個下一跳鄰居在同一個AS時,才能比較MED值。如果在多個不同AS的下一跳中比較MED,可使用命令bgp always-compare-med,需注意此命令在整個AS的路由器上配置,否則可能產生環路。MED默認值爲0,如果收到一條沒有MED值的路由,也認爲是0)
7、EBGP優於IBGP(若MED無法比較出最優路徑,則選擇下一跳爲EBGP的鄰居。EBGP的路由AD爲20,而IBGP的路由AD爲200,但BGP並不在EBGP與IBGP間比較AD值,比到此步時,是鄰居類型影響了最優路徑的選擇,而不是AD值的影響。注意:BGP聯邦內部沒有改規則)
8、在下一跳地址中,選擇擁有IGP metric最小的路由
9、如果配置了maximum-path,若存在多條等價路徑,會同時進路由表,即負載均衡
10、若下一跳都爲EBGP,則選擇最早學習到的路由,即時間最長的路由。(前提必須是external路由,聯邦內的EBGP路由當做IBGP處理)
11、選擇擁有最低router-id的下一跳路由
12、選擇擁有最短cluster-list的路由
13、選擇下一跳鄰居擁有最小IP地址的路由

七、BGP路由過濾
1、route-map
2、Prefix-list
3、Distribute-list
4、As-path ACL(基於正則表達式)
可以將ip as-path access-list 命令中的正則表達式用於BGP
關於正則表達式,下篇講解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章