管理代理與監(jiān)控模塊通信設(shè)計論文_第1頁
管理代理與監(jiān)控模塊通信設(shè)計論文_第2頁
管理代理與監(jiān)控模塊通信設(shè)計論文_第3頁
管理代理與監(jiān)控模塊通信設(shè)計論文_第4頁
管理代理與監(jiān)控模塊通信設(shè)計論文_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、管理代理與監(jiān)控模塊通信設(shè)計論文 詳細介紹了面向應(yīng)用軟件的網(wǎng)絡(luò)監(jiān)控系統(tǒng)中管理代理和監(jiān)控模塊通信的設(shè)計與實現(xiàn)過程。包括管理信息存儲的優(yōu)化設(shè)計、內(nèi)存映射文件的存儲數(shù)據(jù)結(jié)構(gòu)設(shè)計、監(jiān)控指令轉(zhuǎn)發(fā)技術(shù)、內(nèi)存映射文件的通信方式、同步機制應(yīng)用等。通過內(nèi)存映射文件方式存儲管理信息,高效地完成了收集各應(yīng)用程序?qū)嵗谋O(jiān)控信息任務(wù),并實現(xiàn)了監(jiān)控信息的存儲、共享和監(jiān)控模塊與管理代理間實時信息交換的功能。 關(guān)鍵詞:優(yōu)化存儲;內(nèi)存文件映射;消息機制;同步機制 隨著網(wǎng)絡(luò)規(guī)模增大,網(wǎng)絡(luò)結(jié)構(gòu)及網(wǎng)絡(luò)應(yīng)用日漸復(fù)雜,傳統(tǒng)的物理安全技術(shù)和措施已經(jīng)不足以保證信息系統(tǒng)的安全,因此網(wǎng)絡(luò)管理系統(tǒng)作為網(wǎng)絡(luò)安全運行的保證,其重要性越來越突出。為了提高

2、計算機網(wǎng)絡(luò)信息安全,許多相關(guān)的網(wǎng)絡(luò)安全產(chǎn)品被開發(fā),但大多是基于網(wǎng)絡(luò)硬件設(shè)備,如路由器、集線器、交換機等,而對網(wǎng)絡(luò)應(yīng)用軟件的研究和開發(fā)相對較少14。為了保證網(wǎng)絡(luò)環(huán)境中的應(yīng)用程序正常高效地運行,筆者設(shè)計了基于SNMP的ASNMS(ApplicationSoftwareNetMonitoringSystem,網(wǎng)絡(luò)應(yīng)用軟件監(jiān)控系統(tǒng))。該系統(tǒng)選擇運行于網(wǎng)絡(luò)環(huán)境中的應(yīng)用程序為研究對象5,6。 1網(wǎng)絡(luò)應(yīng)用軟件監(jiān)控系統(tǒng)(ASNMS)簡介 ASNMS的主要監(jiān)控目標是網(wǎng)絡(luò)中的應(yīng)用軟件,通過及時獲取軟件中重要變量值(如系統(tǒng)配置、狀態(tài)指示等),從而及時了解整個網(wǎng)絡(luò)中應(yīng)用程序的狀態(tài),并且還可以通過管理站點對各受控站點中

3、的應(yīng)用程序進行控制操作,提高整個網(wǎng)絡(luò)和應(yīng)用系統(tǒng)的安全性。該網(wǎng)絡(luò)應(yīng)用軟件監(jiān)控系統(tǒng)主要有三個模塊5,6: (1)管理站點主程序。該程序在管理站點上運行。通過該程序,管理站點可以使用UDP/IP協(xié)議與管理范圍內(nèi)的所有受控站點進行通信,收集網(wǎng)絡(luò)應(yīng)用程序的監(jiān)控信息,并下發(fā)各種控制命令。 (2)管理代理。每一個受控站點上運行一個管理代理程序(有且僅有一個)。管理代理是系統(tǒng)的通信中心。一方面通過內(nèi)存映射文件與受控站點上的各應(yīng)用程序?qū)嵗M行通信,收集各應(yīng)用程序?qū)嵗谋O(jiān)控信息;另一方面通過UDP協(xié)議與管理站點通信,發(fā)送受控站點的管理信息以及轉(zhuǎn)發(fā)管理站點的控制信息。 (3)監(jiān)控模塊。該模塊是供軟件開發(fā)人員使用的一

