屬性分類:負載均衡
◆公認:公認強制:AS-PATH ;next-hop ;origin(如何被引進BGP內的)ide
公認自由決定:local preference ; atomic aggregate彙總路由(原子聚合)
oop
◆可選: 可選傳遞(若是不支持,原封不動傳給鄰居)學習
aggregator(聚合者)用於標示彙總路由在哪被彙總的atom
community (團體屬性)spa
可選非傳遞(若不支持,也不傳給鄰居)
3d
med 惟一控制兩個AS之間且不會影響其餘AS的選路屬性
orm
originator-ID 防環。防止傳回起源路由器
router
cluster-list 防環。RR時,防止傳回起源cluster
blog
◆ weight屬性:
cisco私有,優選高的。
不發送給任何BGP鄰居,僅本地有效
########################################################################################
選路
BGP表中 一般 有不少到達同一目的地的路徑
BGP默認 不 負載均衡
路徑選擇基於屬性,並非基於帶寬等緣由
最佳路徑提交到路由表管理進程,並與其它路由協議對比管理距離。
路徑決策過程:
在沒有同步問題,下一跳可達的狀況下;
0.5,
1,更高的weight(本地路由器)
2,更高local-preference(本AS)
3,起源於本身的路由(下一跳=0.0.0.0)
4,更短的as-path列表
5,起源屬性 IGP<EGP<incomplete
6,更小的med
7,EBGP優於IBGP
8,選擇最近的BGP鄰居路由
8.5,
9, 若果配置的maxinum-paty,會負載均衡
10,對於EBGP,選擇最老的路由
11,更低的鄰居IBGP的路由器ID
12,更短的cluster-list
13,更小的鄰居IP
◆1,weight(cisco私有)
- 優選最大的,範圍0-65535,本地有效,控制本路由器
- 從BGP鄰居學到的路由weight=0;本地宣告、重分佈和彙總的weight=32768
修改方法:
1, neighbor x.x.x.x weight xxx (從x.x.x.x鄰居學到的路由都增長xxx)
2, route-map test permit 10
set weight xxx
只能在本地入方向作
實驗;
R1,R2運行ospf
R1,R2用loopback創建IBGP鄰居
R1-R3,R2-R3直連創建EBGP鄰居
R3:本地network3.1.1.1進bgp
R1 R2默認從R3學到
方法1: R1:nei 13.1.1.3 wei 1
方法2: ip prefix-list 3.1 permit 3.1.1.1/32
route-map wei permit 10
match ip address prefix-list 3.1
set weight 2
router bgp 100
nei 13.1.1.3 route-map wei in
◆2,local-prefrence
- 優選最大的
- 只在ibgp之間傳遞(AS內),EBGP之間不傳遞,即不能再ebgp的出方向作
- 從ebgp鄰居學到和本地產生的bgp條目 local-preference=100,
- 修改:
1,能夠經過 bgp default local-prefrence xxx 修改(只對EBGP傳來的路由起做用)
2,route-map loc permit 10
set local-prefrence xxx
不能再ebgp鄰居出方向作
- local-preference默認是100
sho ip bgp 中看到空,空=100
sho ip bgp x.x.x.x 看明細可見local-preference
實驗:
R1-R2 sho ip bgp 學到R3的路由都是從R2-R1 且能看到兩條
R1:
ip prefix-list 3.1 permit 3.1.1.1/32
route-map pre permit 10
match ip add prefix-list 3.1
set local-pre 101
route-map pre permit 1000
router bgp 100
nei 13.1.1.3 route-map pre in
sho ip bgp 顯示學到3.1.1.1從R3學到,且只能看到一條,
由於R1從R3學到的local-preference=101,而後傳給R2。R2學到3.1.1.1從R1的local=101,從R3的local=100,因此R2學到3.1.1.1顯示從R1學到,因此不會再傳回給R1,即R1只有一條從R3學到的
##########################################################################################
3,起源於本地路由器的路由
優選從本地始發的路由(包括本地network配置的重分佈,在IGP表中已經有一些須要被配置路由聚合的地址,在BGP中用aggregate-address命令配置的路由聚合)
注意:對於cisco IOS,若是從本地往BGP裏注入一條路由,缺省weight=32768,因爲這個weight值很大,會根據第一條選路原則成爲最優。
實驗:經過route-map 設置weigh=0 驗證前兩條沒法選出最優,經過選擇本地路由爲最優。
###########################################################################################
4,AS-PATH
- 除了用於選路,還能夠防環(EBGP之間防環 )。
- 前3條選不出最優時,優選AS-PATH 長度最短的條目
注意:修改AS-PATH 只能在EBGP 鄰居關係之間進行,IBGP鄰居關係是不能夠的
修改方法:
◆ 1,route-map。
as-path 只能夠在EBGP 鄰居關係的out和in方向去修改
- out 方向作:加在原本AS號的前=右邊
- In 方向作:加在原本AS號的後=左邊
注意:上圖,AS200 宣告3.1.1.1後,R1 R2默認經過R3的路徑爲最優。修改AS時必定不能用100,由於本身本事也是100,bgp防環就會收了。最好不要使用現網中與其餘AS相同的,最好使用BGP表中存在的AS,因此最好使用3.1.1.1的AS,即AS200。
R1: ip prefix-list 3.1 permit 3.1.1.1/32
route-map AS per 10
match ip add prefix-list 3.1
set as-path prepend 200
route-map AS per 1000
router bpg 100
nei 13.1.1.3 route-map AS in
clear ip bgp * soft
sho ip bgp
◆方法2
last-as 表示在離開這個路由器 最近的AS號,重複增長次數
route-map xx permit 10
match ip add 1
set as-path prepend last-as 數字(加多少次)
注: 當上述兩個方法同時配置時,哪一個生效?
set as-path prepend 200
set as-path prepent last-as 2
in/out 方向時,as-path prepend和last-as,都是last-as先生效,而後as-path prepend才生效
- 聚合 聚合後的路由包含多個AS{} 內的AS算幾個? 一個
- 聯邦 聯邦內()內的小AS算幾個? 一個也不算
- neighgor xxx remove-private-AS 刪除私有AS號,起源於本AS無效,在出方向作
◆ 如何跳過 as-path 選路原則
bgp bestpath as-path ignor
##########################################################################################
5,起源代碼 origin
- 經過前4條不能選出最優,優選最低起源類型的BGP路由
- 最低起源類型順序 IGP 優於 EGP 優於 incomplete,其中EGP方式如今不用了
- 經過network,aggregate方式產生的BGP路由的起源屬性是 i 。
- 經過重分佈產生的BGP路由的起源屬性是 incomplete
◆5.1:
i ----- igp //network x.x.x.x mask x.x.x.x
e ----- egp //不用了
?----- 重分佈
◆5.2:
origin在EBGP/EBGP的in/out方向均可以作
route-map xx permit 10
match ip add prefix-list 1
set origin incomlete (?)
##########################################################################################
6,MED
用途: 在兩個AS之間,有多個BGP鏈接的狀況下。MED用於影響從相鄰AS到本AS的路由選擇,即用於影響鄰居AS到本AS的路由從哪一個接口進來,這是經過向相鄰EBGP鄰居發送具備不一樣MED值的路由條目來實現的。可是須要注意的是:選路過程的實現是相鄰AS的路由器自身根據13條選路原則獨立完成,MED值的比較是前5條沒法選出最優時才起做用。
實驗:R3上設置3.1.1.1的路由,空着R1 R2到達R3的選路
R3:ip prefix-list 3.1 permit 3.1.1.1/32
ip route-map med-r1 per 10
match ip add pre 3.1
set metric 150
ip route-map med-r1 permit 1000
ip route-map med-r2 per 10
match ip add pre 3.1
set metric 200
ip route-map med-r2 per 1000
router bgp 200
nei 13.1.1.1 route-map med-r1 out
nei 23.1.1.2 route-map med-r2 out
clear ip bgp * soft
R1 R2:
sho ip bgp
MED的生成:
1,本地network方式生成的BGP條目,會帶上IGP的metric,(同時也會帶上路由的下一跳,開啓彙總後會被取消)會傳給全部鄰居。
2,若是從EBGP鄰居學習到的BGP條目的metric值傳遞給其餘IBGP鄰居,但不穿給EBGP。
-------- 以上表示MED 只傳遞一次EBGP鄰居 --------
3,若從IBGP鄰居學習到一條BGP路由的metric=0或其餘值,缺省不會傳給EBGP鄰居,顯示爲空
4,彙總方式產生的BGP條目,metric爲空
5,重分佈方式生成的BGP條目,metric爲IGP的cost、metric、hop若是開啓自動彙總會被清除
6,缺省狀況下,空metric視爲 0 。
優選最小MED值的路由(範圍0-4294967295)
A,只有在經過兩條路徑獲得第一個AS是同一個AS時才進行MED比較;任何子自治域的聯盟系統都會被忽略,即從不一樣聯邦AS學到的路由都會比較MED.
B,若是路由器配置了 bgp always-compare-med,在所有的路徑進行MED比較。可是這須要全體AS都同時啓用這個功能
C,若是路由器配置了 bgp bestpath med confed,將對全部僅包括AS_CONFED_SEQUENCE的路徑進行比較MED。默認不比較
D,若果接收到的路徑沒有分配MED,則將此路徑分配0,除非 路由器配置了bgp bestpath med missing-as-worst,將被看作MED值爲4294967295的路由將在注入到路由表以前改成4294967294
bgp deterministic-med
是指把路由過來的MED值進行分組
同一個AS的分同一組
其餘AS的分一組
先比較同一個AS的med值,在和其餘AS的med值比較路由器那個最小的router-ID
###########################################################################################
七、EBGP > IBGP
與EBGP的AD小於IBGP的AD無關
EBGP>聯盟EBGP>EBGP
###########################################################################################
八、最近的BGP鄰居
指的去往BGP鄰居用的IGP路由的metric值
對EBGP,IBGP鄰居都生效
EBGP和IBGP選路的最後一條
###########################################################################################
九、配置了maxinum-path [IBGP],存在多條等價的路徑,會負載均衡
其實這不算是選了的原則,是指當前面的8條選不出最優時,在BGP的進程下配置了maxinum-path命令後,會產生負載均衡‘
router bgp 3
maximum-path ?
<1-6>number of path
ibgp Ibgp-multipath
非等價負載均衡----bgp dmzlink-bw // 先進程啓用
neighbor x.x.x.x dmzlink-bw // 再對鄰居啓用
###########################################################################################
EBGP之間選路的最後一條,以後11-13都只針對IBGP
十、對於EBGP。優選存在時間最長的路由
bgp bestpath compare-routerid //跳過第10條選路,從11條選(最小router-ID)
- 優選最老的路由(最早被學習的路由)
1,次步驟能夠將路由擺動的影響減到最小,由於新接收到的路徑不會取代老的,即便這條新接收的路徑是經過下面說起到的額外路徑選擇標準來進行選擇的。這使得只在IBGP路徑下應額外的選擇步驟更有意義。
2,次步驟能夠被bgp bestpath compare_routerid跳過
3,若是路由器標誌是同樣的,此步驟能夠被跳過,由於這說明命路由器正在從本身那裏路由
4,若是當前沒有最優路由,此步驟能夠被跳過,當提供摸個路徑的路由器宕機,就會發送丟失
##########################################################################################
11,lowest router-ID
優選最小的 IBGP 的rotuer-ID
- 在有RR的狀況下 不比較router-ID,比較起源ID,起始者標示將代替router-ID在選路中的做用,不會用到第11條選路原則,會用12,13條選路。
- 一個路由器從多個RR收到相同路由進行最優選擇時,第11條選路用的router-ID將被更爲originator-ID(此ID即便本AS學得路由的第一跳路由器的router-ID,是RR的一個client),而不是RR的router-ID,所以若是BGP路由只是從一個ASBR學校到而後傳入AS內部,將不會用的第11條,用12或13
- 若是在同一時間學習到多條到同一目的地的路由,優選最小BGP-router-ID的路由,注意,若是一個路徑包括路由反射器
RR的狀況下不比較路由器的router-ID,而是originator-ID,即被反射的client的router-ID
###########################################################################################
12,cluster list length
多條路徑的始發路由器ID相同,那麼選擇cluster-list短的
由於每進通過一個RR,cluster-list會加上這個RR的clusterd-id
##########################################################################################
13, lowest neighbor IP address
BGP優選來自最低的鄰居地址的路徑,是BGP的neighbor配置中的地址