一、BGP 13條選路原則
1、W ,即屬性 Weight( 思科的私有屬性,本地有意義,越大越優先,默認情況下從鄰居學到的weight值爲0,只能用在in方向)
A、針對鄰居修改來自該鄰居的所有路由的Weight
B、明細的用Route-map修改某些路由
2、L ,即Local Preference (本地優先級)
通常情況用於離開本AS的選路,默認爲100,可以在IBGP鄰居之間傳遞,不會更新真正的EBGP鄰居
全局修改;Route-map
3、O ,即屬性Sourced(本地起源)
4、A,即屬性AS-PATH
5、O ,即“Origin”(起源代碼)
6、M,即屬性MED(多出口分離器)
7、E,屬性EBGP(優於IBGP)
8、M,即屬性代表到達更新源的Metric值小的進行下一跳
9、L,即屬性負載均衡
10、O,即屬性建立時間更久的EBGP鄰居
11、R,屬性更小的RID
12、C,屬性更短的Cluster-list
13、優選來自用最低地址建立BGP連接的鄰居的路由條目
【Next-hop 可達是選路的前提】
二、BGP選路拓撲
我們在R1和R2配置EIGRP,通告lo0和直連關閉彙總,並建立IBGP鄰居關係,同時R1和R2分別與R3建立EBGP鄰居關係. R3 BGP通告兩個lo (lo0 33.1.1.1 lo1 3.3.3.3)
R1:
R2:
R3:
1、使用Weight值來干預BGP選路
BGP優先權重最大的,默認從BGP鄰居學到的路由的Weight值爲0,從本設備宣告重分佈或者彙總路由的權重值爲32768,我們針對鄰居修改來自鄰居的所有路由的權重值,增大來自R2的所有路由權重值,使R1優先選擇R2作爲下一跳:
以上R1所有路由都選擇R2作爲下一跳,如果明細來干預選路,我們需要用到Route-map:
R1(config)#ip prefix-list 1 seq 5 permit 3.3.3.3/32
R1(config)#route-map Weight permit 10
R1(config-route-map)#match ip address prefix-list 1
R1(config-route-map)#set weight 2 ---設置權重爲2,即優於來自R2的路由,此時是有問題的
R1(config)#
router bgp 100
R1(config-router)#neighbor 13.1.1.3 route-map Weight in---只能在in方向調用
R1#clear ip bgp * so
此時R1上3.3.3.3的路由權重爲2已經優於R3,但是我們發現33.1.1.1的路由只有一個下一跳,這就是剛剛提到的問題,route-map不僅僅可以設置BGP的屬性,當匹配了前綴列表或ACL時一定要考慮其他的路由是否還需要收取,R1還需要收取來自R3的其他路由條目
修改:R1(config)#route-map Weight permit 20---只需要增加一個序列號,行爲是permit,那麼匹配條件爲任意
2、使用Weight值來干預BGP選路,控制R2 ,R1上33.1.1.1 路由選擇R2作爲下一跳
修改本地優先級後只更新給IBGP鄰居,也就是R2修改本地優先級後更新給R1,不會更新R3:
R2(config)#router bgp 100
R2(config-router)#bgp default local-preference 101 ----全局修改
我們使用Route-map調用,來自R3的3.3.3.3的路由R1直接走R3,R2走R2到達R3,只能在in方向生效,R1更改本地優先級後更新給IBGP鄰居R2:
查看R1和R2,R1 33.1.1.1通過R2到達R3,R2查看3.3.3.3路由通過R1到達R3:
R2查看收到R1更改的BGP本地優先級屬性,3.3.3.3路由本地優先級同樣更改
爲
102:
3、O(Organization) Sourced,本地起源
R2一個環回口被本地通告時用Route-map修改爲Weight=0
R1重分佈靜態路由得到的2.2.2.2 更新
R2(config)#int lo 1
R2(config-if)#ip address 2.2.2.2 255.255.255.255
R2(config)#route-map Test
R2(config-route-map)#set weight 0
R2(config)#router bgp 100
R2(config-router)#network 2.2.2.2 ma 255.255.255.255 route-map Test
本設備生成的路由在Weight無效(0)當然本地優先級默認爲100情況下,是最優的。
(valid, sourced, local, best)
4、A (Asia)AS-Path ---越長越不優先
33.1.1.1選擇R2作爲下一跳,3.3.3.3選擇R3作爲下一跳
R1#sho access-lists
Standard IP access list 33
10 permit 33.1.1.1 (1 match)
R1#sho run | s route-map ASPATH
neighbor 13.1.1.3 route-map ASPATH in
route-map ASPATH permit 10
match ip address 33
set as-path prepend 200 200
route-map ASPATH permit 20
有一條隱含的命令bgp bestpath as-path ignore ---as-path ignore隱含的
R1(config-router)#bgp bestpath ?
compare-routerid Compare router-id for identical EBGP paths
cost-community cost community
igp-metric igp metric
med MED attribute
R1(config-router)#bgp bestpath a i ----方便記憶使用該命令進行操作,忽略as-path選路
忽略as-path選路後R1上到33.1.1.1路由直接到R3而沒有選擇AS-path短的路徑到R2:
5、起源代碼干預選路--O ,即“Origin”(起源代碼)
R1(config)#router bgp 100
R1(config-router)#no neighbor 13.1.1.3 route-map ASPATH in
R1(config-router)#no bgp bestpath as-path ignore
以上是刪掉干擾的因素
i---igp(通告、aggregate)
e--egp (不存在)
?--incomplete(重分佈產生的路由 )
i優於e,e優於?
需求:33.1.1.1選擇R2作爲下一跳
R1(config)#route-map ORIGIN pe
R1(config)#route-map ORIGIN permit 10
R1(config-route-map)#match ip address 33
R1(config-route-map)#set origin incomplete ----設置incomplete
R1(config)#route-map ORIGIN permit 20
R1(config-route-map)#router bgp 100
R1(config-router)#neighbor 13.1.1.3 route-map ORIGIN in ---針對鄰居R3設置incomplete
在以上4個選路都一樣情況下,i由於?所以選擇R2作爲下一跳:
關注分享該WX Gongzhonghao: 【huayinetwork】持續分享乾貨網絡技術,公開答疑!
同時爲方便廣大網絡愛好者一起共同學習交流,開設了華爲&思科網絡技術交流qun,qun裏上傳大量免費學習資料,定期技術答疑,歡迎廣大網絡愛好者進羣學習交流!