4、個通用接口模塊。它負責從受控應(yīng)用程序中獲取監(jiān)控信息,發(fā)送到管理站點,并且也能接收從管理代理轉(zhuǎn)發(fā)的管理站點命令,對受控應(yīng)用程序執(zhí)行一定的控制操作。從結(jié)構(gòu)上來看,監(jiān)控模塊附屬于受控應(yīng)用程序,但它以單獨的線程形式存在。 2管理信息存儲的設(shè)計 為了監(jiān)控模塊工作的需要,同時為了能更方便地將監(jiān)控信息傳送給管理代理,監(jiān)控模塊需要將監(jiān)控信息以一定的形式存儲起來。監(jiān)控模塊監(jiān)控的目標是應(yīng)用程序中的變量。由于現(xiàn)在軟件開發(fā)大多使用的是面向?qū)ο蟮姆椒ǎ谄涑绦蛑懈鞣N變量是有層次結(jié)構(gòu)關(guān)系的,這一點必須在監(jiān)控信息中體現(xiàn)出來7。監(jiān)控信息從邏輯上看應(yīng)該是以樹的形式存在,并且存儲的是各種變量的信息,而變量的長度是不相同的,在這棵

5、樹中各個節(jié)點的空間大小有可能不相同。由此看來,無論是從存儲內(nèi)容上還是從邏輯結(jié)構(gòu)上看,監(jiān)控信息的存儲結(jié)構(gòu)均是相對較為復(fù)雜的。下面三種設(shè)計方案可以滿足這樣的要求: (1)在監(jiān)控模塊內(nèi)存空間內(nèi)生成一棵二叉樹。這是最常規(guī)的存儲方法。在此情況下,只需要設(shè)計一個較為合理的樹結(jié)構(gòu),二叉樹就能直接存儲在監(jiān)控模塊的內(nèi)存空間中,訪問方便。同時因為在許多語言中均有任意類型的數(shù)據(jù)類型,由此可以將不同數(shù)據(jù)類型的數(shù)據(jù)方便地存儲在一種數(shù)據(jù)結(jié)構(gòu)中。但是由于這棵樹存在于監(jiān)控模塊的內(nèi)存空間中,不方便管理代理程序?qū)ζ渥x取,監(jiān)控模塊還需要通過一定的方法將該樹傳送給管理代理4,7。 優(yōu)點:實現(xiàn)簡單,監(jiān)控模塊可以很方便地對其進行讀寫操作

6、。 缺點:不方便管理代理程序?qū)ΡO(jiān)控信息讀取,需要使用其他方法將信息傳送給管理代理。 (2)將監(jiān)控信息存儲在磁盤文件中。為了解決管理代理和監(jiān)控模塊共享監(jiān)控信息的問題,監(jiān)控模塊可以將監(jiān)控信息存儲為磁盤文件形式。在此情況下,需要設(shè)計一套完整合理的文件空間使用策略,保證能夠完整地存儲監(jiān)控信息。由于在Windows程序中采用了虛擬內(nèi)存策略,不同應(yīng)用程序內(nèi)存空間是不同的,即使某應(yīng)用程序獲取了另一個程序中的某個指針,也不能正確地訪問到其數(shù)據(jù)。在對變量值進行存儲時,一定要注意不能存儲有關(guān)變量的指針信息,而應(yīng)該想辦法存儲其中變量的實際數(shù)據(jù)8。同時因為是將監(jiān)控信息存儲于磁盤上,需要采取一定的措施盡量避免出現(xiàn)垃圾文

7、件的情況,同時還要防止在工作狀態(tài)下用戶有意或無意地修改、刪除該文件。 優(yōu)點:多個程序可以方便地共享數(shù)據(jù)。 缺點:實現(xiàn)較復(fù)雜,容易產(chǎn)生垃圾文件,容易泄漏和丟失監(jiān)控信息。 (3)將監(jiān)控信息存儲在內(nèi)存文件映射中。這是對方案(2)的改進。方案(2)將監(jiān)控信息存儲于磁盤文件中,由此使得容易產(chǎn)生垃圾文件、容易泄漏和丟失監(jiān)控信息。那么如果將監(jiān)控信息直接存儲在內(nèi)存當中呢?采用內(nèi)存映射文件是一個很好的解決辦法。應(yīng)用程序在需要時在內(nèi)存中開辟一定的空間存儲數(shù)據(jù),當應(yīng)用程序關(guān)閉后,由于操作系統(tǒng)的內(nèi)存管理機制,內(nèi)存文件將自動被回收,安全性高。但是在生成內(nèi)存映射文件時,必須要指定文件的大小,此時如果處理不當將可能出現(xiàn)存儲

