陸軍裝甲兵學院 劉海燕 朱銘銘
在信息化作戰中,發現敵方戰術互聯網絡的拓撲結構是重要的戰術情報,有助于有重點地切斷和破壞敵方網絡,確保己方信息優勢。在分析現有互聯網拓撲發現方法的基礎上,將開放最短路徑優先(Open Shortest Path First,OSPF)協議和因特網控制報文協議(Internet Control Message Protocol,ICMP)相結合,研究并設計對戰術互聯網進行拓撲發現的方法,再利用Mininet 仿真工具,搭建一個包含主機、路由器、鏈路的虛擬網絡并進行測試。實驗表明,該方法能夠在繼承基于兩種協議拓撲發現優點的基礎上,提高拓撲發現的效率和準確性。
基于信息系統的體系作戰,要以戰場信息網絡為基礎平臺,實現指揮系統、機動戰斗部隊、情報網絡系統、后端通信保障系統間有效的狀態傳感與指令控制數據的傳遞。戰術互聯網作為合成化、數字化作戰部隊指揮信息系統的運行平臺,也是交戰雙方打擊的重要目標之一[1]。戰術互聯網以TCP/IP 協議體系為基礎,按功能構成可以分為骨干網、接入網和戰術應用網。其中,骨干網通常采用無線Mesh 網技術構建覆蓋作戰地域的干線網,戰術應用網則由作戰單位采用戰術電臺等構成自組織網絡,戰術應用網通過接入網接入到骨干網,整體上形成覆蓋作戰地域、綜合性、機動性網絡[2]。根據戰術互聯網拓撲結構動態變化,發現戰術互聯網的拓撲結構為戰場態勢提供依據,影響作戰雙方的制信息權。
目前,常用的網絡拓撲結構分析方法有基于ICMP協議的拓撲發現、基于SNMP 網絡管理協議的拓撲發現、基于路由協議的拓撲發現等。其中,基于OSPF 協議的拓撲發現開銷低,但OSPF 協議將路由器分為不同的工作區域,區域內的路由信息通過區域邊界路由器與區域外的路由器進行交換,這就導致采用該方法發現路由拓撲時計算比較復雜,且僅能用來發現網絡中的路由器?;贗CMP 協議的發現方法簡單可操作性強,在檢測拓撲的同時也能發現設備的狀態,但該方法發送探測數據包耗時容易造成網絡擁擠。本文基于戰術互聯網的應用實際,研究設計了兩種協議相結合的戰術互聯網拓撲發現方法,將兩種方法進行優勢互補,既能保持基于OSPF 協議進行拓撲發現的靈活性和高效性,又避免了單純靠ICMP 協議造成網絡擁擠的問題。
戰術互聯網拓撲發現是指利用網絡傳輸協議來確認網絡中的結點及鏈路連接關系的過程。其中最常用的技術包括如下幾種。
ICMP 協議是網絡層協議,其主要作用是確認數據包能否成功發送到目標網絡設備、通知在數據包發送過程中發生差錯的情況以及提供有關異常情況的報告。ICMP 報文有兩類,即查詢報文和差錯報告報文,它們都可以用來測試網絡間的連通性。常用的網絡命令Ping,就是利用了ICMP 的查詢報文,判斷源和目標結點之間的可達性。命令Traceroute(Windows 主機上的Tracert 命令),則利用了ICMP 差錯報文,發現從源主機到目標結點的路徑上各路由器結點和目標結點[3]。
使用ICMP 報文,可以根據可達性及路徑來分析網絡的拓撲[4],該方法簡單可操作性強,在檢測拓撲的同時還能發現設備的狀態。但該方法需要逐個結點測試,發送地探測數據包容易造成網絡擁擠。
SNMP 協議是一種應用層協議,為各種不同型號不同種類的網絡設備提供統一的管理接口。在基于SNMP協議的網絡管理中,管理信息結構SMI 定義被管設備中的命名對象、定義對象類型的規則、把對象和對象的值進行編碼的規則。管理信息庫MIB 在被管理的實體中創建命名對象;SNMP 協議是管理站與被管設備間交換消息的規定,它按照SMI 定義的規則,存儲、改變被管設備中由MIB 說明的對象的值。
基于SNMP 協議的拓撲分析技術是以SNMP 的GET方法為基礎,網管站將從設備MIB 庫中獲得的信息進行分析整理,從而得到網絡拓撲[5]。通過SNMP 協議進行拓撲發現其優點是可擴展性強,但它強烈依賴于設備中運行的SNMP 協議和MIB 庫[6]。由于不同廠商設備可能使用私有的MIB 定義,而通過GET 命令不能自動發現設備采用的私有MIB,所以在戰術互聯網中應用較少。
開放式最短路徑優先協議OSPF 是一種常用的內部網關路由協議。當鏈路狀態發生變化或者每隔一定時間,路由器以洪泛方法,向所有相鄰路由器發送與本路由器相鄰的所有路由器的鏈路狀態信息,而每個相鄰路由器又再將此信息發往其所有的相鄰路由器[7]。經多次迭代,最終每個路由器都能夠獲得一致的全網結構圖。最后,相關路由器運用最短路徑算法計算出本路由器的路由表。
OSPF 使用的鏈路狀態更新LSU 分組是該協議最核心的分組,封裝有路由器間發送的鏈路狀態通告,通過監聽路由器間的鏈路狀態信息,可以分析網絡的拓撲結構[8]。但該方法只能獲得OSPF 路由器之間的拓撲連接關系,無法獲得其他結點與路由器之間的連接關系。
戰術互聯網一般不使用通用的SNMP 協議進行網絡管理,而是使用自定義的管理協議和管理系統,因此不適合使用SNMP 協議進行拓撲發現。由于其拓撲結構動態變化,網絡中用于路由維護的信息較多,因此可以基于路由信息進行拓撲發現。此外,為了及時了解網絡的連通性,戰術互聯網中各設備和主機的Ping 測試通常為開放狀態。為此,可以將ICMP 協議與OSPF 協議相結合,實現戰術互聯網進行從路由器結點到主機結點的詳細拓撲發現。
整個拓撲發現過程分為三大步:
第一步:路由器發現。捕獲OSPF 協議分組,對于LSA 列表的每一條記錄,提取其中的LinkID 和RouterID,記錄Link 和Router 的對應關系。
第二部分:主機發現。記錄路由器連接的每個子網,對這些子網進行逐一掃描,發現每個子網中活躍的主機。以(Router,Host)的形式記錄路由器和主機之間的連接狀態。
第三部分:拓撲結構可視化呈現。遍歷結點和連接關系數據結構,以圖形的形式將拓撲結構展示出來。
2.2.1 基于OSPF 的路由器發現算法
在一臺路由器上,基于WinPcap 捕獲OSPF 協議的數據包,逐個處理LSA 數據包,解析出路由器間的連接關系,具體流程如圖1 所示。

