BGP - 5,BGP屬性


metric,自己決定去哪個EBGP鄰居
local-pre,影響AS內部IBGP鄰居的路由決策
med,影響AS外部EBGP鄰居的路由決策
 
1,BGP屬性
    公認傳遞(well-known mandatory ):必須支持,而且必須包含,包括as-path,next-hop,origin
    公認非傳遞(well-known discretionary):必須支持,但是可以不包含,包括local-preference
    可選傳遞(optional transitive ):可以不支持,但是必須往下傳,包括community
    可選非傳遞(optional nontransitive ):可以不支持,也可以不往下傳,包括med,weight(思科私有)
 
2,Origin屬性
   查看路由的origin屬性,可以用show ip bgp,在最后一列的path列中。
    明確了路由的來源,有三種:
    IGP:i,通過BGP network命令得來,即起源於IGP,因為BGP network必須是路由表中有的
    EGP:e,由老的EGP協議重發布來,現在沒了
    incomplete:?,從其他渠道學來,重發布路由都是這個標記
    IGP>EGP>incomplete
 
    可以將origin改成E,用route-map做,eg:    
    (config)# ip prefix-list 10 permit 192.168.1.0/24    
    (config)# route-map ABC permit 10
    (config-route-map)# match ip address prefix-list 10
    (config-route-map)# set orign egp 30   /改成egp,AS號30
    (config)# route-map ABC permit 20
    (config)# router bgp 20
    (config-router)# neighbor x.x.x.x route-map ABC in
    備注:BGP中要改屬性的值,基本都要用到route-map,route-map可以用prefix-list或者ACL,需要考慮"方向",是不是要打"空語句"
 
3,AS_PATH
    經過的AS號,防環。
    僅當路由被發往其他AS時(EBGP peer),BGP路由器才會將AS號追加至AS_PATH中。也就是說,如果想修改AS_PATH屬性,必須在AS邊界路由器上執行,對IBGP鄰居執行修改AS_PATH是無效的。
 
1)AS_PATH路徑屬性的四種類型
    AS_SEQUENCE:有序AS號集合
    AS_SET:無序AS號集合
    AS_CONFED_SEQUENCE:聯邦有序AS號集合
    AS_CONFED_SET:聯邦無序AS號集合
   
2)AS_SEQUENCE
    途徑AS號的集合,例如300,100。即去往該目的地址需要途徑300、100。
    

 

3)AS_SET
    為了防環,加入了明細路由AS號的集合,但是明細AS號集合是無序的。
    例如300,{200,100},R3匯總時使用了AS_SET命令繼承了明細路由的AS_PATH
   

 

 
4)使用route-map修改AS_PATH
   

    通過更改AS_PATH影響選路。R2做如下變更:

    (config)# ip prefix-list 10 1.1.1.0/24
    (config)# route-map ABC permit 10
    (config-route-map)# match ip add pre 10
    (config-route-map)# set as-path prepend 666
    (config)# neighbor 3.3.3.3 route-map ABC out  /對鄰居R3出方向掛route-map ABC,影響的是控制層面
    備注:
    R3收到的路由AS-PATH是200,666,i。如果是R3的in方向掛route-map ABC,則是666,200,i。
    插入不存在的AS號有風險,萬一真的遇到AS666會被拒收,所以可以插入自己的AS號,即200。
 
5)AS_PATH的幾個命令
    neighbor 路由來源鄰居 allowas-in 幾個我的as號    /允許接收包含自己AS號的路由
    bgp bestpath as-path ignore /讓思科路由器決策過程中忽略AS-path屬性
 
4,NEXT-HOP
next-hop結合同步,決定了路由能否打上大於號,即最優。該地址要能訪問。  
1)來自EBGP鄰居R1的路由,自己是R2
    R1(AS100)--------R2(AS200)
    next-hop即為EBGP鄰居R1的更新源地址
