葉 俊,劉松鶴,陳相宇,路 楊,楊童斌
(中國電子科技集團(tuán)公司第十五研究所,北京 100083)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,路由器逐漸成為重要的網(wǎng)絡(luò)設(shè)備。路由器圍繞路由表進(jìn)行路徑選擇和報(bào)文轉(zhuǎn)發(fā),可分為直連路由、靜態(tài)路由以及動(dòng)態(tài)路由[1]。路由協(xié)議是路由器之間維護(hù)路由表的規(guī)則,用于發(fā)現(xiàn)路由、生成路由表,并指導(dǎo)報(bào)文的轉(zhuǎn)發(fā)。常見的路由協(xié)議包括RIP、OSPF、EIGRP以及BGP。其中開放式最短路徑優(yōu)先(Open Shortest Path First,OSPF)協(xié)議具有眾多優(yōu)勢(shì),逐漸成為廣域網(wǎng)和企業(yè)網(wǎng)中應(yīng)用最廣泛的路由協(xié)議之一[2]。網(wǎng)絡(luò)的規(guī)模越大,路由表也就越大。現(xiàn)實(shí)網(wǎng)絡(luò)環(huán)境中,路由器的性能問題導(dǎo)致網(wǎng)絡(luò)設(shè)備出現(xiàn)通信異常的情況時(shí)有發(fā)生。基于此,針對(duì)實(shí)際使用時(shí)網(wǎng)絡(luò)設(shè)備在OSPF網(wǎng)絡(luò)中出現(xiàn)的路由超限問題,提出了幾種解決方案,為類似網(wǎng)絡(luò)設(shè)備在OSPF網(wǎng)絡(luò)中出現(xiàn)路由超限問題提供了低成本的解決方案。
在實(shí)際使用中,出現(xiàn)了終端設(shè)備與目的設(shè)備通信不穩(wěn)定或時(shí)通時(shí)斷的現(xiàn)象,故障時(shí)的網(wǎng)絡(luò)拓?fù)淙鐖D1所示。終端通過三層交換機(jī)和路由器連接至網(wǎng)絡(luò),所有網(wǎng)絡(luò)設(shè)備運(yùn)行OSPF協(xié)議,且都位于區(qū)域0。排查故障時(shí)發(fā)現(xiàn)問題出現(xiàn)在三層交換機(jī)上,故障原因?yàn)槿龑咏粨Q機(jī)運(yùn)行OSPF路由協(xié)議時(shí)路由數(shù)量達(dá)到系統(tǒng)上限,即路由超限。