圖1 根據LSA 數據包分析路由器連接關系Fig.1 Analyzes the router connection relationship according to the LSA packet
首先檢測LSA 報文的類型,RouterLSA 是最基本的LSA,里面記錄從本路由器到其他路由器鏈路或末端網絡,NetworkLSA 記錄了指定路由器產生的本網段鏈路狀態。針對RouterLSA,根據鏈路類型進行不同處理,對于TranitNet 類型,將源路由器和指定路由器IP 的對應關系記錄到TransitMap 表中。對于Point-to-point、Vitural 類型,直接根據Link ID、LinkData 獲得對端路由器ID 以及接口信息;對于Stub 類型,根據Link ID、LinkData獲得末端網絡的IP 和掩碼,將這些拓撲信息記錄到連接關系表中。針對NetworkLSA 類型,要根據指定路由器的IP 地址匹配TransitMap 表中的記錄,然后將匹配的源路由器和其附帶路由器的連接關系記錄下來。
2.2.2 基于ICMP 協議的主機發現
首先獲取每個路由器直連的所有網段,利用Nmap的ICMP 掃描,根據響應情況判斷活躍主機。其中啟動ICMP 掃描,保存掃描主機和連接關系的代碼如下:
2.2.3 拓撲顯示設計
在上述拓撲發現過程中,算法記錄發現的結點和連接關系。數據結構節點用Python 里的Dict 表示:對于路由器,Dict 的Key 是路由器的名稱,Dict 的Value 記錄了路由器的詳細配置信息。對于主機,Dict 的Key 是其IP 地址,Dict 的Value 是其接口配置信息。結點間的連接關系用二維數組Pair 表示,其中,Pair[0]表示一端路由器的名稱和使用的接口,Pair[1]表示另一端路由器或主機的名稱和使用的接口。
拓撲發現過程結束后,遍歷結點數據Dict 和連接關系數據Pair,基于Py-ECharts 圖形繪制接口,將節點和邊以可視化方式繪制出來。
本文在Ubuntu 系統下安裝Mininet 仿真軟件。首先使用Mininet 生成一個虛擬網絡,包括主機、路由器結點以及它們的連接,然后在路由器上啟用OSPF 協議、在主機上啟用ICMP 協議。最后利用本文設計的拓撲發現算法,在一臺接入主機上開始進行拓撲發現。實驗步驟和結果如下。
在Mininet 環境下,假設要創建的結點和結點間的連接關系保存在數據結構nodes 和adjs 中。則根據數據結構構建虛擬網絡,創建路由器、主機結點以及其間鏈路的關鍵代碼如下。
配置好拓撲后,需要在路由器上運行OSPF 程序,為此自定義一個Router 類,它繼承Mininet 的Node 類,并定義了一個啟動ospfd 程序的方法start_ospfd,該方法的關鍵代碼如下:
實驗首先啟動Mininet 仿真程序創建虛擬網絡,并在路由器上啟動OSPF 協議,然后運行拓撲發現程序。拓撲發現程序依次利用OSFP 協議和ICMP 協議對虛擬網絡進行拓撲發現,將發現結果以圖數據庫的形式存儲,最終利用Py-ECharts 繪制拓撲圖。拓撲發現結果如圖2 所示。

圖2 拓撲發現程序的運行結果Fig.2 The running results of topology discovery program
本文研究設計了一個OSPF 和ICMP 協議相結合的戰術互聯網拓撲發現方法,先通過OSPF 協議分析讀取路由信息,然后再通過ICMP 協議實現主機的存活掃描,最后利用Mininet 網絡仿真工具搭建一個包括主機、路由器和鏈路的虛擬化網絡并進行拓撲發現實驗。實驗結果表明,該算法可以準確地得到網絡的完整拓撲圖。盡管方法發現拓撲的效率和準確率有所提升,但仍有許多問題需要解決,例如,在作戰中戰術互聯網數據量大、拓撲多變,如何提升拓撲發現的實時性是下一步研究的重點。