前期回顧
上節(jié)我們主要講解了BGP通告原則與路由處理
BGP選路問(wèn)題
IGP協(xié)議中,rip是通過(guò)跳數(shù),ospf和ISIS是通過(guò)開(kāi)銷(xiāo)值募狂,
那在BGP中如何進(jìn)行選路呢?
BGP環(huán)路問(wèn)題
如何進(jìn)行防環(huán)是每個(gè)協(xié)議都要考慮的問(wèn)題
BGP路由屬性
大致可以分為公認(rèn)屬性和可選屬性
1角雷、公認(rèn)屬性:所有運(yùn)行BGP協(xié)議的路由器都能理解的屬性
*公認(rèn)必遵:大家都知道并且必須滿(mǎn)足祸穷,BGP的Update報(bào)文消息中必須包含的屬性
Origin(起源屬性)
AS Path
Next hop
*公認(rèn)任意:大家都知道,但是需不需要可以根據(jù)需求自由選擇勺三,不必存在于Update報(bào)文中雷滚。
Local Pref
Atomic aggregate
2、可選屬性:廠家開(kāi)發(fā)的某些滿(mǎn)足特殊需求的屬性吗坚,但是并不是所有路由器都理解的屬性祈远,私有屬性。
*可選過(guò)渡:BGP雖然不能識(shí)別該屬性商源,但是我可以把它接受并傳遞下去發(fā)布給其他的鄰居
Aggregator
Community
*可選非過(guò)渡:BGP可以忽略包含該屬性的消息并且不向它的鄰居發(fā)布车份。
MED
Next hop特點(diǎn)
默認(rèn)情況下傳給EBGP鄰居的BGP路由的下一跳設(shè)置為自身向這個(gè)EBGP鄰居發(fā)送BGP報(bào)文的源地址。
默認(rèn)情況下從EBGP鄰居得到的BGP路由再傳給IBGP鄰居時(shí)牡彻,此BGP路由的下一跳默認(rèn)不變扫沼,可以使用peer next-hop-local修改下一跳。
默認(rèn)情況下凡是自己產(chǎn)生的BGP路由在傳給任何BGP鄰居時(shí)讨便,總是把此路由的下一跳設(shè)置為向BGP鄰居發(fā)送BGP報(bào)文的源地址
練習(xí):以下如果都用環(huán)回口建立鄰居關(guān)系充甚,最后答案是多少?
1.1.1.1
2.2.2.2
3.3.3.3
同AS傳遞下一跳不變霸褒,不同AS之間傳遞下一跳需要改變伴找。
Origin起源屬性
Origin屬性定義路徑信息的來(lái)源,標(biāo)記一條路由是怎么成為BGP路由的废菱。
我們可以看到BGP路由表中出現(xiàn)Ogn列技矮,就代表起源屬性
BGP路由的起源屬性有三種:
1抖誉、i:表明BGP路由是由network命令發(fā)布的
2、衰倦?:imconplete袒炉,不完全的,表明BGP路由是由import-route發(fā)布的
3樊零、e :表明BGP路由時(shí)從EGP協(xié)議引入的BGP協(xié)議目前已經(jīng)全面退出網(wǎng)絡(luò)了,但是我們可以通過(guò)路由策略將路由的起源屬性進(jìn)行修改為e我磁,一般起源屬性是一種選路屬性,可以用于BGP路徑的選路驻襟,通過(guò)修改起源屬性可以控制BGP路徑 夺艰。
三種屬性的優(yōu)先級(jí):i>e>?
我們?cè)赗1上引入以下路由,
[R1]ip route-static 192.168.1.0 24 NULL 0
[R1]bgp 1
[R1-bgp]import-route static
AS_PATH
功能:
1沉衣、選路郁副,經(jīng)過(guò)AS數(shù)量少的路徑最優(yōu)
2、在AS之間實(shí)現(xiàn)BGP路由防環(huán),從EBGP鄰居得到路由時(shí)豌习,檢查該路由的AS_PATH屬性存谎,如果AS_PATH屬性中攜帶該路由自身的AS號(hào),則丟棄該路由肥隆。
3既荚、當(dāng)BGP路由傳遞給EBGP鄰居時(shí),會(huì)將自己的AS號(hào)添加到ASpath的最前邊巷屿。
當(dāng)BGP路由傳遞給IBGP鄰居時(shí)固以,不會(huì)添加自己的AS號(hào)。
4嘱巾、AS_PATH可以被修改,華為在EBGP和IBGP鄰居之間都可以被修改诫钓,思科只能在EBGP之間進(jìn)行修改
ps:AS內(nèi)部是怎么進(jìn)行防環(huán)的呢?
IBGP的水平分割:通過(guò)IBGP獲得的最優(yōu)路由不會(huì)發(fā)布給其他的IBGP鄰居
我們繼續(xù)在R1上進(jìn)行如下配置
[R1]route-policy aspath permit node 10
[R1-route-policy]apply as-path 234 additive
[R1-route-policy]q
[R1]bgp 1
[R1-bgp]peer 10.1.12.2 route-policy aspath export
[R1-bgp]q
我們?cè)赗1配置了一條234的AS path
現(xiàn)在抓包看一下旬昭,
使用命令將BGP路由手動(dòng)觸發(fā)更新
<R1>refresh bgp all export
發(fā)現(xiàn)這條路由里已經(jīng)添加了234的AS_PATH
此時(shí)R2的路由都不接受R1傳遞的1.1.1.1了
<R2>terminal monitor
<R2>terminal debugging
我們開(kāi)啟R2的debug模式
然后在R1上進(jìn)行BGp刷新
<R1>refresh bgp all export
<R2>
Aug 8 2021 14:21:12.212.1-08:00 R2 RM/6/RMDEBUG:
BGP.Public: 10.1.12.1 MSG ignored : Looping in ASPATH value,
while recv UPDATE .#這條消息被忽略,因?yàn)橛衛(wèi)ooping環(huán)路
Aug 8 2021 14:21:12.312.3-08:00 R2 RM/6/RMDEBUG:
BGP.Public: Recv UPDATE from 10.1.12.1 with following destinations :
Update message length : 58
MP_reach : AFI/SAFI 1/1
Origin : Incomplete
AS Path : 1 234
Next Hop : 10.1.12.1
MED : 0
BGP.Public: Recv UPDATE(Withdraw) MSG from 10.1.12.1 with following destination
s :
192.168.1.0/24,
這表示路由器接收到了192.168.1.0路由來(lái)自10.1.12.1菌湃,它的AS path是 1 234
我們?cè)赗2上進(jìn)行如下命令问拘,表示如果收到10.1.12.1發(fā)送來(lái)的EBG路由,攜帶AS號(hào)也接收
[R2-bgp]peer 10.1.12.1 allow-as-loop
此時(shí)我們?cè)诓榭碆GP路由表
總結(jié):BGP公認(rèn)必遵的三個(gè)屬性的必要性惧所,下一跳是一定要存在的骤坐,BGP不進(jìn)行路由計(jì)算,只是被動(dòng)的接受路由指令下愈。起源屬性是定義路徑信息的來(lái)源纽绍,標(biāo)記一條路由是如何成為BGP路由的,AS_PATH是EBGP路由防止環(huán)路的關(guān)鍵势似,也必須存在拌夏。
Local Preference(本地優(yōu)先級(jí)屬性)
該屬性是屬于公認(rèn)任意的僧著,local preference屬性?xún)H在IBGP鄰居之間有效,不通告給其他AS障簿,它表明路由器的 BGP優(yōu)先級(jí)盹愚,用于判斷流量離開(kāi)AS時(shí)的最佳路由。默認(rèn)值是100站故,越大越優(yōu)先皆怕。
我們把之前對(duì)AS_PATH做的策略去掉
[R1]undo route-policy aspath
[R1-bgp]undo peer 10.1.12.2 route-policy aspath export
此時(shí)R1只是引入了一條192.168.1.0的靜態(tài)路由,并發(fā)布BGP路由表中
在R5上西篓,我們也做同樣的操作
[R5]ip route-static 192.168.1.0 24 NULL 0
[R5]bgp 5
[R5-bgp]import-route static
此時(shí)我們來(lái)模擬端逼,AS234訪(fǎng)問(wèn)192.168.1.0的路由會(huì)有兩條路可以走,AS1和AS5
污淋,它 們?cè)L問(wèn)R3的路由優(yōu)先級(jí)都是一樣的
但是我們查看R3的路由表顶滩,目前R3中192.168.1.0選路是通過(guò)R2走的,我們現(xiàn)在想改為通過(guò)R5,R4走寸爆,
[R4]bgp 234
[R4-bgp]default local-preference 200
與此同時(shí)礁鲁,R2也會(huì)收到R4傳遞的v路由,它此時(shí)會(huì)把之前通過(guò)R1得到的路由丟棄赁豆,但是此時(shí)并不會(huì)繼續(xù)向R3進(jìn)行路由轉(zhuǎn)發(fā)仅醇,因?yàn)槭荌BGP鄰居傳遞給他的路由,我們知道魔种,通過(guò)IBGP鄰居得到的路由不會(huì)繼續(xù)轉(zhuǎn)發(fā)給其他BGP鄰居析二,進(jìn)行IBGP之間的防環(huán)。
實(shí)驗(yàn):
我們?cè)谥暗膶?shí)驗(yàn)基礎(chǔ)上再各自添加一條192.168.2.0 24的路由實(shí)現(xiàn)192.168.1.0通過(guò)R2訪(fǎng)問(wèn)节预,192.168.2.0通過(guò)R4訪(fǎng)問(wèn)叶摄,達(dá)到BGP通過(guò)公認(rèn)任意屬性選路的效果。
先把R4的路由優(yōu)先級(jí)取消安拟,恢復(fù)默認(rèn)
[R4-bgp]undo default local-preference
R2
[R2]ip ip-prefix 1 permit 192.168.1.0 24
[R2-route-policy]if-match ip-prefix 1
[R2-route-policy]apply local-preference 200
[R2]route-policy local permit node 20
[R2]bgp 234
[R2-bgp]peer 10.1.12.1 route-policy local import
R4
[R4]ip ip-prefix 1 permit 192.168.2.0 24
[R4]route-policy local permit node 10
[R4-route-policy]if-match ip-prefix 1
[R4-route-policy]apply local-preference 200
[R4-route-policy]q
[R4]route-policy local permit node 20
[R4-route-policy]q
[R4]bgp 234
[R4-bgp]peer 10.1.45.5 route-policy local import
我們從R3查看
驗(yàn)證通過(guò)~蛤吓!
MED(BGP的多出口鑒別器)
屬于可選屬性中的可選非傳遞屬性,也稱(chēng)BGP的開(kāi)銷(xiāo)糠赦,越小越優(yōu)先会傲,屬性?xún)H在相鄰的兩個(gè)AS之間傳遞,收到此屬性的AS不會(huì)再將其通告給任何其他第三方AS拙泽,用于判斷流量進(jìn)入AS時(shí)的最佳路由淌山。
華為設(shè)備通告MED屬性的規(guī)則
1、本地始發(fā)的路由MED值傳遞給所有鄰居顾瞻。
我們繼續(xù)在R2上進(jìn)行實(shí)驗(yàn)
[R2]ip route-static 172.168.2.0 24 NULL 0
[R2-bgp]import-route static med 999
查看
2泼疑、從EBGP鄰居得到的路由的MED不會(huì)傳遞給EBGP鄰居,影響鄰居AS的選路朋其。
(和第一條綜合起來(lái)王浴,就是MED只會(huì)影響始發(fā)路由器相關(guān)的AS鄰居脆炎,不會(huì)影響第三方。
3氓辣、從EBGP鄰居得到的路由的MED可以傳遞給IBGP協(xié)議
我們從R1將之前的引入靜態(tài)路由設(shè)置MED‘為888秒裕,在R4上依然能夠看到。
4钞啸、從IBGP鄰居得到的路由傳遞給EBGP鄰居不攜帶MED
5几蜻、從聯(lián)盟EBGP鄰居或者聯(lián)盟內(nèi)始發(fā)的路由的MED值在整個(gè)聯(lián)盟中保持傳遞
MED值在IBGP或者EBGP包括成員EBGP in和out方向都是可以修改的