前期回顧
我們上節(jié)抒线,做了實(shí)驗(yàn),現(xiàn)在再來梳理幾個點(diǎn)渣慕,之前AS1和AS234進(jìn)行互聯(lián)線路(R1-->R2)中嘶炭,我們并沒有將R2的g0/0/0接口加入到IGP協(xié)議中,然后我們在R2逊桦、3眨猎、4路由配置ISIS協(xié)議,并且將R2和R4安置在AS234的BGP環(huán)境中强经,R3不運(yùn)行BGP協(xié)議睡陪。AS之間走EBGP,以此來模擬EBGP、IBGP兰迫、IGP之間的聯(lián)系信殊。
R1創(chuàng)建一條環(huán)回口路由,利用network發(fā)布到BGP汁果,此時R1的BGP路由表中插入了一條關(guān)于該路由的最優(yōu)標(biāo)識涡拘,利用
BGP的通告原則1:僅將自己的最優(yōu)路由發(fā)布給鄰居。
R2的BGP路由表也可以查看到該路由据德。
R2在路由表中查看有去往該路由下一跳的唯一路由鳄乏,所以該路由在R2的BGP路由表中名副其實(shí)的也是帶*>的有效最優(yōu)路由,符合
BGP通告原則2:通過EBGP獲得的最優(yōu)路由發(fā)布給所有BGP鄰居棘利。
R4于此同時也可以收到R1產(chǎn)生的這條路由橱野,但是這條路由在路由表中是否是最優(yōu)的?還有待商榷善玫。
我們查看R4路由表發(fā)現(xiàn)BGP路由表中該路由的下一跳并不在IGP路由表中仲吏,因此它在存放時沒有有效符號標(biāo)識更談不上最優(yōu),由此對外的表現(xiàn)就是當(dāng)這條路由到R4在路由表中命中的時候蝌焚,會查詢該路由的下一跳裹唆,發(fā)現(xiàn)下一跳竟然還是10.1.12.1,查詢路由表只洒,并沒有找到相關(guān)記錄许帐,下一跳不可達(dá)就無法轉(zhuǎn)發(fā)。原來我們少了解了一個原則毕谴,從EBGP鄰居傳過來的路由傳給IBGP鄰居時成畦,下一跳默認(rèn)不變。為什么會出現(xiàn)這種情況呢涝开,這和我們開頭做的限制也有一定的關(guān)系循帐,就是我們并沒有將R2的g0/0/0接口加入到IGP協(xié)議中,如果我們把R2 g0/0/0加入到IGP協(xié)議中舀武,那么同在IGP協(xié)議下的R4的g0/0/0就可以算出到R2g0/0/0的路由拄养,這樣就不會產(chǎn)生這個下一跳不可達(dá)的現(xiàn)象。其實(shí)在生產(chǎn)環(huán)境中也是如此银舱,我們默認(rèn)在EBGP的AS之間的互聯(lián)口不加入IGP協(xié)議瘪匿。
解決方案1:
路由不可達(dá),我們就做一條路由讓它可達(dá)寻馏,也就是在R4上將這個下一跳指向自己的g0/0/0接口配置的10.1.34.4棋弥,這樣通過IBGP協(xié)議我們就可以輕松的進(jìn)行路由選擇。
缺陷:BGP路由一般是十萬條起步诚欠,這么龐大的路由我們無法進(jìn)行逐條的手工配置顽染。
解決方案2:
我們可以利用R2這個路由漾岳,針對IBGP鄰居做一條next-hop-local
[R2]bgp 234
[R2-bgp]peer 4.4.4.4 next-hop-local
該命令僅對IBGP鄰居生效,將從EBGP鄰居得到的路由傳遞給指定的IBGP鄰居時粉寞,下一跳修改為自身向該IBGP鄰居發(fā)送BGP報文的源地址,
再次查看R4蝗羊、R5的BGP路由表,如預(yù)想的一般仁锯。
我們看R2的路由,發(fā)現(xiàn)雖然R4收到了R2發(fā)過來的最優(yōu)路由翔悠,但是并沒有向R2再次發(fā)送业崖,這樣就避免了產(chǎn)生環(huán)路,P畛睢K弧!也就是
BGP的通告原則3:通過IBGP獲得的最優(yōu)路由不會發(fā)布給其他的IBGP鄰居
繼續(xù)我們的猜想撮抓,R4通過EBGP將最優(yōu)的路由傳遞給了它的BGP鄰居妇斤。R5上現(xiàn)在可以從BGP路由表中查到去往1.1.1.0的路由,而且下一跳也是對的丹拯。
BGP路由傳遞給EBGP鄰居時站超,下一跳自動修改為向該EBGP鄰居發(fā)送BGP報文的源地址。
此時我們以為現(xiàn)在總可以訪問R1的環(huán)回口了吧乖酬,我們進(jìn)行ping命令死相,wac為啥不通?咬像?算撮?
我們往上查,看下R4是否可以ping通县昂。R4此時也不可以肮柜,為什么會出現(xiàn)這個原因呢?
我們看它的下一跳所在路由表的路由倒彰,發(fā)現(xiàn)了一切
它是通過2.2.2.2轉(zhuǎn)發(fā)审洞,而2.2.2.2的路由指向了10.1.34.3,我們立即定位待讳,知道了预明,R3并沒有去往1.1.1.0的路由。這樣很像我們之前的一個案例:路由黑洞
回顧一下
路由黑洞
在這個拓?fù)鋱D中耙箍,BGP傳播路由是可以跨路由器傳遞的撰糠,A路由器可以將路由通過EBGP傳遞給B,B可以通過IBGP傳遞給D辩昆,因?yàn)锽路由器到D路由器有運(yùn)行OSPF協(xié)議阅酪,路由可達(dá),D再次通過EBGP傳遞給E。
但是C路由器上卻沒有A路由器100.0.o.o的路由术辐,因?yàn)镃路由器沒有運(yùn)行BGP協(xié)議砚尽。
這樣就會導(dǎo)致E路由器在回包的時候,將100.0.o.o的路由先發(fā)送給D辉词,D繼續(xù)轉(zhuǎn)發(fā)給C必孤,C直接丟棄。這就出現(xiàn)了BGP的路由黑洞瑞躺。最終導(dǎo)致R3上沒有去往1.1.1.0的路由敷搪。
對的!路由黑洞了幢哨,這個時候我們會想起來赡勘,
哦哦,我們需要進(jìn)行
BGP的通告原則4:BGP與IGP的同步
我們在R2上做一個同步
第一種方案捞镰,我們將BGP引入到IGP協(xié)議中闸与,
此時我們繼續(xù)測試ping 1.1.1.1 發(fā)現(xiàn)還是不通,
觀察R4BGP的配置岸售,發(fā)現(xiàn)其中有一個命令是践樱,
undo synchronization
其實(shí),同步功能在華為設(shè)備中一直都是關(guān)閉的狀態(tài)凸丸,沒有開啟的命令映胁,同步同步并不影響R4的BGP路由1.1.1.1傳遞給R5.
此時我們在R5上也創(chuàng)建一個環(huán)回口
[R5]int l0
[R5-LoopBack0]ip add 5.5.5.5 24
[R5-LoopBack0]q
[R5]bgp 5
[R5-bgp]network 5.5.5.0 24
R4:與R1 的1.1.1.0一樣,利用next-hop-local 將R4發(fā)往R2的下一跳改變,
peer 2.2.2.2 next-hop-local
isis協(xié)議中引入BGP
[R4-isis-1]dis this
[V200R003C00]
isis 1
is-level level-2
network-entity 49.0004.0000.0000.0004.00
import-route bgp
向所有BGP鄰居手動觸發(fā)路由更新
<R4>refresh bgp all export
我們通過R5
<R5>ping -a 5.5.5.5 1.1.1.1
PING 1.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=30 ms
Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=50 ms
Reply from 1.1.1.1: bytes=56 Sequence=3 ttl=252 time=30 ms
Reply from 1.1.1.1: bytes=56 Sequence=4 ttl=252 time=40 ms
Reply from 1.1.1.1: bytes=56 Sequence=5 ttl=252 time=40 ms
總結(jié):
1、同步功能只能通過bgp路由黑洞檢測機(jī)制拼窥,但是并不是解決路由黑洞。
2弛姜、這種方法目前已經(jīng)被淘汰,如果BGP路由表產(chǎn)生振蕩妖枚,會對IGP造成影響廷臼。
第二種方案:
我們將R2、R4上引入配置IGP配置取消
[R2-isis-1]undo import-route bgp
R4同
[R2]bgp 234
[R2-bgp]peer 3.3.3.3 as-number 234
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0
[R2-bgp]peer 3.3.3.3 next-hop-l
R3\ R4自己配
三條命令缺一不可
總結(jié):
只要解決路由黑洞問題绝页,BGP同步檢查功能開啟或者關(guān)閉無足輕重荠商。
我們再做個小測試,我們現(xiàn)在可以通過1.1.1.1 訪問到5.5.5.5续誉,
是因?yàn)樵趲讉€BGP AS中莱没,路由是通的,但是1.1.1.1 可以訪問4.4.4.4 么酷鸦?
測試之后 發(fā)現(xiàn)不可以饰躲。為什么呢牙咏?因?yàn)樵贐GP AS:234中4.4.4.4并沒有發(fā)布出去
所以BGP路由訪問的基本邏輯,你要是想別人能訪問你嘹裂,你就要把這條路由發(fā)布出去妄壶,然后再避免路由黑洞。我們發(fā)布出去寄狼,ping 4.4.4.4 1.1.1.1 還是不通丁寄,我們就需要自己再思考思考了