◆高正康 宋丹
基于route-map解決路由重分發(fā)中次優(yōu)路由問題
◆高正康 宋丹
(安徽理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 安徽 232001)
在常規(guī)的企業(yè)網(wǎng)絡(luò)中,由于多種因素的影響,需要運(yùn)行多種不同的路由選擇協(xié)議,而這就必須要使用路由重分發(fā)技術(shù)了。本文針對路由重分發(fā)過程中路由協(xié)議的配置順序及協(xié)議的內(nèi)在性質(zhì)不同,導(dǎo)致出現(xiàn)次優(yōu)路由和路由環(huán)路等問題,借助EVE-ng(Emulated Virtual Environment,虛擬仿真環(huán)境)模擬器,通過搭建網(wǎng)絡(luò)環(huán)境進(jìn)行實(shí)驗(yàn),分析了問題產(chǎn)生的原因并給出了兩種切實(shí)可行的解決方案,其一是通過修改路由管理距離,改變路由的優(yōu)先級(jí);其二是通過route-map進(jìn)行路由過濾,從產(chǎn)生次優(yōu)路由的根源解決問題。
路由選擇協(xié)議;重分發(fā);次優(yōu)路由;路由環(huán)路;網(wǎng)絡(luò)模擬器
在正常的網(wǎng)絡(luò)環(huán)境中,一個(gè)單一的IP路由協(xié)議是管理網(wǎng)絡(luò)中IP路由的首選方案。在某些情況下(如公司的合并,多個(gè)網(wǎng)絡(luò)管理員管理的多個(gè)部門,使用多個(gè)廠商設(shè)備的網(wǎng)絡(luò)環(huán)境等)必須使用多個(gè)路由協(xié)議[1]。由于各種路由協(xié)議采用的算法、度量值計(jì)算方式等不盡相同,默認(rèn)情況下,不同路由協(xié)議學(xué)習(xí)到的路由信息不能共享,因而多協(xié)議網(wǎng)絡(luò)并不能實(shí)現(xiàn)全網(wǎng)互通[2]。如果想要這些運(yùn)行不同路由選擇協(xié)議的網(wǎng)絡(luò)能夠互連互通,就需要至少有一臺(tái)路由器運(yùn)行多種路由選擇協(xié)議來實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的通信,而實(shí)現(xiàn)不同網(wǎng)絡(luò)之間通信的關(guān)鍵技術(shù)就是路由重分發(fā)。
當(dāng)只使用一臺(tái)路由器來重分發(fā)路由時(shí),如果這臺(tái)路由器出現(xiàn)故障,不同路由域中的主機(jī)就無法互相通信。為避免這種單點(diǎn)故障,大多數(shù)重分發(fā)設(shè)計(jì)都要求至少有兩臺(tái)路由器執(zhí)行重分發(fā)[3]。但是,若雙點(diǎn)雙向的路由重分發(fā)設(shè)計(jì)不當(dāng),也會(huì)產(chǎn)生一些如次優(yōu)路由、路由環(huán)路等問題。大多數(shù)情況下,是在接收方路由器上面通過修改管理距離來解決次優(yōu)路由問題,但數(shù)據(jù)在次優(yōu)路由的轉(zhuǎn)發(fā)下,已經(jīng)消耗了網(wǎng)絡(luò)設(shè)備的CPU和內(nèi)存資源,造成了不必要的浪費(fèi)。本文通過route-map進(jìn)行路由的過濾,從源頭解決次優(yōu)路由問題,降低轉(zhuǎn)發(fā)資源的浪費(fèi),提高網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)能力。
路由重分發(fā)(Route Redistribution)簡單來說就是將一種路由選擇協(xié)議產(chǎn)生的路由條目發(fā)送到另一個(gè)路由選擇協(xié)議中,通常在那些負(fù)責(zé)從一個(gè)AS內(nèi)學(xué)習(xí)路由,然后向另一個(gè)AS內(nèi)廣播的路由器那里進(jìn)行配置。一般情況下,同時(shí)運(yùn)行兩種(或兩種以上)路由協(xié)議的路由器,稱為邊界路由器。邊界路由器是不同路由協(xié)議之間的橋梁,負(fù)責(zé)協(xié)議間的路由重分發(fā)操作[2]。重分發(fā)總是向外的,執(zhí)行重分發(fā)的路由器不會(huì)修改其路由表??梢员恢胤职l(fā)的路由有兩種,一是宣告進(jìn)該協(xié)議的接口的直連路由,二是通過該協(xié)議學(xué)習(xí)到的并且已經(jīng)被加入路由表的協(xié)議路由。
度量值是某一路由協(xié)議用于判別到達(dá)目的網(wǎng)絡(luò)最佳路徑的方法。當(dāng)路由協(xié)議通過動(dòng)態(tài)交互發(fā)現(xiàn)到達(dá)某一目的網(wǎng)絡(luò)存在多條可達(dá)路徑時(shí),路由協(xié)議必須判斷出其中哪一條是最佳的路徑并把它添加到系統(tǒng)路由表中。路由協(xié)議會(huì)給每一條可達(dá)路徑計(jì)算出一個(gè)度量值,度量值越小,路徑越優(yōu)。不同的協(xié)議,其度量值不同;RIP的度量是跳數(shù),OSPF的度量是帶寬,EIGRP的度量是帶寬和延時(shí)等[4]。
管理距離(也稱為AD值)是指一種路由協(xié)議的路由可信度。每一種路由協(xié)議按可靠性從高到低,依次分配一個(gè)信任等級(jí),這個(gè)信任等級(jí)就叫管理距離。AD值越低,則它的優(yōu)先級(jí)越高。常見的路由選擇協(xié)議的管理距離見表1。
表1 常見路由選擇協(xié)議的管理距離
路由類型管理距離 直連接口0 靜態(tài)路由1 EIGRP匯總防環(huán)路由5 EBGP20 EIGRP90 OSPF110 RIP120
本文基于EVE-ng(Emulated Virtual Environment,仿真虛擬環(huán)境)模擬器[5],結(jié)合一個(gè)簡化但并不影響實(shí)際效果的網(wǎng)絡(luò)拓?fù)洌槍SPF(Open Shortest Path First,開放式最短路徑優(yōu)先)和RIP(Routing Information Protocol,路由信息協(xié)議)協(xié)議的多邊界路由重分發(fā)產(chǎn)生的問題,通過分析問題產(chǎn)生的原因,給出了幾個(gè)切實(shí)可行的解決方案。實(shí)驗(yàn)所用網(wǎng)絡(luò)拓?fù)淙鐖D1所示。
圖1 實(shí)驗(yàn)所用網(wǎng)絡(luò)拓?fù)鋱D
其中,各設(shè)備除互聯(lián)的物理接口外,每臺(tái)設(shè)備還配置了一個(gè)環(huán)回口loopback0,用來模擬網(wǎng)絡(luò)設(shè)備身后的網(wǎng)絡(luò)。路由選擇協(xié)議運(yùn)行情況是,邊界路由器R1的ethernet0/0,loopback0;R2的ethernet0/0,ethernet0/1,loopback0;R4的ethernet0/1宣告進(jìn)OSPF 110進(jìn)程中;邊界路由器R4的ethernet0/0,loopback0;R3的ethernet0/0,ethernet0/1,loopback0;R1的ethernet0/1宣告進(jìn)RIP協(xié)議的進(jìn)程中。每個(gè)接口具體的地址如表2所示。
表2 路由器接口IP地址
設(shè)備名設(shè)備接口名接口地址 R1 Ethernet0/012.1.1.1/24 Ethernet0/113.1.1.1/24 Loopback01.1.1.1/24 R2 Ethernet0/024.1.1.2/24 Ethernet0/112.1.1.2/24 Loopback02.2.2.2/24 R3 Ethernet0/013.1.1.3/24 Ethernet0/134.1.1.3/24 Loopback03.3.3.3/24 R4 Ethernet0/034.1.1.4/24 Ethernet0/124.1.1.4/24 Loopback04.4.4.4/24
通過將四臺(tái)路由器的不同接口劃分到不同的路由選擇協(xié)議中,構(gòu)建出兩個(gè)AS域。通過路由重分發(fā),使得這兩個(gè)域內(nèi)的路由互聯(lián)互通。在重分發(fā)時(shí),我們按照順時(shí)針和逆時(shí)針兩個(gè)方向進(jìn)行路由重分發(fā),并分析是否會(huì)出現(xiàn)次優(yōu)路由,以及設(shè)計(jì)了兩種解決辦法來解決可能出現(xiàn)的次優(yōu)路由問題。
(1)在R1上完成OSPF重分發(fā)進(jìn)RIP
在雙點(diǎn)雙向重分發(fā)中,如果一臺(tái)邊界路由器執(zhí)行完路由重分發(fā)后產(chǎn)生了次優(yōu)路由,就會(huì)使得另一臺(tái)邊界路由器的路由表選擇錯(cuò)誤的路由條目。所以在進(jìn)行重分發(fā)之前,先查看R4上的路由表,可以提前判斷出R4上既有RIP路由亦有OSPF路由,其中RIP路由為13.1.1.0/24,3.3.3.0/24,OSPF路由為1.1.10/24,12.1.1.0/24,2.2.2.0/24,查看結(jié)果如圖2所示。
圖2 R4的路由表
和判斷的完全一致。
現(xiàn)在,在R1上完成重分發(fā),將OSPF路由重分發(fā)進(jìn)RIP進(jìn)程中,重分發(fā)命令為:
R1(config)#router rip
R1(config-router)#redistribute ospf 110 metric 1
重分發(fā)后,OSPF域中的1.1.1.0/24,12.1.1.0/24,2.2.2.0/24這三條路由將會(huì)進(jìn)入到RIP進(jìn)程中。通過判斷,由于RIP路由的管理距離為120,而OSPF路由的管理距離為110。故R1在訪問以上3個(gè)網(wǎng)段時(shí),根據(jù)管理距離越小越可靠、越優(yōu)先的原則,仍然選用OSPF路由。所以,在R1上完成OSPF路由重分發(fā)到RIP進(jìn)程中以后,沒有產(chǎn)生次優(yōu)路由,則R4的路由表也不會(huì)發(fā)生變化。
(2)在R4上完成RIP重分發(fā)進(jìn)OSPF
同理,在進(jìn)行重分發(fā)之前,先查看R1上的路由表,可以提前判斷出R1上既有RIP路由亦有OSPF路由,其中RIP路由為4.4.4.0/24,34.1.1.0/24,3.3.3.0/24,OSPF路由為24.1.1.0/24,2.2.2.0/24,查看結(jié)果如圖3所示。
圖3 R1的路由表
和判斷的完全一致。
現(xiàn)在,在R4上完成重分發(fā),將RIP路由重分發(fā)進(jìn)OSPF進(jìn)程中,重分發(fā)命令為:
R4(config)#router ospf 110
R4(config-router)#redistribute rip subnets
重分發(fā)后,RIP域中的4.4.4.0/24,34.1.1.0/24,3.3.3.0/24這三條路由將會(huì)進(jìn)入到OSPF進(jìn)程中。此時(shí),查看R2的路由表,可以看見R2上多了4條O E2類型的路由,如圖4所示。
圖4 被次優(yōu)路由影響的R2路由表
同樣,這四條路由也會(huì)經(jīng)過R1進(jìn)入到R1的LSDB(Link State DataBase,鏈路狀態(tài)數(shù)據(jù)庫)中。那么,這4條路由會(huì)不會(huì)影響R1的路由表呢?答案是肯定會(huì)的,并且會(huì)影響R1路由表中的4.4.4.0/24,34.1.1.0/24,3.3.3.0/24這3條路由條目,使得這3條路由所攜帶的標(biāo)志由“R”變?yōu)椤癘 E2”,下一跳由“13.1.1.3”變?yōu)椤?2.1.1.2”,具體如圖5所示。這是由于R1從OSPF域中獲得這3條OSPF路由,其管理距離為110,而從RIP域中獲得的這3條路由的管理距離為120,而又因?yàn)楣芾砭嚯x越小,代表路由越可靠,路由越優(yōu)先的原則,所以R1上的這3條路由選擇了來自O(shè)SPF域的。以上這種情況的出現(xiàn),顯然是路由重分發(fā)導(dǎo)致了次優(yōu)路由問題。
圖5 被次優(yōu)路由影響的R1路由表
根據(jù)上述分析,我們這里給出兩種解決方案:
方案一:根據(jù)管理距離優(yōu)先于度量值的原則,我們可以采用通過修改管理距離的方法使以上三條路由的下一跳恢復(fù)為13.1.1.3,可以采取以下兩種思路:
思路1:將R1訪問4.4.4.0/24,34.1.1.0/24,3.3.3.0/24的OSPF路由的管理距離改大,使其大于RIP的管理距離,即至少改為121;
思路2:將R1訪問4.4.4.0/24,34.1.1.0/24,3.3.3.0/24的RIP路由的管理距離改小,使其小于OSPF的管理距離,即至多改為119;
由于篇幅有限,這里以思路1做演示,先用標(biāo)準(zhǔn)ACL抓取那三條出錯(cuò)的路由,再在OSPF進(jìn)程中修改管理距離時(shí)調(diào)用ACL。具體命令如下所示:
R1(config)#access-list 10 permit 3.3.3.0
R1(config)#access-list 10 permit 4.4.4.0
R1(config)#access-list 10 permit 34.1.1.0
R1(config)#router ospf 110
R1(config-router)#distance 121 4.4.4.4 0.0.0.0 10
管理距離修改完畢后,查看R1的路由表,次優(yōu)路由問題被解決,路由表恢復(fù)正常,即R1針對那3條路由選擇了來自RIP域的路由條目,如圖6所示。
圖6 恢復(fù)正常的R1路由表
方案二:通過route-map解決次優(yōu)路徑問題
使用route-map解決該問題有以下三個(gè)優(yōu)點(diǎn):
一是因?yàn)闃?biāo)準(zhǔn)ACL在網(wǎng)絡(luò)工具中的定位是最底層的工具,通常不建議直接使用最底層的工具;
二是因?yàn)閞oute-map功能強(qiáng)大,不僅可以直接被調(diào)用,也可以在route-map語句中調(diào)用其他路由過濾工具,還可以根據(jù)路由的一些參數(shù)匹配路由,也可以修改某些路由參數(shù)。一些常見的路由參數(shù)如表3所示。
表3 可以匹配的常見路由參數(shù)
路由參數(shù)匹配的配置命令 標(biāo)準(zhǔn)ACLmatch ip address acl 通告者路由器match ip route-source 下一跳IP地址match ip next-hop 路由的出接口match interface 路由的標(biāo)記match tag 路由的類型match route-type 路由的度量值match metric
三是因?yàn)槭褂胷oute-map在邊界路由器上進(jìn)行路由的過濾,可以從源頭解決次優(yōu)路由傳播,減少次優(yōu)路由的影響范圍,減小次優(yōu)路由在傳播過程中對網(wǎng)絡(luò)設(shè)備內(nèi)存和CPU的消耗。
在配置解決方案二之前,先清除一下解決方案一,只需在OSPF進(jìn)程中刪除修改管理距離的配置命令及其調(diào)用的標(biāo)準(zhǔn)ACL。具體命令如下:
R1(config)#router ospf 110
R1(config-router)#no distance 121 4.4.4.4 0.0.0.0 10
清除解決方案一的配置后,R1會(huì)再次受到次優(yōu)路由的影響,所以,接下來在R4上配置解決方案二。
首先,使用標(biāo)準(zhǔn)ACL抓取會(huì)引起次優(yōu)路由的路由條目;然后,使用route-map的deny語句來調(diào)用ACL10,因?yàn)閞oute-map有一條默認(rèn)語句,拒絕所有其他路由條目,所以別忘記再寫一條空的permit語句,放行所有其他路由條目;最后,在OSPF進(jìn)程中重分發(fā)RIP路由的語句后面調(diào)用該route-map即可。具體命令如下:
R4(config)#access-list 10 permit 3.3.3.0
R4(config)#access-list 10 permit 4.4.4.0
R4(config)#access-list 10 permit 34.1.1.0
R4(config)#route-map R-to-O deny 10
R4(config-route-map)#match ip address 10
R4(config)#route-map R-to-O permit 20
R4(config)#router ospf 110
R4(config-router)#redistribute rip subnets route-map R-to-O
此時(shí),被次優(yōu)路由影響的R1路由表就又恢復(fù)正常了。
至此,就已經(jīng)完成了雙點(diǎn)單向的路由重分發(fā)了,還需要逆時(shí)針完成另一個(gè)方向的雙點(diǎn)單向路由重分發(fā),才算是完全完成雙點(diǎn)雙向路由重分發(fā)。
由于篇幅有限這里就不再贅述,只提供重分發(fā)時(shí)的命令及發(fā)生環(huán)路時(shí)解決方法的命令,其重分發(fā)及解決次優(yōu)路徑的原理與順時(shí)針方向的重分發(fā)相同。在R4上將OSPF路由重分發(fā)進(jìn)RIP進(jìn)程中,在R1上將RIP路由重分發(fā)進(jìn)OSPF進(jìn)程中。配置命令如下:
R4(config)#router rip
R4(config-router)#redistribute ospf 110 metric 1
R1(config)#router ospf 110
R1(config-router)#redistribute rip subnets
經(jīng)過分析,在R4上將OSPF路由重分發(fā)進(jìn)RIP進(jìn)程中不會(huì)產(chǎn)生次優(yōu)路由問題;而在R1上將RIP重分發(fā)進(jìn)OSPF中后,會(huì)導(dǎo)致R4的路由表上去往3.3.3.0/24,13.1.1.0/24這兩個(gè)網(wǎng)絡(luò)的路由條目選擇打“O E2”的次優(yōu)路由,如圖7所示。
圖7 受次優(yōu)路徑影響的R4路由表
這里的解決方法使用和上面方案二一樣的,具體原理不多贅述,具體配置命令如下:
R1(config)#access-list 10 permit 3.3.3.0
R1(config)#access-list 10 permit 13.1.1.0
R1(config)#route-map R-to-O-2 deny 10
R1(config-route-map)#match ip address 10
R1(config)#route-map R-to-O-2 permit 20
R1(config)#router ospf 110
R1(config-router)#redistribute rip subnets route-map R-to-O-2
此時(shí),被次優(yōu)路由影響的R4路由表就恢復(fù)正常了。
至此,雙點(diǎn)雙向路由重分發(fā)的配置及解決重分發(fā)過程中出現(xiàn)次優(yōu)路徑的方法和配置全部結(jié)束。
路由重分發(fā)可以使得使用多種路由選擇協(xié)議的大型網(wǎng)絡(luò)互聯(lián)互通,但是,如果重分發(fā)操控不當(dāng)很容易產(chǎn)生次優(yōu)路徑和路由環(huán)路問題。本文基于EVE-ng虛擬仿真環(huán)境模擬器搭建了一個(gè)網(wǎng)絡(luò)實(shí)驗(yàn)環(huán)境,通過模擬兩款路由選擇協(xié)議的雙點(diǎn)雙向路由重分發(fā),詳細(xì)闡述了重分發(fā)中次優(yōu)路由的產(chǎn)生原因,并且通過修改管理距離和使用route-map過濾路由這兩種方式對問題進(jìn)行了行之有效的解決,并已在許多實(shí)際網(wǎng)絡(luò)環(huán)境中所使用。
[1]李竇杰,陳德媛,李銳.雙點(diǎn)雙向重分布中的次優(yōu)路徑問題及其解決辦法[J].中國新通信,2014,16(09):88-91.
[2]陳利.基于ENSP的多邊界路由引入問題的分析與解決[J].伊犁師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2021,15(01):58-66.
[3]張韜.路由重分發(fā)中管理距離值的配置與調(diào)整[J].科技視界,2013(22):38+57.
[4]劉玉貞,李雪菲.路由協(xié)議重分發(fā)技術(shù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2016,42(09):62-65.
[5]唐燈平,凌興宏.基于EVE-NG模擬器搭建網(wǎng)絡(luò)互聯(lián)技術(shù)實(shí)驗(yàn)仿真平臺(tái)[J].實(shí)驗(yàn)室研究與探索,2018,37(05):145-14
[6]閔應(yīng)驊.計(jì)算機(jī)網(wǎng)絡(luò)路由研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2003(06):641-649.
[7]馬記,劉剛.淺談策略路由與路由策略[J].網(wǎng)絡(luò)安全和信息化,2021(07):78-80.
[8]李進(jìn)珍,蔡烽榕,馬記.探究路由與環(huán)路的問題[J].網(wǎng)絡(luò)安全和信息化,2018(03):47-48.