圖1 故障時(shí)網(wǎng)絡(luò)拓?fù)鋱D
本例中,三層交換機(jī)的路由表容量最大值為512條,而通過路由器查看到實(shí)際環(huán)境中的路由表數(shù)量超過1 000條,遠(yuǎn)超三層交換機(jī)路由表容量的最大值。當(dāng)三層交換機(jī)學(xué)習(xí)到目的設(shè)備對(duì)應(yīng)的路由時(shí),交換機(jī)正常轉(zhuǎn)發(fā)數(shù)據(jù)包,通信正常。當(dāng)交換機(jī)未學(xué)習(xí)到對(duì)應(yīng)路由時(shí),通信中斷。
2.1.1 OSPF路由協(xié)議介紹
OSPF路由協(xié)議是一種基于鏈路狀態(tài)的內(nèi)部網(wǎng)關(guān)協(xié)議,它將自治系統(tǒng)劃分為一個(gè)或多個(gè)邏輯區(qū)域。同一自治系統(tǒng)內(nèi)的所有OSPF路由器會(huì)通過泛洪的方法來交換鏈路狀態(tài)廣播(Link State Advertisement,LSA),路由器根據(jù)其接收到的LSA報(bào)文更新自己的鏈路狀態(tài)數(shù)據(jù)庫(Link State Data Base,LSDB),并將該LSA報(bào)文轉(zhuǎn)發(fā)給與其建立鄰接關(guān)系的路由器,直至穩(wěn)定。當(dāng)LSDB同步完成時(shí),路由器會(huì)根據(jù)LSDB采用最短路徑優(yōu)先算法(Shortest Path First,SPF)計(jì)算出各自的OSPF路由表[3]。
2.1.2 LSA類型
OSPF路由協(xié)議共規(guī)定了11種LSA,但常見的只有以下6種[4]。一是一類LSA(Router LSA),用于描述路由器的直連鏈路狀態(tài)信息,僅在所屬區(qū)域內(nèi)傳播;二是二類LSA(Network LSA),用于描述本區(qū)域內(nèi)的網(wǎng)絡(luò)信息及連接到此網(wǎng)絡(luò)的所有路由器,僅在所屬的區(qū)域內(nèi)傳播;三是三類LSA(Network summary LSA),用于描述OSPF的區(qū)域間路由,由邊界路由(Area Border Router,ABR)產(chǎn)生,ABR發(fā)送此類LSA到一個(gè)區(qū)域,用來通告該區(qū)域外部的目的地址;四是四類LSA(ASBR summary LSA),由ABR產(chǎn)生,描述到ASBR的路由,通告給與ASBR所在區(qū)域的其他相關(guān)區(qū)域;五是五類LSA(AS external LSA),由自治系統(tǒng)邊界路由器(AS Boundary Router,ASBR)產(chǎn)生,描述到自治系統(tǒng)外部的路由,通告到所有的區(qū)域;六是七類LSA(NSSA External LSA),由ASBR產(chǎn)生,描述到自治系統(tǒng)外部的路由,僅在非純末節(jié)區(qū)域內(nèi)傳播[5]。
2.1.3 區(qū)域類型
一般可將區(qū)域劃分為如下5種。一是普通區(qū)域。普通區(qū)域包括標(biāo)準(zhǔn)區(qū)域和骨干區(qū)域。標(biāo)準(zhǔn)區(qū)域是最通用的區(qū)域,骨干區(qū)域是連接所有其他OSPF區(qū)域的中央?yún)^(qū)域。二是末節(jié)區(qū)域。末節(jié)區(qū)域不允許發(fā)布自治系統(tǒng)外部路由,只允許發(fā)布區(qū)域內(nèi)路由和區(qū)域間的路由。三是完全末節(jié)區(qū)域。完全末節(jié)區(qū)域不允許發(fā)布自治系統(tǒng)外部路由和區(qū)域間的路由,只允許發(fā)布區(qū)域內(nèi)路由。四是非純末節(jié)區(qū)域。非純末節(jié)區(qū)域允許引入自治系統(tǒng)外部路由,由ASBR發(fā)布七類LSA通告給本區(qū)域,這些七類LSA在ABR上轉(zhuǎn)換成五類LSA。五是完全非純末節(jié)區(qū)域。完全非純末節(jié)區(qū)域允許引入自治系統(tǒng)外部路由,由ASBR發(fā)布七類LSA通告給本區(qū)域,這些七類LSA在ABR上轉(zhuǎn)換成五類LSA[6]。
2.1.4 路由計(jì)算
運(yùn)行OSPF路由協(xié)議的路由器建立鄰接關(guān)系并完成LSDB同步后,采用SPF算法計(jì)算路由。OSPF路由器將LSDB轉(zhuǎn)換成一張帶度量的有向圖,每臺(tái)路由器得到的有向圖是完全相同的。每臺(tái)路由器根據(jù)有向圖,使用SPF算法計(jì)算出一棵以自己為根的最短路徑優(yōu)先樹,此樹給出了到自治系統(tǒng)中各節(jié)點(diǎn)的路由[7]。
訪問控制列表本質(zhì)上是一種報(bào)文過濾器,它可以依據(jù)報(bào)文的源地址、目的地址、端口號(hào)、協(xié)議類型以及生效時(shí)間等對(duì)報(bào)文進(jìn)行匹配[8]。訪問控制列表是解決網(wǎng)絡(luò)安全性問題的有效方法之一,是用來過濾和控制進(jìn)出路由器數(shù)據(jù)流的一種訪問控制技術(shù),可以限制網(wǎng)絡(luò)流量,提高網(wǎng)絡(luò)性能,控制通信流量[9]。地址前綴列表也是一種報(bào)文過濾器,其作用類似于訪問控制列表,但比訪問控制列表更為靈活。使用地址前綴列表過濾路由信息時(shí),其匹配對(duì)象為路由信息的目的地址信息域[10]。
查看圖1中路由器的路由表發(fā)現(xiàn),OSPF路由占大多數(shù),其他路由數(shù)量很少。因此減少路由器發(fā)往交換機(jī)的OSPF路由數(shù)量即可有效減少交換機(jī)的最終路由表數(shù)量。通過減少三層交換機(jī)接收的LSA數(shù)量,可實(shí)現(xiàn)其路由表數(shù)量的減少。通過分析,本文提出3種實(shí)現(xiàn)方案。一是保持原始區(qū)域?qū)傩圆蛔儯苯优渲蒙嫌温酚善鳌6菍⑷龑咏粨Q機(jī)由骨干區(qū)域移至標(biāo)準(zhǔn)區(qū)域,再通過其他方法減少LSA數(shù)量。三是將三層交換機(jī)由骨干區(qū)域移至特殊區(qū)域。
按照實(shí)際環(huán)境搭建圖2模擬測(cè)試環(huán)境。R4配置一個(gè)IP地址為4.4.4.4/32的環(huán)回口并在OSPF進(jìn)程中引入直連路由。為了方便描述,三層交換機(jī)及路由器在模擬環(huán)境中均采用路由器進(jìn)行替代。