8、空間不夠用的情況4,8。 優(yōu)點:多個程序可以方便地共享數(shù)據(jù),數(shù)據(jù)不易泄漏,安全性高。 缺點:實現(xiàn)較復(fù)雜,必須指定文件大小,處理不當可能出現(xiàn)空間不夠用的情況。 綜合三種方案,方案(3)是最合適的。只要指定足夠的文件大小,它不僅滿足監(jiān)控模塊存儲管理信息的需要,信息安全性高,同時可方便地實現(xiàn)監(jiān)控模塊與管理代理之間實時信息交換功能,從而解決它們之間的通信問題。3管理代理與監(jiān)控模塊通信的設(shè)計 31管理代理與監(jiān)控模塊間通信 通信包括系統(tǒng)初始化連接建立、命令轉(zhuǎn)發(fā)和自定義消息。 (1)系統(tǒng)初始化連接建立。管理代理隨受控站點啟動后,必須接收各個應(yīng)用程序?qū)嵗谋O(jiān)控模塊的注冊信息,與監(jiān)控模塊建立初始連接。 (2)命

9、令轉(zhuǎn)發(fā)。管理代理接收到管理站點發(fā)送的UDP報文后,先識別該報文是發(fā)送給哪個監(jiān)控模塊的,然后通過Windows消息形式發(fā)送給指定的監(jiān)控模塊。 (3)管理代理與監(jiān)控模塊之間約定一系列自定義消息,并向Windows注冊,保證雙方能夠正確地通過自定義消息進行通信。 32監(jiān)控信息的收集與組織 在受控站點上,管理代理與多個應(yīng)用程序?qū)嵗谋O(jiān)控模塊之間是通過內(nèi)存映射文件進行通信的。監(jiān)控信息存儲在內(nèi)存映射文件中。 (1)監(jiān)控信息收集就是對監(jiān)控模塊對應(yīng)的內(nèi)存映射文件進行遍歷。通過遍歷獲得最新的被監(jiān)控應(yīng)用程序的狀態(tài)、監(jiān)控變量的值等。 (2)監(jiān)控信息收集時,需提供有效的同步機制,防止管理代理與監(jiān)控模塊同時訪問同一個監(jiān)

10、控信息文件時出錯。 (3)監(jiān)控信息組織就是提供安全高效的數(shù)據(jù)存儲結(jié)構(gòu),能夠完整地記錄所有監(jiān)控信息。 33內(nèi)存映射文件存儲數(shù)據(jù)結(jié)構(gòu)設(shè)計 為了能存儲完整的變量結(jié)構(gòu)信息,可將監(jiān)控信息的邏輯存儲結(jié)構(gòu)設(shè)計為如圖1所示。在監(jiān)控信息的邏輯結(jié)構(gòu)中存在兩種結(jié)構(gòu)指針,即橫向指針表示父子關(guān)系和縱向指針表示兄弟關(guān)系,由此而構(gòu)成了一棵二叉樹。 本文原文 在圖1所示結(jié)構(gòu)中,由于不同變量類型存儲大小不同,從而導(dǎo)致二叉樹中各個節(jié)點的大小不統(tǒng)一。為了方便地進行存儲空間管理,同時又能準確完整地記錄如上變量結(jié)構(gòu)信息,筆者設(shè)計了一套內(nèi)存映射文件的存儲數(shù)據(jù)結(jié)構(gòu)。其基本思想為:將數(shù)據(jù)本身與數(shù)據(jù)間的邏輯關(guān)系分開進行處理,每次根據(jù)實際使用的

11、需要在文件空閑空間中分配相應(yīng)大小的空間,并在該空間的起始位置生成一個空間信息記錄。其中包括存放的變量類型、變量大小、變量指針、結(jié)構(gòu)指針等數(shù)據(jù)信息。此外還包括了該空間的地址、前后相鄰區(qū)域地址、本空間大小等空間管理信息。真正的記錄數(shù)據(jù)實體存放在該空間信息記錄之后的剩余空間中(剩余空間的大小可以是不同的)。文件的存儲結(jié)構(gòu)如圖2所示。 由圖2可以看出,在監(jiān)控信息存儲文件中所有的存儲空間均是前后緊連著的。通過空間信息記錄可以得知某區(qū)域的大小以及是否正在被使用。這樣就能夠方便地進行空間分配和回收工作。又因為在空間信息記錄中存在變量結(jié)構(gòu)指針,因而通過空間信息記錄也能方便地訪問到數(shù)據(jù)之間的邏輯結(jié)構(gòu)關(guān)系。由此看