2)來自IBGP鄰居R2的路由,並且是AS外的路由,自己是R3
    R1(AS100)--------R2(AS200)--------R3(AS200)
    next-hop還是EBGP鄰居R1的更新源地址,不會發生改變
3)來自IBGP鄰居R2的路由,並由AS內BGP路由器引入
    如果通過aggregate-address引入,則next-hop等於執行匯總路由器的更新源地址
    如果通過network或者重發布引入,那么注入前的IGP下一跳稱為BGP的next-hop
    如果本地BGP宣告者成了下一跳地址,那么在本地BGP RIB表中下一跳字段就是0.0.0.0。(備注:這段話的意思應該是如果本地產生的即本地network或者aggregate的,那么下一跳就是0.0.0.0,選路原則第三條就是優選本地產生的。但是李桃梅視頻中不是很理解這一條,稱:優選next-hop為0.0.0.0的路由,實際上不會遇到?因為本地產生又從其他地方傳來,意味着環路?)
4)通過next-hop-self可以更改next-hop屬性
5)MA網絡上的next-hop,如果R1、R2、R3是EBGP鄰居關系,來自三個不同的AS,但是他們是連到同一MA網絡,則R1傳R2,R2傳R3后,next-hop仍然為R1。
6)NBMA網絡上的next-hop,同MA網絡,所以需要注意R3至R1的PVC是通的。
    
5,LOCAL-PREFERENCE
    優先選擇local-preference值大的。默認值:100。
    local-preference只在AS內部IBGP鄰居間傳遞,影響出AS流量。用來通告給IBGP鄰居,怎么離開本AS。
    去往同一目的地可以經過不同AS時,由2條路由的local-preference決定。
    如果EBGP peer間收到的路由路徑屬性中攜帶local-preference,會觸發notification報文,造成會話中斷。
    收到EBGP peer發來的路由更新時,local-preference的值是空的,會賦上默認值100。
    本地network的路由、重發布的路由,默認local-preference值也是100。
 
    舉例
   

 

    在R1或者R4上做,告訴R3怎么離開本AS去往AS2                                                                   
    方法1:改所有
    (config-router)# bgp default local-preference 111                                  
    備注:比另一個大就行,改動后show ip bgp有些能顯示/有些不能顯示,在進程中做不用指定鄰居。看不到local preference的可以"show ip bgp 地址/掩碼"看到是否起效。                             
    擴展,該命令對下列獲取的路由是否起效:a,network;b,EBGP:起效;  c,IBGP;d,聚合的路由                        
    方法2:改部分路由
    要求R3訪問某些網段從R1走,同weight,用map,在R1上做   
    ip prefix-list 101 permit 2.2.2.0/24
    route-map ABC permit 10
        match ip add prefix-list 101
        set local-preference 111
    route-map ABC permit 20
    neighbor 3.3.3.3 route-map ABC out
 
6,COMMUNITY
1)基本概念
    可選:路由器有可能不識別該屬性              
    默認不認識,需要打一條命令:neighbor X.X.X.X send-community(讓對方認識)         
    傳遞性:社團屬性只在neighbor的鄰居有效,不會繼續往下傳,要繼續往下傳還是通過上面的命令              
 
2)route-map中設置屬性值    
    主要包括:              
        no-advertise:攜帶此屬性的路由不會通告給任何BGP鄰居         
        no-export:攜帶此屬性的路由不會傳出大AS(聯邦之間仍然會傳遞,聯邦內部也會傳遞)
        local-AS:攜帶此屬性的路由不會傳出小AS(聯邦之間也不會傳遞,聯邦內部也會傳遞,沒有聯邦即只在本AS傳遞)      
    備注:沒有做聯邦的話no-export和local-as效果是一樣的    
     
   配置實例:
   ip prefix-list 11 permit 11.11.11.0/24
   route-map test permit 10
       match ip add prefix-list 11
       set community 100:11
   router bgp 100
       network 11.11.11.0 mask 255.255.255.0
       neighbor 2.2.2.2 remote-as as 200
       neighbor 2.2.2.2 send-community
       neighbor 2.2.2.2 route-map test out
 