圖2 模擬環(huán)境
OSPF同步完成后,R1的LSDB信息如圖3所示,共包含5類LSA。

圖3 R1的LSDB信息
2.3.1 配置例程
(1)保留在骨干區(qū)域。保留模擬環(huán)境中區(qū)域信息不變,減少上游路由器R2下發(fā)給R1的LSA,即可減少R1最終路由表的數(shù)量。本文給出了基于AR2220E-S型號(hào)路由器設(shè)備的部分配置例程,供項(xiàng)目實(shí)施過程中參考。
R1新增配置為:

R2的GE 0/0/0口配置了ospf filter-lsa-out all命令,此命令可以對(duì)OSPF接口出方向的所有LSA進(jìn)行過濾。
OSPF同步完成后,R1的LSDB信息如圖4所示。

圖4 保留在骨干區(qū)域配置后R1的LSDB信息
此時(shí),R1只剩下1條一類LSA(R1自身發(fā)出),同時(shí)查看R2~R4的LSDB信息均無變化。由此可知,以上配置成功實(shí)現(xiàn)了R1中LSA數(shù)量的減少,結(jié)果達(dá)到預(yù)期。因?yàn)镽1不能正常接收OSPF網(wǎng)絡(luò)中其他路由器的LSA信息,所以此時(shí)R1的路由表中沒有其他網(wǎng)段的路由。為了終端及R1能與其他網(wǎng)段正常通信,可以在R1上配置一條缺省路由。配置完成后,模擬環(huán)境中所有設(shè)備均能互相通信。
(2)移至標(biāo)準(zhǔn)區(qū)域。將R1及相連R2接口移至標(biāo)準(zhǔn)區(qū)域后,使用過濾器(訪問控制列表、地址前綴列表)過濾指定LSA也能實(shí)現(xiàn)R1中LSA數(shù)量的減少。修改模擬環(huán)境,如圖5所示。R1的所有接口及R2的GE 0/0/0口移至區(qū)域2,其他保持不變。

圖5 模擬環(huán)境(標(biāo)準(zhǔn)區(qū)域)
OSPF同步完成后,R1的LSDB信息如圖6所示,共包含5類LSA。

圖6 移至標(biāo)準(zhǔn)區(qū)域后R1的LSDB信息
以下介紹通過配置訪問控制列表控制引入LSA的方式來減少上游路由器R2發(fā)出的LSA數(shù)量。
R1新增配置為:


在R2中創(chuàng)建一條訪問控制列表,過濾規(guī)則為拒絕所有源地址的報(bào)文,并通過filter import命令將此規(guī)則應(yīng)用在區(qū)域2中,用來對(duì)區(qū)域內(nèi)入方向的三類LSA進(jìn)行過濾。區(qū)域2為新建區(qū)域,區(qū)域內(nèi)只存在極少量一類及二類LSA,有一條通往自治系統(tǒng)外部的四類LSA,沒有五類LSA。
OSPF同步完成后,R1的LSDB信息如圖7所示。

圖7 R1的LSDB信息(ACL方式)
通過圖7可以發(fā)現(xiàn),R1中三類LSA數(shù)量變?yōu)?,LSA的總數(shù)量明顯減少。此方法與保留在骨干區(qū)域方法一樣,需要在R1上配置一條缺省路由才能保證測(cè)試環(huán)境中所有設(shè)備互相通信。此外,通過配置地址前綴列表并將其應(yīng)用在區(qū)域中的方法也可以控制區(qū)域引入的LSA數(shù)量。配置方法與配置訪問控制列表方法類似,最終結(jié)果也與其相同。
(3)移至特殊區(qū)域。特殊區(qū)域能夠屏蔽部分LSA,故將目標(biāo)路由器R1移至特殊區(qū)域也能實(shí)現(xiàn)LSA數(shù)量的減少。完全末節(jié)區(qū)域不允許發(fā)布自治系統(tǒng)外部路由和區(qū)域間的路由,只允許發(fā)布區(qū)域內(nèi)路由。按照?qǐng)D5的拓?fù)洌瑢^(qū)域2的類型由標(biāo)準(zhǔn)區(qū)域修改為完全末節(jié)區(qū)域可以減少LSA數(shù)量。

