朱壯普
(山西職業(yè)技術(shù)學(xué)院 計算機(jī)工程系,山西 太原 030006)
隨著社會經(jīng)濟(jì)的飛速發(fā)展,企業(yè)的收購重組已成為常見的市場行為,隨之而來的是企業(yè)網(wǎng)絡(luò)的合并。因合并前都有各自的網(wǎng)絡(luò)體系架構(gòu),若重新統(tǒng)一規(guī)劃設(shè)計,必然要投入大量的工作。路由重發(fā)布是網(wǎng)絡(luò)合并中首選的技術(shù)方案,只需要在兩側(cè)對接的設(shè)備上進(jìn)行路由重發(fā)布操作,便可實現(xiàn)互通互連,且無需改變各自的網(wǎng)絡(luò)架構(gòu)。路由重發(fā)布技術(shù)的實施需要詳細(xì)分析網(wǎng)絡(luò)的通信需求,并針對潛在的問題進(jìn)行優(yōu)化設(shè)計,保證網(wǎng)絡(luò)運行的穩(wěn)定。
多點雙向路由重發(fā)布會造成次優(yōu)路徑和路由環(huán)路等問題,嚴(yán)重影響網(wǎng)絡(luò)的通信。造成這些問題的根本原因是路由的域間循環(huán),即路由從起始路由域通告到另一個路由域后,又被通告到起始路由域[1]。
次優(yōu)路徑是指因循環(huán)通告路由導(dǎo)致的低效路徑的選擇,降低了通信效率。如圖1所示,圖中有兩個路由域,分別是RIP路由域和OSPF路由域,R2和R4充當(dāng)路由重發(fā)布節(jié)點,在R2和R4配置路由雙向重發(fā)布后,發(fā)現(xiàn)R4到達(dá)子網(wǎng)10.10.10.1/32的路由并沒有選擇最佳的下一跳指向R1的路徑,而是選擇了下一跳指向R3的穿越OSPF路由域的次優(yōu)路徑。
問題的本質(zhì)是路由選路機(jī)制導(dǎo)致的。路由器通過路由協(xié)議會學(xué)習(xí)到去往各個目標(biāo)網(wǎng)絡(luò)的最佳路徑,然后添加到路由表中。當(dāng)去往同一個目標(biāo)網(wǎng)絡(luò)有多個路由源時,首先比較路由源的AD(管理距離)值,AD值越小,路徑優(yōu)先級越高;若AD值相同,即路由源相同,則比較度量值,度量值越小,路徑優(yōu)先級越高;若度量值也相同,則會出現(xiàn)負(fù)載分擔(dān)路徑,一起添加到路由表。
結(jié)合選路原則,我們分析圖1中次優(yōu)路徑產(chǎn)生的過程:
圖1 次優(yōu)路徑Fig.1 Suboptimal path
1)R1通過RIP協(xié)議將10.10.10.1/32路由通告給R2和R4,R2和R4都會獲得一條去往10.10.10.1/32的下一跳為R1的RIP路由。
2)R2配置了路由重發(fā)布,會將通過RIP協(xié)議學(xué)習(xí)到的10.10.10.1/32路由以5類LSA的方式通告到OSPF路由域中,R3會學(xué)習(xí)到10.10.10.1/32的OSPF外部路由,同時通告給R4。
3)R4收到了分別來自R1和R3的去往同一個目標(biāo)網(wǎng)絡(luò)10.10.10.1/32的兩個路由,依據(jù)選路規(guī)則先比較AD值,OSPF協(xié)議AD值(110)小于RIP協(xié)議AD值(120),所以R4認(rèn)為路由源為OSPF的路徑優(yōu)先級更高,從而將該路徑添加到路由表中。很顯然R4去往10.10.10.1/32 的路徑選擇R4-R1更合理。事實上,R4選擇的路徑是R4-R3-R2-R1,這樣次優(yōu)路由就產(chǎn)生了。
4)同理R2上也會出現(xiàn)去往10.10.10.1/32的次優(yōu)路徑。
路由環(huán)路是指到達(dá)某個目標(biāo)網(wǎng)絡(luò)的路由在相關(guān)路由設(shè)備上的轉(zhuǎn)發(fā)路徑構(gòu)成了環(huán)路,造成IP數(shù)據(jù)包的循環(huán)傳遞,直至TTL值減為0為止,嚴(yán)重消耗了系統(tǒng)資源和通信資源,導(dǎo)致通信效率低下,甚至通信中斷[2]。路由環(huán)路存在兩種情形,一是匯總路由環(huán)路,二是子網(wǎng)路由環(huán)路,下面就兩種情形分別進(jìn)行分析:
1.2.1匯總路由環(huán)路
圖2中,R2和R4依然充當(dāng)路由重發(fā)布節(jié)點。在路由域RIP的R1設(shè)備上掛接1.1.1.1/32-1.1.1.4/32四個子網(wǎng)路由。若為簡化路由條目,提高路由轉(zhuǎn)發(fā)效率,RIP路由域中的路由器開啟路由自動匯總功能。結(jié)合選路原則,分析匯總路由環(huán)路產(chǎn)生的過程。
圖2 匯總路由環(huán)路Fig.2 Summarize routing loops
1)R2收到R1發(fā)來的1.0.0.0/8的匯總路由,添加到路由表,下一跳指向R1(10.10.12.1),同時向OSPF路由域中發(fā)送5類LSA的外部路由通告。
2)R3通過R2學(xué)習(xí)到了1.0.0.0/8的外部路由,下一跳指向R2(172.16.23.2),同時向R4發(fā)送1.0.0.0/8的5類LSA的路由通告。
3)同樣,R4通過R3學(xué)習(xí)到了1.0.0.0/8的外部路由,下一跳指向R3(172.16.34.3),并將該路由發(fā)送給R1。
4)R1從R4收到該匯總路由,雖然1.0.0.0/8路由起源于R1,但發(fā)送接口和接收接口并非同一接口,并沒違反RIPv2默認(rèn)開啟的水平分隔原則。因此,R1會將1.0.0.0/8添加到路由表,下一跳指向R4(10.10.14.4)。
我們通過4臺路由器的路由表可以發(fā)現(xiàn),關(guān)于1.0.0.0/8路由的轉(zhuǎn)發(fā)路徑構(gòu)成了一個環(huán)路(R1—R2—R3—R4—R1……)。在訪問1.1.1.1/32至1.1.1.4/32時,并不存在問題,因為R1上存在這4個子網(wǎng)的明細(xì)路由,能夠精確匹配,不會按照匯總路由轉(zhuǎn)發(fā)。然而當(dāng)訪問其它的1.0.0.0/8的子網(wǎng)(如1.1.1.5)時,在R1上無法匹配明細(xì)路由,會按照1.0.0.0/8的匯總路由轉(zhuǎn)發(fā),這樣就構(gòu)成了如圖2所示的通信環(huán)路。當(dāng)然環(huán)路的方向也可能相反,取決于R2和R4路由器RIP協(xié)議啟動的先后順序。
1.2.2子網(wǎng)路由環(huán)路
如圖3所示,在圖1的基礎(chǔ)上,R2和R4之間連接了兩條鏈路,分別歸屬于RIP路由域和OSPF路由域,R2和R4依然充當(dāng)路由重發(fā)布節(jié)點。
圖3 子網(wǎng)路由環(huán)路Fig.3 Subnet routing loop
我們來分析環(huán)路產(chǎn)生的過程:
1)R4從R1獲得一條10.10.10.1/32的RIP路由,路由傳遞經(jīng)歷了1跳,度量值為1,下一跳指向R1(10.10.14.1),同時將該路由以5類LSA的方式通告到OSPF路由域。
2)R2會分別從R1、R4學(xué)習(xí)到10.10.10.1/32的路由,考慮到AD值,R2會選擇來自R4的OSPF外部路由加入到路由表,下一跳指向R4(172.16.24.4),同時將該路由引入到RIP路由域中。
3)R4又從R2獲得了一條去往10.10.10.1/32的RIP路由。如果R2在RIP協(xié)議下配置引入OSPF路由的度量值為1(redistribute ospf 1 metric 1)時,那么R4就會存在兩條去往10.10.10.1/32 的RIP等價路徑,下一跳分別指向R1(10.10.14.1)和R2(10.10.24.2),而R2的10.10.10.1/32路由的下一跳指向R4(172.16.24.4),這樣就在R2和R4之間形成了去往10.10.10.1/32網(wǎng)絡(luò)的環(huán)路。
根據(jù)前面的分析可以看出,導(dǎo)致多點雙向路由重發(fā)布路徑問題的原因是路由選路機(jī)制造成的路由在路由域之間反復(fù)循環(huán)。因此,解決該問題的關(guān)鍵是如何避免路由的域間循環(huán),常用的解決辦法有兩種,一種是設(shè)置路由的管理距離AD;另一種是采用路由標(biāo)記進(jìn)行路由過濾。
簡單歸納路由重發(fā)布的原理,即在路由器上將A協(xié)議重發(fā)布到B協(xié)議中,只發(fā)布路由表中A協(xié)議標(biāo)記的路由以及運行A協(xié)議的接口網(wǎng)段。結(jié)合圖1我們可以看出,重發(fā)布節(jié)點R4上將從RIP路由域中引入的路由10.10.10.1/32,又以O(shè)SPF路由形式重發(fā)布到RIP路由域中,因為在R4路由表中,該路由是以AD值更小的OSPF路由形式出現(xiàn),那么我們可以在R4上將10.10.10.1/32的OSPF外部路由AD值設(shè)置為大于120(RIP協(xié)議AD值),使得R4上關(guān)于10.10.10.1/32的路由不以O(shè)SPF形式出現(xiàn),自然不會被重發(fā)布到RIP路由域中,這樣就避免了域間循環(huán)。
事實上,OSPF協(xié)議支持對域內(nèi)、域間及外部路由進(jìn)行AD值的設(shè)置,其操作命令為:
distance ospf {externalad-value} {intra-areaad-value}{inter-areaad-value}
花括號中分別是對外部路由、域內(nèi)路由和域間路由進(jìn)行AD值設(shè)置。
在具體操作中,只需要調(diào)整OSPF外部路由的AD值,即可避免RIP-OSPF域間循環(huán)問題,切不可將全部OSPF路由AD值都設(shè)置為大于120,否則就會出現(xiàn)同樣的路徑問題。如圖4所示,我們將OSPF的外部路由AD值設(shè)置為130,則在R4上只出現(xiàn)AD值更小的子網(wǎng)X的RIP路由,就可以避免X子網(wǎng)路由再從OSPF路由域發(fā)布到RIP路由域。
基于此思路,可以概括此方案適合于以下的多路由域環(huán)境中:
1)至少一種路由協(xié)議支持外部路由AD值修改;
2)假設(shè)多路由域由A、B協(xié)議構(gòu)成,且A協(xié)議支持AD值修改,要滿足A協(xié)議內(nèi)部路由AD < B協(xié)議AD < A協(xié)議外部路由AD。
圖4 修改AD值避免路由域間循環(huán)Fig.4 Modifying AD values to avoid routing inter-domain loops
常見的多路由域環(huán)境如RIP-OSPF、RIP-EIGRP、OSPF-EIFRP就符合上述情況。
這種解決方案的思路是,設(shè)定一個路由標(biāo)記值,用來標(biāo)示來自高AD值路由域的路由,這些標(biāo)記會隨路由一起傳遞到低AD值的路由域中。當(dāng)標(biāo)記路由從低AD值路由域回傳到高AD值路由域時將其過濾,以避免路由域間循環(huán)[3]。
如圖5所示,RIP路由域中的子網(wǎng)X路由通過R2傳入到OSPF路由域中時,給其設(shè)定一個標(biāo)記值。當(dāng)其通過R4回傳到RIP路由域時,R4對標(biāo)記值識別,并進(jìn)行路由過濾,這樣就避免了子網(wǎng)X路由的域間循環(huán)。當(dāng)然子網(wǎng)X路由的反方向傳輸也需要同樣的設(shè)置,即在R2和R4上需要同時對子網(wǎng)X進(jìn)行標(biāo)記,同時在其回傳到RIP路由域時,將其過濾掉。
這種方案涉及到兩個技術(shù)環(huán)節(jié),一是路由標(biāo)記;二是路由過濾。路由標(biāo)記采用route tag或route-map(路由映射表)實現(xiàn),路由過濾是通過distribute-list(分發(fā)列表)來實現(xiàn)。distribute-list配置在路由協(xié)議下,本身不具備過濾功能,具體過濾哪些路由是由它所調(diào)用route-map、ACL或IP前綴列表等工具來定義的。
結(jié)合圖1拓?fù)?在R2和R4上采用route tag工具對引入到OSPF路由域中的RIP路由進(jìn)行標(biāo)記,標(biāo)記值設(shè)置為120。使用route-map工具定義過濾的路由范圍,并在OSPF路由引入到RIP路由域時,濾掉所有標(biāo)記為120的路由。
圖5 過濾標(biāo)記路由避免路由域間循環(huán)Fig.5 Filter tag routing to avoid routing inter-domain loops
具體配置如下:
router ospf 1
redistribute rip subnets tag 120 ①
network 172.16.0.0 0.0.255.255 area 0
distribute-list route-mapFilter-tag120 in ②
route-mapFilter-tag120 deny 10 ③
match tag 120
route-mapFilter-tag120 permit 20
說明:
1)在OSPF協(xié)議下引入的所有RIP路由都標(biāo)記為120;
2)distribute-list調(diào)用路由映射表Filter-tag120,OSPF只重發(fā)布Filter-tag120中包含的路由;
3)定義路由映射表Filter-tag120,匹配除了路由標(biāo)記為120的所有路由。
需要注意的是,route-map定義了兩條規(guī)則,即deny 10和permit 20。前者子語句match tag 120代表匹配標(biāo)記為120的路由,即所有從RIP路由域中傳過來的路由,動作為deny(拒絕)。后者無子語句,代表匹配所有路由,動作為permit(允許)。兩者綜合起來所定義的路由范圍就是除了路由標(biāo)記為120的所有其它路由。
R2和R4都采用上述配置后就解決了次優(yōu)路徑問題。圖6、圖7為R2、R4優(yōu)化后的路由表。當(dāng)然將此方法應(yīng)用到圖2、圖3拓?fù)渲型瑯涌梢越鉀Q環(huán)路問題。
圖6 優(yōu)化后的R2路由表Fig.6 Optimized R2 routing table
圖7 優(yōu)化后的R4路由表Fig.7 Optimized R4 routing table
路由多點雙向重發(fā)布問題是由路由選路機(jī)制所致,造成了路由的域間循環(huán)。這些問題具有一定的隱蔽性,產(chǎn)生次優(yōu)路徑依然能夠通信,而路由環(huán)路需要特定的通信才能觸發(fā),所以容易被網(wǎng)絡(luò)工程師忽視,進(jìn)而引發(fā)了相應(yīng)的通信問題。
文中基于兩個路由域,對多點雙向重發(fā)布問題進(jìn)行了闡述,分析了問題產(chǎn)生的原因,并歸納出了常規(guī)的解決方案。值得注意的是,兩種方案在實施上都存在著局限性,如路由過濾技術(shù)在應(yīng)用上可能會導(dǎo)致原有路徑的負(fù)載均衡、路由備份等不再有效。實際工程中,尤其是面臨更為復(fù)雜的多區(qū)域環(huán)境,在技術(shù)應(yīng)用上需要綜合考慮。