BGP路由黑洞解决办法介绍
生活随笔
收集整理的這篇文章主要介紹了
BGP路由黑洞解决办法介绍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在配置BGP的時,通常最容易遇到的問題就是路由黑洞,那么什么是路由黑洞呢,簡單的說,它會默默的將
數(shù)據(jù)包丟棄,使所有數(shù)據(jù)包有去無回。我們知道傳統(tǒng)的IP路由查找,它是逐跳查找的,通俗一點(diǎn)就是當(dāng)數(shù)
據(jù)包到達(dá)路由設(shè)備的時候,每一臺設(shè)備都要查找路由表,并且在路由設(shè)備有路由的前提下才能轉(zhuǎn)發(fā)報文。
對BGP來說由于存在iBGP水平分割規(guī)則,只把路由傳遞一跳,這是一種防環(huán)機(jī)制,所以在BGP的設(shè)計上有些
設(shè)備就不會運(yùn)行BGP。BGP是一種TCP的連接或者說是一種host-to-host的連接(可以跨越設(shè)備進(jìn)行連接),所以路由傳遞是沒有
問題的,但是數(shù)據(jù)包的路由卻是有問題的。通常我們可以看到的現(xiàn)像是iBGP鄰居關(guān)系可以正常建立,也就是
說控制平面看起來是正常的,但是數(shù)據(jù)平面確不可達(dá)。本篇我們就來介紹一下解決BGP路由黑洞的幾種常見
的方法。我們以下圖中的拓?fù)錇槔齺磉M(jìn)行演示,配置要求如下:
1、在AS100和AS300中,路由器R1配置多個環(huán)回口,都發(fā)布到BGP內(nèi),并且做路由聚合。
2、在AS200中,AS內(nèi)部所有設(shè)備之間建立iBGP鄰居關(guān)系。
3、AS之間使用直連建立eBGP鄰居關(guān)系。
4、配置完成后,要求R1與R6的環(huán)回口能夠互通。IP地址規(guī)劃
R1:
lo0:1.1.1.1/24
lo1:192.168.1.1/24
lo2:192.168.2.1/24
lo3:192.168.3.1/24R6:
lo0:6.6.6.6/24
lo1:172.17.1.6/24
lo2:172.17.2.6/24
lo3:172.17.3.6/24
1、首先對各路由器進(jìn)行基本的配置,以R1為例,配置各口的IP地址,配置環(huán)回口的IP地址,配置BGP 100,
并將環(huán)回口網(wǎng)段在BGP中進(jìn)行宣告。以相同的方式配置AS300中的R6。
interface GigabitEthernet0/0/0ip address 10.1.2.1 255.255.255.0
interface LoopBack0ip address 1.1.1.1 255.255.255.0
interface LoopBack1ip address 192.168.1.1 255.255.255.0
interface LoopBack2ip address 192.168.2.1 255.255.255.0
interface LoopBack3ip address 192.168.3.1 255.255.255.0
bgp 100router-id 1.1.1.1peer 10.1.2.2 as-number 200
ipv4-family unicastundo synchronizationaggregate 192.168.0.0 255.255.252.0 detail-suppressed network 1.1.1.0 255.255.255.0 network 192.168.1.0 network 192.168.2.0 network 192.168.3.0 peer 10.1.2.2 enable
2、AS 200中的四臺路上器,我們使用LoopBack 0接口建立iBGP鄰居關(guān)系,同時在這四臺路由器之間還要
配置IGP,這里我們使用OSPF協(xié)議。以R4的配置為例發(fā)下圖,這里配置iBGP時可以使用AS Group以減輕配
置的工作量。
3、到這里所有配置完成后,查看BGP對等體,確認(rèn)BGP鄰居關(guān)系建立成功,從下圖中可以看到R2分別與相應(yīng)
路由器建立了eBGP和iBGP鄰居關(guān)系。
4、此時從R1環(huán)回口ping R6環(huán)回口,會發(fā)現(xiàn)根本Ping不通。這就是由于路由黑洞導(dǎo)致的。因?yàn)镽3或者R4沒
有這條路由條目,導(dǎo)致了R1把包發(fā)給R2,R2把包發(fā)給R3或R4,R3或R4查表發(fā)現(xiàn)沒有這條路由條目,就把包
給丟棄,造成了路由黑洞。
5、解決路由黑洞的方法有以下幾種:1、在AS內(nèi)使用物理線路的全互連,形成Full Mesh。2、在AS內(nèi)IBGP的對等體鄰接關(guān)系的全互連,邏輯上形成Full Mesh。3、將AS內(nèi)部的邊緣路由器上的BGP路由重新分發(fā)進(jìn)IGP中。4、在AS內(nèi)部的邊緣路由器之間建立Tunnel。5、在AS內(nèi)所有路由器上啟用MPLS。6、配置路由反射器RR。7、聯(lián)盟配置,現(xiàn)網(wǎng)中已經(jīng)很少用到。方法一、不需要演示,并且在現(xiàn)網(wǎng)中也基本不會用到,因?yàn)楫?dāng)路由器數(shù)量較多時,使用物理線路全互聯(lián)是
不現(xiàn)實(shí)的,并且通常路由器之間可能還會有其它設(shè)備,比如交換機(jī)或者波分。所以我們主要來看一下后面
6種方法。方法二、在AS內(nèi)IBGP的對等體鄰接關(guān)系的全互連,邏輯上形成Full Mesh
1、如下圖可以看到,在AS200中,R2與R5屬于OSPF中的ASBR,分別與R1和R6形成eBGP關(guān)系,它們在將EBGP
鄰居發(fā)來的路由信息轉(zhuǎn)發(fā)給R3和R4時,保留了EBGP傳來的下一跳地址,但是對于R3與R4,它們并沒有到達(dá)本
區(qū)域外的路由,這時我們就可以通過配置next-hop-local來解決這個問題。只需要在ASBR上進(jìn)行修改,也
就是R2與R5。例如要將BGP的路由發(fā)送給3.3.3.3這個鄰居時,將路由的下一跳設(shè)置成自己的地址,這個地址是
與3.3.3.3建立鄰居所使用的源地址。缺省情況下,BGP設(shè)備向IBGP對等體發(fā)布路由時,不修改下一跳地址。2、使用以下命令進(jìn)行配置,以R2為例:
bgp 200peer 3.3.3.3 next-hop-localpeer 4.4.4.4 next-hop-localpeer 5.5.5.5 next-hop-local
3、配置完成后,從R1環(huán)回口ping R6環(huán)回口,這時就可以Ping通了。
4、查看R3的BGP路由表,可以看到去往R1和R6的下一跳都指向了R2與R5。
5、查看R6的路由表,可以看到環(huán)回口地址已經(jīng)進(jìn)行了路由聚合。
6、在方法二中,我們按要求配置完以后,來思考一下下面的三個問題,理解下面三個問題后,說明對BGP配
置有了更深的理解。
● 6.1、R3與R4是否有必要建立IBGP鄰居關(guān)系?
Answer: 雖然配置中按要求在R3與R4之間建立了IBGP鄰居關(guān)系,但它們之間并不需要建立IBGP鄰居。因?yàn)?R3與R4都會收到R2與R5發(fā)布的EBGP路由,通過設(shè)置更新發(fā)送bgp報文的接口為loopback0接口后,路由就變
成了活躍路由。假設(shè)即使R2R4之間和R3R5之間的鏈路同時斷掉,由于域內(nèi)都配置了IGP,下一跳仍然可達(dá)。
● 6.2、R3與R4是否需要使用Nexthop local命令,如果使用有沒有問題?
Answer: 不需要。因?yàn)橹恍枰贏SBR上修改EBGP鄰居發(fā)來的路由的Next_Hop。R3與R4不是ASBR。
如果在R3和R4上使用了該命令也沒有影響,因?yàn)锽GP向IBGP鄰居發(fā)布引入的IGP路由時,缺省就將下一跳屬性
改為自身的接口地址。
● 6.3、AS200內(nèi)的數(shù)據(jù)轉(zhuǎn)發(fā)路徑是基于什么決定的?
Answer:其實(shí)這里并不涉及BGP路由選路,R5只收到一條路由,所以不觸發(fā)選路。數(shù)據(jù)轉(zhuǎn)發(fā)直接基于IGP最短
路徑轉(zhuǎn)發(fā)。方法三、將AS內(nèi)部的邊緣路由器上的BGP路由重新分發(fā)進(jìn)IGP中
1、在R3與R4上刪除BGP 200
undo bgp 2002、在R2和R5中把BGP重分發(fā)進(jìn)到OSPF。
ospf 1import-route bgp
3、配置完成后,從R1環(huán)回口ping R6環(huán)回口,可以Ping通。
方法4、在AS內(nèi)部的邊緣路由器之間建立Tunnel
1、去掉R2和AR5的OSPF中重分發(fā)命令。
ospf 1undo import-route bgp 2、配置Tunnel口,以R2為例。
interface Tunnel0/0/1ip address 100.100.100.1 255.255.255.0tunnel-protocol gresource 2.2.2.2destination 5.5.5.53、修改BGP配置使用Tunnel IP建立Peer,以R5為例。
bgp 1undo peer 2.2.2.2peer 100.100.100.1 as-number 200peer 100.100.100.1 next-hop-localpeer 100.100.100.1 connect-interface Tunnel 0/0/1
4、 配置完成后,從R1環(huán)回口ping R6環(huán)回口,可以Ping通。
方法5、 在AS內(nèi)所有路由器上啟用MPLS
1、首先刪除R2和R5的Tunnel口設(shè)置。
undo int tunnel 0/0/12、R2與R5修改BGP200的peer,還是使用loopback 0地址建立peer。以R2為例。
bgp 200
undo peer 100.100.100.2
peer 5.5.5.5 as-number 200
peer 5.5.5.5 connect-interface LoopBack0
peer 5.5.5.5 next-hop-local3、在4臺路由器都配置MPLS,以R2為例。
mpls lsr-id 2.2.2.2
mplsmpls ldp
int g0/0/1mplsmpls ldp
int g0/0/1mplsmpls ldp
route recursive-lookup tunnel
4、配置完成后,從R1環(huán)回口ping R6環(huán)回口,可以Ping通。
方法6、配置路由反射器RR
1、我們還可以使用路由反射來描述一個BGP Speaker通告一條IBGP路由到另外一個IBGP對等體。而這樣
一個BGP Speaker通常被稱為路由反射器(Route Reflector, RR),這樣的一條IBGP路由被稱為反射路由。2、路由反射宣告原則:從非客戶機(jī)IBGP對等體學(xué)到的路由,發(fā)布給此RR的所有客戶機(jī),不會反射給所有的
非反射客戶端。從客戶機(jī)學(xué)到的路由,發(fā)布給此RR的所有非客戶機(jī)和客戶機(jī)(發(fā)起此路由的客戶機(jī)除外)。
從EBGP對等體學(xué)到的路由,發(fā)布給所有的非客戶機(jī)和客戶機(jī)。● Client只需維護(hù)與RR之間的IBGP會話
● RR與RR之間需要建立IBGP的全互連
● Non-Client與Non-Client之間需要建立IBGP全互
● RR與Non-Client之間需要建立IBGP全互連3、配置RR非常簡單,只需要在BGP peer中加入一條配置如下,將其配置為RR客戶機(jī)即可,在我們的拓?fù)渲?,這時R2與R5就不需要建立iBGP鄰居關(guān)系了,這時需要同時在R3與R4上配置RR。注意配置RR就不再需要再配
置next-hop-local。以R3為例。
bgp 200
peer 2.2.2.2 reflect-client
peer 5.5.5.5 reflect-client
4、配置完成后,從R1環(huán)回口ping R6環(huán)回口,可以Ping通。
總結(jié)
以上是生活随笔為你收集整理的BGP路由黑洞解决办法介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字典(dict)作业
- 下一篇: 清北毕业生2019就业去向:北大从政人数