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

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

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

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

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

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

圖5 模擬環境(標準區域)
OSPF同步完成后,R1的LSDB信息如圖6所示,共包含5類LSA。

圖6 移至標準區域后R1的LSDB信息
以下介紹通過配置訪問控制列表控制引入LSA的方式來減少上游路由器R2發出的LSA數量。
R1新增配置為:


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

圖7 R1的LSDB信息(ACL方式)
通過圖7可以發現,R1中三類LSA數量變為0,LSA的總數量明顯減少。此方法與保留在骨干區域方法一樣,需要在R1上配置一條缺省路由才能保證測試環境中所有設備互相通信。此外,通過配置地址前綴列表并將其應用在區域中的方法也可以控制區域引入的LSA數量。配置方法與配置訪問控制列表方法類似,最終結果也與其相同。
(3)移至特殊區域。特殊區域能夠屏蔽部分LSA,故將目標路由器R1移至特殊區域也能實現LSA數量的減少。完全末節區域不允許發布自治系統外部路由和區域間的路由,只允許發布區域內路由。按照圖5的拓撲,將區域2的類型由標準區域修改為完全末節區域可以減少LSA數量。

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

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