12、出,空間信息記錄在整個存儲設(shè)計中占有很重要的位置,正是利用它才實現(xiàn)了對存儲空間的靈活使用。空間信息記錄的數(shù)據(jù)結(jié)構(gòu)設(shè)計如下: typedefstructTItemInfo /以下為數(shù)據(jù)(變量)信息 charNodeNameMAX_NODENAME;/節(jié)點名 charNodeInfoMAX_NODEINFO;/節(jié)點信息 intNodeType;/1:程序節(jié)點;2:類節(jié)點;3:變量節(jié)點;其他未定義 intVarType; /存儲數(shù)據(jù)的變量類型,特別:程序節(jié)點存儲了句柄信息,long型 intVarSize;/數(shù)據(jù)大小 boolWritable;/變量是否可寫 void*VarAddr;/數(shù)據(jù)在程序中

13、的地址 void*PBrother;/前一個同級(兄弟)節(jié)點 void*NBrother;/下一個同級(兄弟)節(jié)點 void*Father;/父親節(jié)點 void*Child;/下一級(孩子)節(jié)點 /以下為空間管理信息 void*Addr;/本區(qū)域在文件中的相對地址 longItemSize;/本區(qū)域大小 void*PAddr;/前一個區(qū)域在文件中的相對地址 void*NAddr;/后一個區(qū)域在文件中的相對地址 boolInUse;/本區(qū)域是否正在使用 TItemInfo; 4關(guān)鍵技術(shù)及其具體實現(xiàn) 41命令轉(zhuǎn)發(fā) 管理代理接收到的命令有查詢被監(jiān)控應(yīng)用程序狀態(tài)、刷新監(jiān)控變量、鎖定監(jiān)控變量、鎖定應(yīng)用程

14、序窗口等。管理代理根據(jù)UDP報文內(nèi)容,將命令發(fā)送給指定的監(jiān)控模塊。命令的轉(zhuǎn)發(fā)均是通過自定義消息實現(xiàn)的。本文使用Windows消息機制自定義了一系列消息并實現(xiàn)其消息的處理,結(jié)合到本監(jiān)控系統(tǒng)的需要,管理代理中主要定義了如下消息及其處理: (1)WM_READAPPHANDLE:讀應(yīng)用程序?qū)嵗斜O(jiān)控模塊的相關(guān)句柄; (2)WM_READAPPSTRUCT:讀應(yīng)用程序?qū)嵗械腗IB子樹結(jié)構(gòu); (3)WM_READAPPDATA:讀應(yīng)用程序?qū)嵗械腗IB節(jié)點的值; (4)WM_SETAPPDATA:設(shè)置應(yīng)用程序中的MIB節(jié)點的值; (5)WM_READAPPTRAP:讀應(yīng)用程序發(fā)送來的Trap信息; (

15、6)WM_READPROXYSET:為應(yīng)用程序?qū)嵗腗IB子樹中某個MIB節(jié)點設(shè)置閾值; (7)WM_MIBERROR:代理與應(yīng)用程序之間的通信發(fā)生錯誤。 由于在一個標準的Windows應(yīng)用程序中,消息是由窗口處理的,而在管理代理中沒有窗口,也不是從窗口繼承的一個類,管理代理不能直接進行消息操作。在程序中使用AllocateHWnd函數(shù)為監(jiān)控模塊虛擬生成一個消息窗口,專用來進行消息捕獲、發(fā)送與處理。 42內(nèi)存文件映射與同步機制 421內(nèi)存文件映射實現(xiàn)管理代理與監(jiān)控模塊之間通信 管理代理與應(yīng)用程序?qū)嵗谋O(jiān)控模塊之間的數(shù)據(jù)交換采用內(nèi)存文件映射這種進程間的通信方式。管理代理的文件映射和文件映射視圖的