3)使用ip community-list匹配community值
4)在community-list中刪除特定的community值
5)COST community
    參考紅茶三杯筆記
 
7,MED
   MED值越小越優先,思科默認MED為0。
    用於AS之間影響路由,兩條路由來自同一相鄰AS才會比較,即AS_SEQUENCE中的第一個AS號相同才會比較。不會跨AS傳遞。
  

 

1)MED值設置方法
    IGP引入BGP時關聯route-map進行設置
    對BGP peer應用in/out方向的route-map進行設置
    非route-map(自動)方式:使用network或者redistribute引入IGP時,MED繼承IGP的metric;使用aggregate方式引入時,MED為空。
2)MED值的傳遞
    MED值在IBGP之間傳遞沒有問題。
    MED值在EBGP之間傳遞要看路由是否起源自己,如果起源自己則傳遞,不是起源自己不傳遞。
3)MED繼承IGP的metric
    network本地IGP,MED繼承該IGP的metric
    network本地直連網段,network本地靜態路由,MED值都是0
    redistribute本地IGP,MED繼承該IGP的metric
    redistribute本地直連網段,redistribute本地靜態路由,MED值都是0
4)其他配置命令
    bgp always-compared-med:默認只比較來自同一AS的MED,如果想對所有路徑都比較,則開啟此命令,要做建議整個AS都做,避免環路。
    bgp bestpath med missing-as-worst:默認收到MED屬性丟失的配置為0,配此命令則配置為最大值。
    set metric-type internal
    bgp bestpath med confed
    bgp deterministic-med
    default metric x
5)舉例
   
    R1和R4都把8.8.8.0/24通告給了R2,不做任何策略的話,會比較到第十條,優選routerID較小的R1。                             
    要控制AS2怎么進入AS1訪問8.8.8.0/24時,通過修改R1/R4向R2通告路由的MED值。                             
    方法一:所有路由設置med,可控的只有AS1,AS2是看不到的。(待實驗,貌似沒有方法二?)                        
    1)寫MAP:
    route-map MED                        
    set metric X                        
    2)調用:neighbor 12.1.1.2 route-map MED out                        
    驗證方法:帶源地址的ping,debug ip bgp updates         
    
8,Atomic_Aggregate及aggregator
    Atomic_Aggregate是公認自決屬性;aggregator是可選可傳遞。
    用於提示做了匯總路由的始發AS和始發路由器。
    如果加上了as_set則路由已經包含明細路由的AS號,這2個屬性就沒有了。
 
9,Originator_ID和Cluster_list
    是RR使用的可選非傳遞屬性,用來防止環路。
    Originator_ID:本AS中路由發起方的IBGP RouterID。
    Cliuster_list:RR在反射路由的時候會創建或更新Cluster_list,下面幾種情況,RR不會創建該屬性:RR始發的路由;向EBGP鄰居發送路由時清除該屬性;從EBGP鄰居收到反射給client/非client時不會創建。
1)取值示例
   
    注意,originator_id是R2,cluster_list是R3
2)cluster_id可以影響BGP選路,優選經過cluster_id少的路徑。
 
10,Weight
    思科私有,作用范圍是本路由器(不傳遞),不會被包含在update消息中,不會傳遞給任何BGP鄰居。
1)weight的值
    weight值越大越優先。
    從其他鄰居學來的默認為0
    本地network的是32768
    本地重發布直連、重發布靜態的是32768
    本地匯總的BGP路由是32768
    總結:從鄰居學來0,自己的32768
