您現(xiàn)在的位置:
中國傳動網(wǎng)
>
技術(shù)頻道
>
技術(shù)百科
>
基于以太網(wǎng)的數(shù)據(jù)鏈監(jiān)視系統(tǒng)研究與實現(xiàn)
時間:2008-09-02 11:55:00來源:ronggang
圖1 數(shù)據(jù)鏈終端及以太網(wǎng)監(jiān)視系統(tǒng)結(jié)構(gòu)框圖[/align]
數(shù)據(jù)處理器是數(shù)據(jù)鏈終端設備的核心,相當于一個翻譯器, 所有流經(jīng)數(shù)據(jù)鏈的數(shù)據(jù)包都必經(jīng)它的處理,因而將數(shù)據(jù)處理器所連接的交換機端口鏡像到網(wǎng)絡監(jiān)視系統(tǒng)所連接的端口,采集所有數(shù)據(jù)處理器進出的信息,就可以達到監(jiān)視數(shù)據(jù)鏈鏈路的目的。根據(jù)上述思想設計監(jiān)視系統(tǒng)如圖1所示。
系統(tǒng)的基本工作流程描述如下:
?。?)捕包子系統(tǒng)截獲鏡像端口上傳輸?shù)臄?shù)據(jù)包,存儲到數(shù)據(jù)庫中,并送解碼分析子系統(tǒng)處理;
?。?)解碼分析子系統(tǒng)實時讀取截獲的數(shù)據(jù)包,解析數(shù)據(jù)包的源地址、目的地址、端口信息、協(xié)議信息等信息元素和數(shù)據(jù)包中攜帶的指揮信息、態(tài)勢信息等作戰(zhàn)元素,并根據(jù)數(shù)據(jù)包類型、大小、內(nèi)容等屬性進行分類、統(tǒng)計、分析;
(3)顯示子系統(tǒng)實時顯示解碼分析子系統(tǒng)解碼得到的各類信息元素和作戰(zhàn)元素;
?。?)當用戶通過顯示子系統(tǒng)的交互界面回放歷史數(shù)據(jù)時,顯示子系統(tǒng)從數(shù)據(jù)庫中取出所調(diào)數(shù)據(jù)包,送解碼分析子系統(tǒng)解碼后顯示。
4 數(shù)據(jù)鏈以太網(wǎng)監(jiān)視系統(tǒng)實現(xiàn)
數(shù)據(jù)鏈以太網(wǎng)監(jiān)視系統(tǒng)分為捕包、解碼分析、顯示三個子系統(tǒng)實現(xiàn),本文在Windows2000平臺下基于Visual C++ 6.0設計開發(fā)。對于顯示子系統(tǒng),目前實現(xiàn)技術(shù)已較成熟,本文將重點討論捕包和解碼分析子系統(tǒng)。
4.1 網(wǎng)絡捕包
基于NDIS的核心態(tài)包過濾技術(shù)具有較高的結(jié)構(gòu)性和可擴展性,其中間層驅(qū)動程序處于Miniport驅(qū)動程序(數(shù)據(jù)鏈路層)和Protocol驅(qū)動程序(網(wǎng)絡層)之間,所有發(fā)送到網(wǎng)絡和從網(wǎng)絡接收的數(shù)據(jù)包都要由此通過,因此中間層驅(qū)動程序可以對所有網(wǎng)絡數(shù)據(jù)包進行過濾和處理 。故NDIS中間層驅(qū)動程序是實現(xiàn)以太網(wǎng)監(jiān)視的理想選擇。
本文使用微軟的驅(qū)動程序開發(fā)包DDK進行NDIS中間層驅(qū)動程序編程。具體流程為:
?。?)NDIS驅(qū)動程序在主入口函數(shù)DirverEntry中調(diào) 用 NdisMinitializeWrapper函數(shù)注冊輸出函數(shù)集入口,得到設備句柄;
?。?)輸入(1)得到的句柄調(diào)用NdisIMRegisterLayeredMiniport,為NDIS中間層驅(qū)動程序注冊一套Miniport回調(diào)函數(shù),這樣上層Protocol協(xié)議就認為中間層驅(qū)動程序是網(wǎng)卡,并通過NDIS庫調(diào)用這些回調(diào)函數(shù);
?。?)調(diào)用NdisRegisterProtocol,為NDIS中間層驅(qū)動程序注冊一套Protocol回調(diào)函數(shù),這樣下層網(wǎng)卡就認為中間層驅(qū)動程序是一個協(xié)議,并通過NDIS庫調(diào)用這些函數(shù);
(4)當操作系統(tǒng)發(fā)現(xiàn)NIC時,NDIS調(diào)用中間層驅(qū)動程序注冊的ProtocolAdapterBind函數(shù),該函數(shù)內(nèi)部需要調(diào)用NdisOpenAdapt打開適配器,保證了網(wǎng)卡和中間層的綁定關(guān)系;
?。?)調(diào)用PtReceivePacket接收網(wǎng)卡收到的數(shù)據(jù)包;
?。?)數(shù)據(jù)包與所設置過濾規(guī)則進行比較,不滿足規(guī)則時調(diào)用函數(shù)返回NDIS_STATUS_NOT_ACCEPTED,該宏在ndis.h中定義,這樣就結(jié)束了本接收函數(shù)的調(diào)用。
針對戰(zhàn)術(shù)數(shù)據(jù)鏈特殊的應用需求,保證監(jiān)視系統(tǒng)穩(wěn)定、高效運行十分重要。然而,傳統(tǒng)的NDIS中間層驅(qū)動捕包算法在入口點對應的函數(shù)直接對數(shù)據(jù)包進行處理,當數(shù)據(jù)量很大時,會耗盡NIC驅(qū)動程序的接收緩沖區(qū)空間,造成輸入輸出阻塞,降低下層NIC從網(wǎng)絡中接收數(shù)據(jù)包的能力,嚴重影響系統(tǒng)性能 。為了提高系統(tǒng)的處理效率,在對網(wǎng)絡適配器進行操作時,應確保系統(tǒng)在網(wǎng)絡適配器的接口系統(tǒng)中擁有足夠的緩沖區(qū),中間層驅(qū)動程序不在入口點對應的函數(shù)里對數(shù)據(jù)包直接進行處理,而是調(diào)用PtReceivePacket接收后直接送入預留的內(nèi)存緩沖區(qū),等候上層程序處理,并盡快返回函數(shù)。采用這種處理方案,不僅防止了阻塞產(chǎn)生,同時使得數(shù)據(jù)包捕獲和上層程序處理并行工作,提高了網(wǎng)絡捕包的效率。
根據(jù)上述思想,中間層驅(qū)動程序初始化時首先建立接收數(shù)據(jù)包的內(nèi)存緩沖區(qū)隊列、發(fā)送數(shù)據(jù)包的內(nèi)存緩沖區(qū)隊列各一個,建立一個內(nèi)核線程;當發(fā)送數(shù)據(jù)包隊列中有數(shù)據(jù)需要處理時通知內(nèi)核線程,將下層輸入的數(shù)據(jù)包緩存在接收數(shù)據(jù)包的內(nèi)存緩沖區(qū);當上層程序空閑時,通知內(nèi)核線程讀取內(nèi)存緩沖區(qū)中的數(shù)據(jù)包,釋放被占用的接收緩沖區(qū)空間。算法描述流程如圖2:
[align=center]
圖2 網(wǎng)絡捕包算法流程圖[/align]
4.2 解碼分析
通過網(wǎng)絡捕包,得到了數(shù)據(jù)鏈鏈路上所有用戶關(guān)心的數(shù)據(jù)包,面對這些數(shù)據(jù)包,必須解碼分析,才能將有用信息傳遞給用戶。然而數(shù)據(jù)鏈系統(tǒng)體制各異,協(xié)議格式多樣,單一解碼機制不適用,需要一個對各種協(xié)議格式通用的解碼模型。另一方面,數(shù)據(jù)鏈監(jiān)視系統(tǒng)特殊的應用需求不僅要求解碼分析子系統(tǒng)將數(shù)據(jù)包的源地址、目的地址、端口信息、協(xié)議信息等信息元素解碼顯示,更主要的還要將數(shù)據(jù)包攜帶的指揮信息、態(tài)勢信息等作戰(zhàn)信息解碼顯示。
首先對所捕獲數(shù)據(jù)包的信息元素解碼。解碼分析子系統(tǒng)從捕包子系統(tǒng)讀取的數(shù)據(jù)包是以太網(wǎng)幀,要對其解碼分析,必須了解以太網(wǎng)幀的幀結(jié)構(gòu)(如圖3所示)。數(shù)據(jù)在網(wǎng)絡上傳輸時被從應用程序傳送到一個協(xié)議棧上,當數(shù)據(jù)在棧上一層一層地向下傳送時,每一層的相應協(xié)議把上一層傳送下來的數(shù)據(jù)封裝為自己的格式,詳細請參考《TCP/IP詳解》 。數(shù)據(jù)包解碼就是通過這些格式來獲取地址信息、端口信息、包類型信息等信息元素。
[align=center]
圖3 以太網(wǎng)幀結(jié)構(gòu)[/align]
通過上述解碼得到應用數(shù)據(jù)段。采用面向比特型報文是美軍戰(zhàn)術(shù)數(shù)據(jù)鏈報文最突出的特點之一。數(shù)據(jù)鏈以太網(wǎng)中應用程序(主要是各種數(shù)據(jù)鏈協(xié)議)將作戰(zhàn)信息和報頭封裝為應用數(shù)據(jù)。每個報文含有一條或多條消息,每條消息又含有一個或多個消息字,戰(zhàn)術(shù)信息按消息格式封裝在消息字中 。消息格式因采用的數(shù)據(jù)鏈不同而異。
本文建立基于數(shù)據(jù)鏈消息標準描述數(shù)據(jù)庫的XML數(shù)據(jù)描述文件,以函數(shù)調(diào)用接口的方式提供用戶使用。消息字中的作戰(zhàn)信息在邏輯意義上分為各個元素,解碼時以元素為最小解碼單元。開始解碼時,解碼模型提取消息系列標識和消息標識,即所解碼數(shù)據(jù)鏈的消息格式和當前解碼消息的標號,與XML數(shù)據(jù)描述文件中的消息數(shù)據(jù)庫相比對,進行消息解碼。采用XML文件,便于消息標準的修訂,當標準修訂后,只需修改XML文件,不需修改解碼源程序就可適應實際需求,大大簡化了系統(tǒng)的實現(xiàn)和維護。具體算法流程如圖4:
[align=center]
圖4 作戰(zhàn)信息解碼算法流程圖[/align]
5 結(jié)論
本文作者創(chuàng)新點:通過對美軍數(shù)據(jù)鏈技術(shù)標準的分析研究,結(jié)合軍事需求,設計提出了基于以太網(wǎng)的數(shù)據(jù)鏈監(jiān)視系統(tǒng),從具體實現(xiàn)的角度,應用功能強大、發(fā)展前景很好的NDIS中間層驅(qū)動程序?qū)崿F(xiàn)捕包,并在性能上做了優(yōu)化;采用基于數(shù)據(jù)鏈消息標準描述數(shù)據(jù)庫的XML數(shù)據(jù)描述模型實現(xiàn)各種戰(zhàn)術(shù)消息的解碼。本文所提出系統(tǒng)對數(shù)據(jù)鏈的進一步開發(fā)有很好的參考價值和現(xiàn)實意義:
1、可提高數(shù)據(jù)鏈整體規(guī)劃設計的效率,為聯(lián)調(diào)中系統(tǒng)測試和性能測試提供可靠有力的技術(shù)支撐;
2、部隊實現(xiàn)數(shù)傳指揮后,通過監(jiān)視系統(tǒng)的實時顯示和數(shù)據(jù)回放功能,可分析研究各作戰(zhàn)單元與指揮控制單元間的協(xié)同配合,有利于及時發(fā)現(xiàn)問題,提高日常訓練效果,保障戰(zhàn)時鏈路可靠;
3、以可視化的圖形窗口、靈活的交互界面顯示用戶關(guān)心的數(shù)據(jù)包信息及鏈路信息,便于網(wǎng)絡管理者、操作者的交互操作。
基于以太網(wǎng)的數(shù)據(jù)鏈監(jiān)視系統(tǒng)開發(fā)是一項非常復雜的工作,特別還要考慮數(shù)據(jù)鏈協(xié)同互聯(lián)問題和系統(tǒng)可靠性問題,今后將在協(xié)同互聯(lián)和可靠性上做進一步研究。
參考文獻
1 黃烈炎,魏蛟龍.美軍數(shù)據(jù)鏈建設及啟示.艦船電子工程,Vol.25,No.2,2005:29-32
2 劉紅軍,徐永勝.美軍戰(zhàn)術(shù)數(shù)據(jù)鏈報文格式及其特點.中國電子科學研究院學報,Vol.1,No.3,2006:291-295
3 Stevens W R.TCP/IP詳解.北京:機械工業(yè)出版社,2000
4 Microsoft DDK For Windows 2000文檔,2000(8)
5 Microsoft Co.Windows 2000 驅(qū)動程序開發(fā)大全:第一卷 設計指南[M].馮博琴譯.北京:機械工業(yè)出版社,2001
6 侯功華,趙遠東.基于NDIS中間層的包過濾的研究與設計.微計算機信息,2006,12-3:141-143
標簽:
傳動網(wǎng)版權(quán)與免責聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。
產(chǎn)品新聞
更多>2025-10-31
2025-10-22
2025-10-17
2025-10-11
2025-10-09
2025-09-23