16、創(chuàng)建代碼如下: HANDLEh_filemap;/內(nèi)存文件映射句柄 HANDLEh_LocalMapView;/內(nèi)存文件映射視圖句柄 /創(chuàng)建內(nèi)存文件映射對象,有讀寫權(quán)限,對象名為ProxyFileMap h_filemap=CreateFileMapping(HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,VIEWSIZE,”ProxyFileMap”); if(h_filemap=NULL) AfxMessageBox(”CreateLocalFileMapError!”); returnfalse;/創(chuàng)建內(nèi)存文件映射視圖 if(h_LocalMapView=

17、MapViewOfFile(h_filemap,FILE_MAP_ALL_ACCESS,0,0,0)=NULL) AfxMessageBox(”CreateLocalMapViewError!”); returnfalse; 管理代理啟動后,在其內(nèi)存文件映射視圖中寫入自己的窗口句柄,供各個應(yīng)用程序?qū)嵗x取。監(jiān)控模塊初始化時,從管理代理的內(nèi)存文件映射視圖中得到管理代理的窗口句柄,向管理代理的內(nèi)存文件映射視圖中寫入自己的內(nèi)存文件映射對象名,并發(fā)送請求注冊消息給管理代理。管理代理收到消息后,從自己的內(nèi)存文件映射視圖中讀出應(yīng)用程序?qū)嵗膬?nèi)存映射文件對象名,創(chuàng)建應(yīng)用程序?qū)嵗齼?nèi)存文件映射視圖9。代理和監(jiān)控

18、模塊的通信通過讀寫內(nèi)存文件映射視圖和互相發(fā)送消息實現(xiàn)。 422同步機制 管理代理和監(jiān)控模塊通過對內(nèi)存映射文件進行讀操作和寫操作來完成數(shù)據(jù)交換。由于存在多個獨立的應(yīng)用程序?qū)嵗M程,它們可能同時對管理代理進行寫操作??赡艽嬖谶@樣的情況:當一個應(yīng)用程序的實例向管理代理的內(nèi)存文件中寫入數(shù)據(jù),并通知管理代理讀取時,另外一個應(yīng)用程序的實例也在做同樣的寫操作,它寫入的數(shù)據(jù)將前一次寫入的數(shù)據(jù)覆蓋了。當管理代理響應(yīng)消息從內(nèi)存文件中讀入時,得到的是第二個應(yīng)用程序?qū)嵗臄?shù)據(jù),第一個應(yīng)用程序?qū)嵗龑懭氲臄?shù)據(jù)已丟失了。在應(yīng)用程序?qū)嵗膬?nèi)存文件上也存在類似的情況:當一個應(yīng)用程序?qū)嵗B續(xù)向內(nèi)存文件中寫入時,管理代理可能還來不

19、及對第一次寫入的數(shù)據(jù)進行讀取,第二次的寫入已經(jīng)將第一次寫入的內(nèi)容覆蓋了。在對內(nèi)存文件的讀寫過程中引入同步機制是必要的。程序中采用的同步機制是信號燈機制9。 在管理代理上為內(nèi)存文件創(chuàng)建信號燈: /*創(chuàng)建信號燈,信號燈名為ProxyMapViewSemaphore,初始計數(shù)為1,最大計數(shù)也是1,h_SemAccessMapView為該信號燈的句柄*/ h_SemAccessMapView=CreateSemaphore(NULL,1,1,”ProxyMapViewSemaphore”); 在監(jiān)控模塊中,打開這個信號燈: /*打開名為ProxyMapViewSemaphore的信號燈,h_SemAc

20、cessMapView為信號燈句柄*/ h_SemAccessMapView=OpenSemaphore(SEMAPHORE_ALL_ACCESS,false,”ProxyMapViewSemaphore”); 監(jiān)控模塊每次對管理代理內(nèi)存文件寫操作前,均要等待信號燈的信號: /*等待信號燈h_SemAccessMapView的信號,知道信號燈為有信號時才返回*/ :WaitForSingleObject(h_SemAccessMapView,INFINITE); /對管理代理內(nèi)存文件映射的寫操作管理代理在每次對內(nèi)存文件進行讀操作后,都要增加信號燈的計數(shù): /對內(nèi)存文件的讀操作 /增加信號燈h_

21、SemAccessMapView的計數(shù),每次增加1 ReleaseSemaphore(h_SemAccessMapView,1,NULL); 5結(jié)束語 在對SNMP中MIB信息和協(xié)議數(shù)據(jù)單元擴充的基礎(chǔ)上,設(shè)計并實現(xiàn)了面向應(yīng)用軟件的網(wǎng)絡(luò)監(jiān)控系統(tǒng)。該系統(tǒng)提供了對應(yīng)用程序類中成員變量和成員函數(shù)的監(jiān)控功能。 參考文獻: 1唐亞哲,張鵬,李增智,等.DIINMS分布智能網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計與實現(xiàn)J.小型微型計算機系統(tǒng),2002,23(8):926929. 2田力威,尹朝萬.基于CORBA的智能網(wǎng)絡(luò)管理系統(tǒng)的結(jié)構(gòu)及實現(xiàn)J.小型微型計算機系統(tǒng),2002,23(7):810813.3HUNTER,PHILIP.Integratedsecurityandne

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論