2)舉例
  
    如上圖,R2上有路由,傳播至R3,在R3做,設置路由的weight值,決定是通過R1/R4訪問R2
    方法一:改所有
    (config-router)# neighbor 地址A weight X     /這里地址A是R1或R3的更新源地址嗎?待確認    
    方法二:改部分路由
    要求R3訪問某些網段從R1走,用map(ACL,prefix-list)         
     eg:    
     ip prefix-list 2 permit 2.2.2.0/24    
     route-map ABC permit 10    
        match ip address prefix-list 2    
        set weight 3    
     route-map ABC permit 20     
     neighbor 1.1.1.1 route-map ABC in  /提供了weight值,優先從R1走
 
11,BGP選路原則
     前提條件:1)同步,2)下一跳。即有2條最優路(大於號)時才會涉及到選路。此外如果被入方向BGP策略拒絕+soft reset,或者damped,也不會涉及選路。
     研究BGP屬性需要着重分析點:傳播范圍,默認值,越大越好/越小越好
11.1,概述
     BGP路由信息庫RIB,包含三個部分:
     Adj-RIBs-IN:來自對端的,未經處理的消息
     Loc-RIB:經過本地策略后使用的路由
     Adj-RIBs-OUT:傳遞給對端的路由
     BGP的決策過程,即對Adj-RIBs-IN中的路由使用本地策略,並將選定或修改的路由放到Loc-RIB和Adj-RIBs-out中。
11.2,選路原則 
     1)weight(越大越好):本路由器上的路由優先級
     2)local-preference(越大越好):發給IBGP鄰居,怎么離開本AS
     3)起源於本地(如network或aggregate的,即下一跳是0.0.0.0,以下依次遞減:default-originate,default-information-originate,network,redistribute,aggregate-address)
     4)AS-PATH(越短越好)
     5)origin屬性(i>e>?)    
     6)MED(相當於IGP的metric,越小越好):告知EBGP鄰居,怎么進入本AS
     7)EBGP鄰居優於IBGP鄰居(聯邦中也是) 
          這條指的是同一條路由從BGP學到,可以是IBGP也可以是EBGP,不會根據AD值優選EBGP,而是要根據選路原則逐條判斷,比到這一步時還會優選EBGP。
          AD值只用於同時從不同協議,IGP和BGP比。
     8)優選最近的IBGP鄰居
     9)基本用不到(優選最老EBGP鄰居傳來的路由)
     10)比較route-id(越小越好)
     特殊情況:
     11)有RR時,優選Cluster-id最短的
     12)如果還是比較不出   ,即同一個鄰居建了多條鏈路,優選ip地址最小的
     常用的只有weight,local-preference,med這3個屬性。
11.3,BGP的負載均衡
1)等價負載均衡
     如果選路原則1~8相同,並且在BGP進程下面配置了maximum-paths {ibgp} n,n取2~6,可以配置對EBGP鄰居、IBGP鄰居執行負載均衡。
     BGP表中只會優選一條,但放入路由表有2條。
     EBGP等價負載均衡只有對來自對一AS的不同EBGP鄰居的路由才有效,來自不同EBGP鄰居的路由無效。
2)非等價負載均衡(待修訂補充)
     neighbor 2.2.2.2 dmzlink-bw
     send-community
     
12,BGP選路環路問題案例

 

1267屬於AS123,345屬於AS456,23和56分別建立EBGP鄰居關系,26向AS456注入默認路由,R4向AS123宣告一條4.4.4.4的路由,26分別執行雙向重分布,且ospf外部路由也重分布到BGP,正常情況下:
R2的BGP表:最后比到第7條,EBGP鄰居優於IBGP鄰居
R6的BGP表:最后比到第7條,EBGP鄰居優於IBGP鄰居
工作正常
 
R2和R3之間的鏈路斷開后
R2從EBGP鄰居學不到該路由了,但R6的BGP學到了該路由,然后重發布到OSPF
R6從OSPF學到該路由,優選了該路由?

又重發布回OSPF....

R2又變為

 R6又變為:

最后路由出現了環路,造成R1 trace R4的報文在R2和R6之間環路,所以重發布時帶上OSPF外部路由可能會出問題。

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM