司震宇
(東北農業大學網絡信息中心,哈爾濱 150030)
隨著信息技術的不斷發展,網絡安全等問題日益關注,現有網絡安全產品不能夠充分滿足用戶對網絡安全的需求,主要表現在:①已有網絡安全產品不能充分滿足用戶需要,產品升級需很高費用;②傳統網絡安全產品只針對特定的網絡安全事件做出相應的決策,對于突發的網絡安全事件不能做出反應;③傳統的網絡安全產品只注重對已有網絡安全問題的防御和打擊,不能及時反應網絡安全狀態,對網絡的當前安全狀態不能夠進行實時監控。網絡安全態勢評估技術能夠綜合各方面的安全因素,從整體上動態反映網絡安全狀況,并對安全狀況的發展趨勢進行預測和預警,為增強網絡安全性提供可靠的參照依據[1]。網絡安全態勢感知是在傳統網絡安全產品不能夠充分滿足網絡安全需要情況下提出,網絡態勢感知系統缺少一種有效、直觀的顯示方式把當前的網絡態勢信息報告給網絡管理者[2]。網絡拓撲不僅能夠反映受控網絡的連接,而且能夠加以利用使其為網絡態勢感知提供實時、準確的監控平臺。以網絡拓撲發現為基礎,通過網絡拓撲可視化描述網絡態勢信息能夠便于管理員了解網絡態勢,及時發現網絡異常行為。網絡層拓撲發現技術是網絡安全態勢感知系統的關鍵技術,是網絡態勢信息得以充分展現的基礎[3-4]。
國外的一些研究機構主要采用基于Traceroute命令的拓撲方法,該網絡拓撲發現方法對Internet的要求低,不需獲得網絡特殊權限。本文綜合分析目前較為流行的幾種網絡層拓撲發現方法的優缺點,提出一種由2種拓撲方法相結合的方式進行網絡層拓撲,主要使用基于SNMP的網絡層拓撲方法,輔助基于OSPF的網絡層拓撲方法,該方法能彌補基于SNMP的拓撲方法不能訪問未開啟SNMP協議路由器的缺限,具有重要的理論意義。
網絡層拓撲發現技術主要采用網絡層拓撲方法獲得路由器及其相互連接的信息和子網信息。網絡層拓撲發現技術是配置管理核心、故障和性能管理基礎,也是衡量一個商業網絡管理系統成敗的重要尺度。因此拓撲發現算法的設計在整個網管系統的研發中起重要作用[5-6]。
網絡層拓撲發現常用的協議主要有:SNMP協議、ICMP協議、OSPF協議和ARP協議。
拓撲發現采用廣度優先遍歷對網絡層設備進行搜索,以網絡中某一個路由器P0為起點,采用SNMP及其他輔助協議搜索與P0相鄰的路由器P1,P2,P3…Pi,接著再依次訪問與P1,P2,P3…Pi分別相鄰的所有節點,依次類推。
網絡層拓撲發現有很多種方法,每種方法都有其優缺點及其適應的網絡環境,需要對其優缺點及其適應的網絡環境進行分析,選出適用于網絡安全態勢感知的拓撲發現方法[12-13]。
1.2.1 基于SNMP協議的網絡層拓撲方法
基于SNMP的網絡層拓撲發現方法目標明確,拓撲發現效率高、速度快,對網絡帶來的負載小,系統開銷低。能夠通過SNMP協議直接從路由器路由表中獲取下一跳路由器地址信息,容易獲得比較完整的拓撲結構。網絡安全態勢感知同樣使用SNMP協議進行網絡監測。但缺點有:①對路由器的要求高,要求目標網絡中的路由器必須開啟SNMP協議,對與未開啟SNMP協議的設備無法獲取到拓撲發現所需要的信息;②通過SNMP協議訪問設備MIB庫時,必須知道設備MIB庫的community值,否則無法訪問設備MIB庫;③ipRoute Table表是以IP地址作為表項的索引,路由器每個端口都有一個IP地址,同一路由器多個端口ipRoute Table表的冗余信息多。
1.2.2 基于OSPF協議的網絡層拓撲方法
優先開放最短路徑協議OSPF(Open shortest path first,開放式最短路徑優先)是一種基于優先開放最短路徑鏈路狀態選擇算法的路由協議。使用OSPF的路由器之間通過交換信息來共享整個網絡的鏈路狀態。OSPF協議以其高效的路由收斂速率和較低的網絡資源占用率等優點適用于大規模網絡環境的網絡拓撲發現。但是該方法依賴路由器采用的路由協議,對于未使用OSPF協議的路由器不能夠獲取到其與其他路由器的連接狀態。
1.2.3 基于ICMP協議的網絡層拓撲方法
基于ICMP協議的網絡拓撲發現方法主要分為兩類,基于Ping命令的拓撲方法和基于Traceroute命令的拓撲方法。基于Ping命令的網絡拓撲發現方法主要針對于鏈路層進行拓撲,向目標主機進行Ping測試,如果主機可達便返回相應報文。基于Traceroute命令的網絡拓撲發現方法用于網絡層拓撲發現,這種方法通過向目標地址發送TTL值從1遞增的UDP報文來探測該路徑上的路由器.當TTL值經過一個路由時其TTL減1,當TTL為0時,該路由器將向源地址返回一個超時差錯報文,通過這種方式可以得到網絡中存在的路由器信息。
基于Traceroute命令的網絡拓撲發現方法具有很好的適用性,對目標網絡及路由器沒有要求,但是這種方法具有缺限:①效率不高,與基于SNMP的網絡拓撲發現方法相比,速度和準確度遠遠不夠;②具有盲目性,拓撲發現只能通過向目標地址發送報文來探測該條路徑上的路由器信息,不能夠全面、準確地獲取到網絡的拓撲信息。
為了克服以上幾種方法的缺點,本文提出了一種融合兩種拓撲方法相結合的方式進行網絡層拓撲。主要使用基于SNMP的網絡層拓撲方法,并使用基于OSPF的網絡層拓撲方法作為輔助。這樣能夠彌補基于SNMP的拓撲方法不能訪問未開啟SNMP協議路由器的缺點。
算法流程如下:
①初始化路由器列表ipRouteTable,將拓撲初始路由器信息加入到列表。
②判斷ipRouteTable是否為空,為空執行8),不為空則執行3)。
③取出ipRouteTable中的一個路由器信息,存入Router_tmp。
④判斷Router_tmp是否支持SNMP協議,支持執行5),不支持則執行6)。
⑤使用基于SNMP協議的網絡層拓撲方法獲取與該路由直連的路由信息,并將其存入ipRoute Table和XML文件Router-SNMP中,同時將路由器連接關系二元組存入到Link-R。
⑥使用基于OSPF協議的網絡層拓撲方法獲取與該路由直連的路由信息,并將其存入ipRoute Table和XML文件Router-OSPF中,同時將路由器連接關系二元組存入到Link-R。
⑦繼續執行步驟2)。
⑧將Router-SNMP和Router-OSPF中的信息存入到Routers。
基于SNMP協議的網絡層拓撲方法改進主要算法如下:
①對子網隊列、路由器隊列及連接隊列進行初始化。
②將缺省網關IP地址加入路由器ipRouteTable隊列中。

③在對應的拓撲信息庫文件中分別記錄路由器隊列及連接隊列信息、子網隊列記錄。
下面對路由表ipRouteTable結構進行分析,ipRouteTable列表見表1。

表1 ipRouteTable列表Table1 ipRouteTable
ipRouteDest是ipRouteTable路由信息的索引。ipRouteDest表示該條路由信息的目的地址,ipRoute Mask表示子網掩碼,我們能夠通過ipRouteDest和ipRouteMask得到該條路由信息對應子網的信息。將從IP數據包中的目的地地與子網掩碼ipRoute Mask逐位進行與運算,如果結果等于網絡地址ipRouteDest,則說明該IP數據包能夠在本路由器中找到對應的路由,最終按照本條路由信息對IP數據包進行轉發。
ipRouteIndex表示路由端口的索引值,該索引值與ifTable表中的接口索引值對應,IP數據包通過該接口轉發給下一個路由,由其進行轉發或接收。拓撲發現過程中,對路由器端口表信息進行分析,能夠獲得下一級網絡的網絡類型信息。ipRouteType表示路由類型:當ipRouteType為indirect時,表示間接路由,意味著到達目標地址還需要經過其他的路由器。
當ipRouteType為direct時,表示直接路由,意味目標地址與該路由器直連,那么ipRouteDest表示目標子網的網絡地址,而ipRouteNextHop表示了要到達該子網需通過的路由器端口地址。ipRouteProto表示本條路由是通過什么協議建立。路由項可通過OSPF或者RIP建立,也可管理員手動添加(local)。通過分析路由表ipRouteTable中的信息,可以得到路由器之間的連接關系,同時也能得到與路由器直連的子網信息。通過讀取ipRouteTable表中的ipRouteNextHop字段,能夠得到與該路由器相連的路由器信息。同時通過ipRouteDest和ipRouteMask,也能夠判斷ipRoute NextHop是否在ipRouteDest標識的子網中。
每臺OSPF路由器通過相互之間發送鏈路狀態通告[17](Link-State Advertisement,LSA)來傳遞鏈路信息。鏈路狀態通告描述了與路由器相連鏈路狀態信息,可以通過獲取這樣的鏈路狀態信息來獲得網絡的拓撲結構。所以,可以通過獲取并分析LSA的方法進行網絡拓撲發現。由于LSA封裝在LSU報文中,所以通過分析LSU報文便可以得到需要的網絡拓撲信息。
對從Router LSA和Network LSA中分析得出的關于傳輸網transit類型的連接關系信息進行整合。找到Router LSA和Network LSA中DR接口IP地址相同的項,從Network LSA中找到與Router LSA路由器ID匹配的傳輸網地址。該算法的偽代碼如下:


網絡層拓撲采集模塊主要實網絡層拓撲并將拓撲測量獲得的拓撲信息存儲到網絡拓撲信息庫中。該模塊采用基于SNMP協議和基于OSPF協議兩種不同的網絡拓撲發現方法進行網絡拓撲,以基于SNMP協議的網絡拓撲發現方法為基礎,以基于OSPF的網絡拓撲發現方法為輔助彌補基于SNMP協議的網絡拓撲發現方法的不足。最后,將拓撲測量獲得的拓撲信息存儲到網絡拓撲信息庫中。網絡層拓撲采集模塊工作流程如圖1所示。
根據拓撲起點信息初始化ipRouteTable隊列;其次,讀取ipRouteTable中存儲的路由器配置信息,判斷該路由器是對SNMP協議的支持情況。對支持SNMP協議的路由器使用SNMP拓撲模塊進行拓撲信息采集,對不支持SNMP協議的路由器使用OSPF拓撲模塊進行拓撲信息采集,并將采集到的路由器信息存入到ipRouteTable中。繼續遍歷ipRouteTable隊列,直到ipRouteTable為空為止。

圖1 網絡層拓撲采集模塊工作流程Fig.1 Work flow chart of the network layer topology acquisition module




本試驗的目的是驗證經改進后的網絡層拓撲算法對網絡環境適應性,測試環境是在實驗室中搭建,由6臺路由器{R1、R2、R3、R4、R5、R6}和一個節點主機構成,如圖2所示。
試驗配置如下:
R1-使用OSPF路由協議,并開啟SNMP服務;
R2-不使用OSPF路由協議,只開啟SNMP服務;
R3-使用OSPF路由協議,并開啟SNMP服務;
R4-使用OSPF路由協議,并開啟SNMP服務;
R5-使用OSPF路由協議,未開啟SNMP服務;
R6-使用OSPF路由協議,并開啟SNMP服務。
試驗設計如下:分別在節點主機開啟基于SNMP的網絡層拓撲方法、基于OSPF的網絡層拓撲方法和SNMP和OSPF結合的網絡層拓撲方法測試程序,進行網絡層拓撲發現。
通過3種網絡層拓撲方法獲得的拓撲信息如圖3、4所示。

圖2 網絡層拓撲發現方法實驗環境Fig.2 Network layer topology discovery experimental environment
通過試驗數據可以看出,在本試驗環境下基于SNMP的網絡層拓撲方法獲取到了6條路由器信息,基于OSPF的網絡層拓撲方法獲取到2條路由器信息,SNMP、OSPF相結合的網絡層拓撲改進方法獲取到7條拓撲信息。
但是,試驗環境中有6臺路由器,而SNMP、OSPF相結合的網絡層拓撲改進方法獲取到了7條路由器信息。從實驗環境示意圖中可以發現,125.223.50.2和125.223.60.2兩個IP地址屬于同一臺路由器,是同一臺路由器的不同端口地址,這就是文中所說同名IP問題,需要通過拓撲信息分析模塊的處理才能夠解決。所以,基于SNMP的網絡層拓撲方法獲取到了5條路由器信息,基于OSPF的網絡層拓撲方法獲取到2條路由器信息,SNMP、OSPF相結合的網絡層拓撲改進方法獲取到6條拓撲信息。所以,在本實驗環境下,SNMP、OSPF相結合的網絡層拓撲改進方法具有更大的網路拓撲范圍,具有更好的網絡環境適應性。

圖3 基于SNMP協議的網絡層拓撲方法獲得的網絡層拓撲信息Fig.3 SNMP-based network layer topology of the network layer topology information

圖4 基于OSPF協議的網絡層拓撲方法獲得的網絡層拓撲信息Fig.4 OSFP-based network layer topology of the network layer topology information
本文分析和比較現有的網絡安全態勢評估的研究現狀,通過對現有的網絡層拓撲發現方法進行總結,提出一種融合多種網絡層拓撲發現技術的網絡安全態勢感知方法,有效彌補單種網絡拓撲發現方法的不足。經過試驗驗證,該方法具有可行性,為進一步開展網絡安全態勢感知等相關研究奠定基礎。
[1]韋勇,連一峰.基于日志審計與性能修正算法的網絡安全態勢評估模型[J].計算機學報,2009,32(4):763-772.
[2]賀英杰,王慧強,周仁杰.面向網絡態勢感知的實時網絡拓撲發現[J].計算機工程,2009,35(24):127-129.
[3]劉玉華,余勝生,周敬利,等.基于AFT的鏈路層自動拓撲發現算法[J].小型微型計算機系統,2004,25(12):2211-2214.
[4]Donnet B,Friedman T.Internet topology discovery:A survey[J]IEEE Communications Surveys and Tutorials,2007(9):115-119.
[5]劉海華,倪少權,王萍萍,等.一種基于SNMP的網絡層拓撲發現算法[J].計算機安全,2007(9):52-53.
[6]莊鎖法,龔儉.網絡拓撲發現綜述[J].計算機技術與發展,2007,17(10):80-91.
[7]施鋒,吳秋峰.網絡多層拓撲發現算法的分析[J].網絡信息技術,2004,23(3):30-32.
[8]李明江.SNMP簡單網絡管理協議[M].電子工業出版社,2007.
[9]張干.基于OSPF路由協議的實時網絡拓撲搜索的研究與實現[D].北京:北京郵電大學,2006:31-39.
[10]凌軍,曹陽,李莉,等.基于ARP和SNMP的網絡拓撲自動發現算法[J].武漢大學學報:理學版,2001(2):67-70.
[11]何鵬,邱建林.幾種網絡拓撲搜獲方法的分析研究[J].微機發展,2005,15(7):17-23.
[12]閆興篡,殷建平,蔡志平.網絡拓撲發現算法綜述[J].計算機工程與應用,2007,43(14):131-135.
[13]倪勇,史懷洲,朱培棟.基于OSPF鏈路狀態數據庫構建網絡拓撲[J].計算機技術與發展,2009,19(3):1-4.