趙建華,韓智慧,宋 嚴(yán)
(1.長(zhǎng)春師范大學(xué)網(wǎng)絡(luò)中心,吉林 長(zhǎng)春 130032;2.長(zhǎng)春科技學(xué)院智能制造學(xué)院,吉林 長(zhǎng)春 130600)
BGP,即邊界網(wǎng)關(guān)協(xié)議,是一種運(yùn)行在自治系統(tǒng)(AS)之間的動(dòng)態(tài)路由協(xié)議[1],具有強(qiáng)大的路徑選擇能力,這也使得BGP適用于大型的網(wǎng)絡(luò)環(huán)境,如運(yùn)營(yíng)商網(wǎng)絡(luò)、大型企業(yè)網(wǎng)等,然而對(duì)于運(yùn)營(yíng)商或大型企業(yè)級(jí)別的網(wǎng)絡(luò),路由的穩(wěn)定性及可達(dá)性尤為重要。
在運(yùn)行BGP協(xié)議的兩臺(tái)路由器之間,無(wú)論是否直接相連,只要它們具備IP連通性且可建立TCP連接,則都可以建立對(duì)等體關(guān)系。BGP的這個(gè)特點(diǎn)使得路由的傳遞更加靈活,然而,如果在配置BGP路由協(xié)議過(guò)程中,稍有不慎,就會(huì)產(chǎn)生路由黑洞[2]。
圖1為運(yùn)動(dòng)BGP協(xié)議的網(wǎng)絡(luò)拓?fù)鋱D,R1、R2、R4、R5是BGP路由器,建立BGP對(duì)等體關(guān)系。
圖1 運(yùn)行BGP協(xié)議的網(wǎng)絡(luò)拓?fù)鋱D
在圖1中,AS 30內(nèi)已經(jīng)部署了OSPF,使得AS內(nèi)部的路由器能夠獲得到AS內(nèi)各個(gè)網(wǎng)段的路由信息。R3、R6、R7屬于內(nèi)部路由器,不運(yùn)行BGP協(xié)議,只運(yùn)行OSPF協(xié)議,在整個(gè)AS 30內(nèi)部,R4和R5實(shí)現(xiàn)了IP的連通性(R4和R5之間沒(méi)有直連的物理鏈路),并且能夠建立起IBGP對(duì)等體關(guān)系。
路由器R1將AS 10內(nèi)的10.0.0.0/8路由發(fā)布到BGP,然后將這條路由通告給R4,而R4則將這條BGP路由通過(guò)IBGP連接直接通告給R5,R7再將路由信息通告給R2,最終R2能夠通過(guò)BGP學(xué)習(xí)到10.0.0.0/8這條來(lái)自AS 10 的路由并將其加載到自己的路由表中。
路由器R2收到一個(gè)去往10.0.0.0/8的數(shù)據(jù)包,它查詢路由表后確定到達(dá)目的地的下一跳為R5,于是將數(shù)據(jù)包轉(zhuǎn)發(fā)給R5。R5收到這個(gè)數(shù)據(jù)包后進(jìn)行路由表查詢,到達(dá)目的地的下一跳為R4,然而R4并不是它的直連路由器,它認(rèn)為到下一跳路由器處于一個(gè)遠(yuǎn)端網(wǎng)段,因此將繼續(xù)在自己的路由表中查詢到達(dá)R4的路由(既遞歸查詢)。由于AS 30內(nèi)已經(jīng)運(yùn)行了OSPF,R5發(fā)現(xiàn)可以通過(guò)OSPF路由到達(dá)R4,而且下一跳是R3。如此一來(lái),R5意識(shí)到要將數(shù)據(jù)包送達(dá)10.0.0.0/8,需先將數(shù)據(jù)包轉(zhuǎn)發(fā)給R3。
當(dāng)路由器R3收到發(fā)往10.0.0.0/8的數(shù)據(jù)包時(shí),它將在自己的路由表中查詢達(dá)到該目的地網(wǎng)段的路由,由于該路由是在BGP中被通告的,而R3又沒(méi)有運(yùn)行BGP,R3將丟棄發(fā)往10.0.0.0/8這個(gè)網(wǎng)段的數(shù)據(jù)包。此種現(xiàn)象被稱為路由黑洞,同樣的黑洞問(wèn)題也可能發(fā)生在路由器R7上[3]。
BGP同步規(guī)則是指當(dāng)一臺(tái)路由器接收到一條IBGP對(duì)等體發(fā)送來(lái)的路由后,必須檢查自己的IGP路由表,只有在自己的IGP路由表中也存在關(guān)于這條路由的信息時(shí),才會(huì)將該BGP路由發(fā)布給EBGP對(duì)等體,讓沒(méi)有運(yùn)行BGP協(xié)議的路由器也能獲得BGP路由,從而實(shí)現(xiàn)IBGP和IGP路由同步,避免路由黑洞的產(chǎn)生。
路由引入就是將BGP路由引入到OSPF中,讓OSPF也能獲得相關(guān)路由。例如,在圖1拓?fù)浣Y(jié)構(gòu)中,R4將BGP路由引入到AS 30中的OSPF,使OSPF獲知到達(dá)10.0.0.0/8的路由,從而路由黑洞的問(wèn)題就迎刃而解了。
MPLS技術(shù),即多協(xié)議標(biāo)簽交換技術(shù),就是在一個(gè)報(bào)文的IP頭部之前、數(shù)據(jù)幀頭部之后插入一個(gè)標(biāo)簽頭部,使IP頭部隱藏在標(biāo)簽頭部之后,在數(shù)據(jù)從源被轉(zhuǎn)發(fā)到目的地的整個(gè)過(guò)程中,網(wǎng)絡(luò)設(shè)備只需根據(jù)標(biāo)簽頭部中的標(biāo)簽進(jìn)行選路,這樣設(shè)備的路由表中沒(méi)有到達(dá)目的地的網(wǎng)段,也不會(huì)影響數(shù)據(jù)轉(zhuǎn)發(fā),從而避免了路由黑洞的產(chǎn)生。
IBGP全互連,即在AS內(nèi)IBGP的對(duì)等體鄰接關(guān)系的全互連,邏輯上形成Full Mesh,使網(wǎng)絡(luò)中的路由設(shè)備獲得全部網(wǎng)絡(luò)的路由信息,進(jìn)而解決路由黑洞問(wèn)題。
除了以上幾種方式之外,還有在AS內(nèi)使用物理線路的全互連、在AS內(nèi)部的邊緣路由器之間建立Tunnel通道、配置路由反射器RR、聯(lián)盟配置等解決路由黑洞問(wèn)題的方法。
綜合以上論述,解決路由黑洞有很多方案,本文以IBGP全互連方式進(jìn)行路由黑洞產(chǎn)生過(guò)程及解決方案模擬仿真。
假設(shè)在一個(gè)大型公司的網(wǎng)絡(luò)中,拓?fù)浣Y(jié)構(gòu)如圖2所示,設(shè)備IP地址分配如表1所示,自治系統(tǒng)AS 20為運(yùn)營(yíng)商網(wǎng)絡(luò),自治系統(tǒng)AS 10和AS 30分別為企業(yè)的上海分公司和北京分公司,路由器R1的GE0/0/1和R5的GE0/0/0分別連接著上海分公司內(nèi)部網(wǎng)絡(luò)和北京分公司內(nèi)部網(wǎng)絡(luò)。路由器R1、R2、R4、R5運(yùn)行BGP協(xié)議,自治系統(tǒng)AS 20內(nèi)部使用OSPF協(xié)議作為IGP。整個(gè)網(wǎng)絡(luò)需要實(shí)現(xiàn)上海分公司內(nèi)部網(wǎng)絡(luò)與北京分公司內(nèi)部網(wǎng)絡(luò)之間的正常通信。
圖2 仿真網(wǎng)絡(luò)拓?fù)鋱D
表1 設(shè)備編址
3.2.1 基本配置
根據(jù)圖2和表1進(jìn)行基本配置,并測(cè)試直連網(wǎng)段連通性,如R1與R2之間的連通性測(cè)試結(jié)果如下文所示,其他設(shè)備測(cè)試方法相同。
PING 10.0.12.2: 56 data bytes, press CTRL_C to break
Reply from 10.0.12.2: bytes=56 Sequence=1 ttl=255 time=30 ms
3.2.2 配置OSPF和BGP路由協(xié)議
在AS 20中配置OSPF協(xié)議作為IGP協(xié)議。如路由器R2的OSPF協(xié)議配置如下:
[R2]ospf router-id 10.0.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 10.0.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 10.0.23.0 0.0.0.255
路由器R3、R4的配置與R2類似,配置完后,在R3上使用display ospf peer查看OSPF鄰居信息,可以看到R3與R2、R3與R4的鄰居狀態(tài)均為Full,這表示OSPF鄰接關(guān)系已經(jīng)成功建立[4]。
在路由器R1、R2、R4、R5上配置BGP協(xié)議,如R1配置如下:
[R1]bgp 10
[R1-bgp]router-id 10.0.1.1
[R1-bgp]peer 10.0.12.2 as-number 20
[R1-bgp]network 10.0.10.0 24
其他三個(gè)路由器配置類似,配置完成后,在R2上查看BGP鄰居信息如下:
Total number of peers:2 Peers in established state:2
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.0.4.4 4 20 93 95 0 01∶30∶06 Established 1
10.0.12.1 4 10 95 95 0 01∶32∶06 Established 1
從上面結(jié)果看出,R2與R1、R2與R4的BGP鄰居關(guān)系已經(jīng)建立,同樣的查看方式能夠看到R4與R5的BGP鄰居關(guān)系也已經(jīng)建立。
在R1上查看BGP路由表,可以看到R1的BGP路由表中擁有關(guān)于10.0.10.0/24和10.0.50.0/24的路由信息如下:
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.0.10.0/24 0.0.0.0 0 0 i
*> 10.0.50.0/24 10.0.12.2 0 20 30i
同理,在R5的BGP路由表中含有10.0.10.0/24和10.0.50.0/24的路由信息如下:
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 10.0.10.0/24 10.0.45.4 0 20 10i
*> 10.0.50.0/24 0.0.0.0 0 0 i
3.2.3 BGP路由黑洞產(chǎn)生的原因
通過(guò)以上分析,R1和R5的BGP路由表中均存在去往對(duì)方的內(nèi)部網(wǎng)絡(luò)的路由,則上海分公司內(nèi)部網(wǎng)絡(luò)和北京分公司內(nèi)部網(wǎng)絡(luò)應(yīng)該可以正常通信[5],在PC1上測(cè)試與PC2的連通性如下所示:
Ping 10.0.50.2∶32 data bytes, Press Ctrl_C to break
Request timeout!
Request timeout!
結(jié)果發(fā)現(xiàn),PC1無(wú)法與PC2進(jìn)行通信。
在PC1上使用tracert命令驗(yàn)證去往PC2的報(bào)文經(jīng)過(guò)的路徑,結(jié)果如下:
Traceroute to 10.0.50.2,8 hops max
(ICMP), press Ctrl+C to stop
通過(guò)跟蹤發(fā)現(xiàn),報(bào)文只能到達(dá)R2,不能到達(dá)R3。
在路由器R3上查看IP路由表,結(jié)果如下:
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.2.2/32 OSPF 10 1 D 10.0.23.2 G0/0/1
10.0.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
10.0.4.4/32 OSPF 10 1 D 10.0.34.4 G0/0/0
10.0.23.0/24 Direct 0 0 D 10.0.23.3 G0/0/1
10.0.23.3/32 Direct 0 0 D 127.0.0.1 G0/0/1
10.0.23.255/32 Direct 0 0 D 127.0.0.1 G0/0/1
10.0.34.0/24 Direct 0 0 D 10.0.34.3 G0/0/0
10.0.34.3/32 Direct 0 0 D 127.0.0.1 G0/0/0
10.0.34.255/32 Direct 0 0 D 127.0.0.1 G0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
經(jīng)觀察發(fā)現(xiàn),路由器R3的IP路由表中沒(méi)有上海分公司和北京分公司內(nèi)部網(wǎng)段的10.0.10.0和10.0.50.0的路由信息。這使得R3接收到從R2轉(zhuǎn)發(fā)過(guò)來(lái)的源地址網(wǎng)段為10.0.10.0、目的地址網(wǎng)段為10.0.50.0的報(bào)文時(shí),R3由于在自己的路由表中無(wú)法查到目的地址網(wǎng)段10.0.50.0的路由信息,R3會(huì)直接將報(bào)文丟棄,然后向源地址段10.0.10.0發(fā)送ICMP Destionation Unreachable消息。但是此時(shí)R3的IP路由表中也沒(méi)有10.0.10.0網(wǎng)段的路由信息,導(dǎo)致ICMP Destionation Unreachable消息也無(wú)法被發(fā)送。這樣一來(lái),從10.0.10.0去往10.0.50.0的報(bào)文就在R3上無(wú)聲無(wú)息地消失了,這就是所謂的BGP路由黑洞[6]。
3.2.4 采用IBGP全互連方式解決BGP路由黑洞問(wèn)題
產(chǎn)生路由黑洞的原因主要是R3的IP路由表中沒(méi)有去往10.0.10.0/24和10.0.50.0/24的路由信息,為了解決此問(wèn)題,可以讓R3也運(yùn)行BGP協(xié)議,并讓R2、R3、R4建立全互連的IBGP鄰居關(guān)系,配置如下:
[R3]bgp 20
[R3-bgp]router-id 10.0.3.3
[R3-bgp]peer 10.0.2.2 as-number 20
[R3-bgp]peer 10.0.2.2 connect-interface LoopBack 0
[R3-bgp]peer 10.0.4.4 as-number 20
[R3-bgp]peer 10.0.4.4 connect-interface LoopBack 0
[R2]bgp 20
[R2-bgp]peer 10.0.3.3 as-number 20
[R2-bgp]peer 10.0.3.3 connect-interface LoopBack 0
[R2-bgp]peer 10.0.3.3 next-hop-local
[R4]bgp 20
[R4-bgp]peer 10.0.3.3 as-number 20
[R4-bgp]peer 10.0.3.3 connect-interface LoopBack 0
[R4-bgp]peer 10.0.3.3 next-hop-local
配置完成后,在R3上查看BGP鄰居信息,結(jié)果如下:
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.0.2.2 4 20 8 8 0 00∶05∶33 Established 1
10.0.4.4 4 20 8 8 0 00∶05∶43 Established 1
可以看到,路由器R3與R2、R4都已經(jīng)建立IBGP鄰居關(guān)系[7]。
在路由器R3上查看BGP路由表,結(jié)果如下:
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.10.0/24 10.0.2.2 0 100 0 10i
*>i 10.0.50.0/24 10.0.4.4 0 100 0 30i
可以看到,路由器R3現(xiàn)在已經(jīng)學(xué)習(xí)到了上海分公司和北京分公司的內(nèi)部網(wǎng)段10.0.10.0/24和10.0.50.0/24的路由信息。
使用上海分公司內(nèi)部計(jì)算機(jī)PC1測(cè)試與北京分公司內(nèi)部計(jì)算機(jī)PC2的連通性,結(jié)果如下:
From 10.0.50.2: bytes=32 seq=4 ttl=123 time=31 ms
From 10.0.50.2: bytes=32 seq=5 ttl=123 time=63 ms
通過(guò)測(cè)試結(jié)果可知,PC1和PC2能夠正常通信,BGP路由黑洞問(wèn)題得到了解決。
在網(wǎng)絡(luò)互聯(lián)中路由器是必不可少的網(wǎng)絡(luò)設(shè)備,路由協(xié)議設(shè)置正確與否直接影響整個(gè)網(wǎng)絡(luò)的可達(dá)性、穩(wěn)定性以及收斂速度。在設(shè)置路由協(xié)議過(guò)程中,不僅要考慮路由黑洞問(wèn)題,同時(shí)還要考慮路由環(huán)路、路由更新、路由過(guò)濾和路由策略等問(wèn)題,才能使條目眾多的網(wǎng)絡(luò)很好地連接起來(lái)[8]。
長(zhǎng)春師范大學(xué)學(xué)報(bào)2022年10期