OSPF同步完成后,R1的LSDB信息如圖8所示。

圖8 R1的LSDB信息(Totally STUB區(qū)域)
通過上圖可以發(fā)現(xiàn),R1中LSA的總數(shù)量明顯減少。四類及五類LSA數(shù)量均為0,同時(shí)路由器學(xué)習(xí)到1條三類的缺省LSA,不存在其他三類LSA。因?yàn)榇嬖谌笔SA,故此方法無需在R1中額外配置一條缺省路由。
通過配置完全非純末節(jié)區(qū)域的方法同樣也能減少R1的LSA數(shù)量。配置完成后,除新增了1條三類的缺省LSA外還新增了1條七類的缺省LSA,其他結(jié)果與配置完全末節(jié)區(qū)域方式相同。
2.3.2 各方案比較
以上方案均能實(shí)現(xiàn)目標(biāo)路由器LSA數(shù)量的減少,即能實(shí)現(xiàn)最終路由表數(shù)量的減少,解決路由超限問題,并且不影響上游路由器正常學(xué)習(xí)目標(biāo)路由器網(wǎng)段的路由,但各方案在使用中有所區(qū)別。
保留在骨干區(qū)域的方案是最簡單有效的,只需要在上游路由器中配置相關(guān)命令,即可實(shí)現(xiàn)目標(biāo)路由器LSA的顯著降低,二類、三類、四類、五類這4類LSA均減為0。但在實(shí)際環(huán)境中部分廠商的路由器不支持類似命令,只能通過其他方案才能解決路由超限問題。
移至標(biāo)準(zhǔn)區(qū)域的方案是將路由器移至標(biāo)準(zhǔn)區(qū)域后,再通過配置過濾器(訪問控制列表或地址前綴列表)的方式對(duì)區(qū)域內(nèi)入方向的三類LSA進(jìn)行過濾來實(shí)現(xiàn)LSA數(shù)量的減少。因?yàn)樾陆▍^(qū)域中占大多數(shù)的是三類LSA,故其也能解決路由超限問題。配置過濾器時(shí),可以實(shí)現(xiàn)全部過濾或部分過濾,靈活性較好。實(shí)際環(huán)境中,各廠商路由器均支持相關(guān)配置命令,故本方案為普適性最好的方案。
移至特殊區(qū)域的方案同樣也能解決路由超限問題,但完全末節(jié)區(qū)域不支持三類、四類、五類及七類等LSA,完全非純末節(jié)區(qū)域不支持三類、四類及五類等LSA。因此在實(shí)際環(huán)境中,此方案可能會(huì)與某些實(shí)際需求沖突。
在某些應(yīng)用環(huán)境中,也可通過將目標(biāo)路由器移至特殊區(qū)域與過濾器相結(jié)合的方式來解決特定環(huán)境下的問題。
隨著網(wǎng)絡(luò)發(fā)展規(guī)模越來越大,網(wǎng)絡(luò)設(shè)備中路由表的數(shù)量也在迅速增加。OSPF路由協(xié)議作為目前廣域網(wǎng)和企業(yè)網(wǎng)中應(yīng)用最廣泛的路由協(xié)議之一,運(yùn)行該協(xié)議的網(wǎng)絡(luò)設(shè)備數(shù)量也在增加。通過分析OSPF路由協(xié)議的原理,提出了多種解決性能低下網(wǎng)絡(luò)設(shè)備在OSPF網(wǎng)絡(luò)中存在路由超限問題的解決方案,并比較了各方案的優(yōu)缺點(diǎn)。利用上游路由器來解決目標(biāo)路由器或三層交換機(jī)路由超限問題,實(shí)現(xiàn)了某些運(yùn)行OSPF路由協(xié)議場(chǎng)景下的低成本且使用靈活的解決方案,具有一定的指導(dǎo)意義。