BGP屬性與選路

在沒有做負載均衡的前提下,BGP認爲一定要選出一條最優路徑,在用13條規則進行選擇前,該BGP路由必須滿足:
 
1. 該路由出現在BGP拓撲表中   2. 該路由的下一跳可達
 
1)AS-Path  
 
公認必遵屬性,跨越As邊界時,路由信息的As-Path會加上發送者的As號,若檢測到重複的AS號,則丟棄分組。BGP的破環機制不如IGP那樣精細,因爲本身針對As,拓撲不會很複雜。
 
2)Origin  
 
公認必遵屬性,Origin 指明瞭當前路由是從哪裏得到的。
 
IGP(i)是BGP用Network命令通告的IGP路由表中存在的路由
EGP(e)是從eBGP鄰居那裏得到的路由
Incomplete(?)是通過IGP重發布進BGP而得到的路由
 
3)Local Preference   
 
公認必遵屬性,Local Preference 僅本As有效,由iBGP發送,選擇本As內一臺Local Preference大的作爲本As的出口路由器。
 
4)MED  
 
任選不可傳遞屬性,發給eBGP鄰居,控制eBGP選路,在另一個As內選擇一個MED小的作爲該As的入口路由器。
 
5)Weight   
 
思科專有屬性,僅本Router有效,不發給任何鄰居,該屬性是讓Router自己選擇路怎麼走,最高Weight值路徑優先被選用。
 
6)Next-Hop
 
公認必遵屬性,Next-Hop 描述了到達目的地的下一跳路由器的IP地址,具體情況如下:

凡是有路由信息通告給 iBGP 鄰居,Next-Hop不變
 
如果iBGP鄰居沒有到達這個Next-Hop的IGP 路由就不會把該BGP 路由加上“>”,這種情況要在該中間路由器上敲入命令:neighbor ip address next-hop-self  (只是在下一跳不可達的情況採用)。

凡是有路由信息通告給 eBGP 鄰居,Next-Hop 改寫爲自己的更新源地址
 
比如B 將鄰居A 的路由信息通告給eBGP鄰居C,並告訴他:“你通過我的更新源地址2.2.2.2可以到達A那裏”。
 
在B 上使用命令:neighbor ip address next-hop-unchanged 可以阻止改寫動作,這時B向C通告的就是A的更新源地址1.1.1.1,如果C通過IGP可達1.1.1.1,這樣做沒有問題。
 
 
TOP Seven:(一般夠用)
 
Weight,Loc都比大,前者選本Router出口,後者選本AS出口
 
As_Path看最短,本地路由有優勢,ie?比來源
 
MED比誰低,選個外部AS的好入口 
 
eBGP路由比iBGP強,還得中間還夾個聯盟
 
1)優選Weight 最大的路由
 
Weight值僅本地有效,所以一般這樣實現:A和B通告給我相同的一條路由,我想選A,就利用Route-map將A通告給我的路由的Weight都Set高一些。
 
注意Route-map一般是要限定具體路由時才用,如果沒有路由的針對性,用 neighbor 1.1.1.1 weight 200 這樣的命令就行。
 
2)選擇LocPrf 最大的路由
 
LocPrf 即本地優先級,僅AS內有效。注意一般是對EBGP鄰居傳過來的路由進行LocPrf 值的修改(neighbor + route-map in),然後自動在本AS中的IBGP鄰居中傳播這個屬性,告訴整個AS內部去往外部AS的那條路由由我這裏走。
 
這樣實現是由於iBGP 鄰居的水平分割原則,使得修改iBGP 鄰居通告路由的LocPrf 值沒有任何意義,因爲沒有延續性的傳遞。
 
3)選擇本路由器通過Network命令或者IGP重發布進來的路由
 
類似於地方保護主義,認爲自己的東西是比較可靠的,關鍵字:本路由器
 
4)選擇AS_PATH 路徑最短的路由,即經過的AS數最少。
 
5)選擇Origin最優的路由,優先級是  i  >  e  >  ? 
 
【用Network通告的路由】>【eBGP鄰居通告的路由】>【IGP重發布進來的路由】
 
6)選擇MED值最低的路由,MED 用來選擇外部AS的入口
 
即當有去往同一個目的地的兩條路由,通過同一個外部AS的兩個eBGP 鄰居通告的時候,纔會比較MED 來選擇,以哪一臺路由器作爲該AS的入口。
 
如果路由器上配置了 bgp always—compare—med  ,在全部的路徑進行MED比較。但是這需要全體AS都同時啓用這個功能,否則有可能發生路由環路。
 
如果路由器上配置了 bgp bestpath med  confed ,將對所有隻包括AS_CONFED_SEQUENCE的路徑進行MED比較(即路徑是起源於本地聯盟)。
 
如果接收到的路徑沒有分配MED值,則將此路徑分配爲0,除非路由器上配置了bestpath missing-is-worst,將被看作MED值爲4,294,967,295的路由將在注入到BGP路由選擇表之前被改爲4,294,967,294。
 
7)優選eBGP路由,其次是聯盟(Confederation)外部路由,再次選iBGP路由
 
8)優選具有最低IGP開銷的路由
 
由於該Metric 值是IGP的,所以不能簡單的通過在接口上調整bandwith 來實現。
 
9)如果使用了BGP多路徑(默認是只能有1條最優路徑),同時從相鄰的AS或者子AS,學習到多條外部或聯盟外部路由。這些路徑均會放入路由表中,當發送更新其他路由器的時候,最舊的路徑被認爲是最優的
 
10)如果都是外部路由,優選最先學習到的
 
11)如果在同一時間,學習到多條到同一目的地的路由,優選最小BGP-router-ID的路由
 
注意如果一個路徑包括路由反射器屬性,起始者標識將代替路由器標識在路徑選擇過程中起作用。
 
12)如果路由從路由反射器上學習到,優選最小Cluster-ID(BGP_ID of the route reflector)長度的路由
 
如果運行客戶機和其他反射器族中的RR/Clients之間做對等連接,路由器必須知道BGP協議中的RR的具體配置。
 
13)優選具有最低對等體地址接收到的路徑
 
這個地址是本地對等體路由器在其上配置TCP鄰居並與遠端對等體建立連接時採用的地址,即neighbor後面的IP地址。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章