基于SNMP的SNMP仿真系統(tǒng)的設(shè)計及實現(xiàn)
——
當(dāng)前,簡單網(wǎng)絡(luò)管理協(xié)議(simple network management protocol,snmp)已經(jīng)成為事實上的網(wǎng)絡(luò)管理標(biāo)志,得到了很大范圍內(nèi)的應(yīng)用,但snmp作為網(wǎng)絡(luò)管理的重要協(xié)議,在教學(xué)過程中發(fā)現(xiàn)學(xué)生難以掌握其工作原理和過程,為此設(shè)計了一個snmp仿真系統(tǒng),可以輔助教學(xué)和學(xué)習(xí),而且該系統(tǒng)本身也是基于snmp實現(xiàn)的,這對設(shè)計基于snmp的其他系統(tǒng)具有較強的實踐指導(dǎo)意義。
1 仿真系統(tǒng)的總體框架結(jié)構(gòu)
在我們設(shè)計的系統(tǒng)工作在局域網(wǎng)中,可用于課堂教學(xué)演示,幫助學(xué)生掌握snmp的工作原理,考慮到有些教學(xué)環(huán)境中只有一臺機器(如多媒體教室),在同一個主機上也能運行該系統(tǒng)。
該系統(tǒng)采用客戶/服務(wù)器(client/server)模式,采用tcp/ip和snmp實現(xiàn),從功能的角度看,該系統(tǒng)分為管理站軟件和代理端軟件2部分。從邏輯上看,該系統(tǒng)既是對snmp的實現(xiàn),又是對snmp的仿真,其總體框架結(jié)構(gòu)如圖1所示。
2 仿真系統(tǒng)所實現(xiàn)的功能
系統(tǒng)的功能實現(xiàn)依賴于以下幾個方面的要求:
(1)對管理端主機行為的仿真;
(2)對代理端主機行為的仿真;
(3)對snmp的實現(xiàn);
(4)對相關(guān)信息的查看及打?。?br>
(5)為了實現(xiàn)以上要求,系統(tǒng)主要有4個相對獨立的模塊組成;運行在管理端主機上的管理端仿真模塊;運行在管理端主機上的管理端實現(xiàn)模塊,運行在代理端數(shù)據(jù)上的代理端仿真模塊,運行在代理端主機上的代理端實現(xiàn)模塊。
管理端仿真模塊的功能如下:
1)支持用戶查看和編輯mib-ii;
2)用戶選擇snmp消息類型(get,set),并輸入相應(yīng)的參數(shù);
3)用戶選擇生成編碼命令;
4)用戶選擇查看編碼結(jié)果命令;
5)用戶選擇發(fā)送snmp消息命令;
6)用戶選擇查看收到的snmp消息命令;
7)用戶選擇解碼命令;
8)用戶選擇查看解碼結(jié)果命令;
9)在線打印和幫助。
管理端實現(xiàn)模塊的功能如下:
1)監(jiān)視用戶在管理端仿真模塊中輸入的命令,并做出相應(yīng)的處理;
2)對從管理端仿真模塊傳來的消息進行ber編碼;
3)把編碼結(jié)果傳給管理端仿真模塊;
4)把編碼結(jié)果發(fā)送到snmp代理端;
5)從snmp代理端接收的信息,并傳給管理端仿真模塊;
6)對從snmp代理端接收的消息進行ber解碼;
7)把解碼結(jié)果傳給管理端仿真模塊;
代理端仿真模塊的功能如下:
1)支持用戶查看和編輯mbi-ii;
2)用戶選擇查看消息命令;
3)用戶選擇對收到的信息進行解碼命令;
4)用戶選擇查看解碼結(jié)果命令;
5)用戶選擇snmp消息類型(getresponse,trap),并輸入相應(yīng)的參數(shù);
6)用戶選擇生成編碼命令;
7)用戶選擇查看編碼結(jié)果命令;
8)用戶選擇發(fā)送snmp消息命令;
9)在線打印和幫助。
代理端實現(xiàn)模塊的功能如下:
1)監(jiān)視用戶在代理端仿真模塊中輸入的命令,并做出相應(yīng)的處理;
2)從snmp管理端接收消息,并傳給代理端仿真模塊;
3)對從snmp管理端接收的消息進行ber解碼;
4)把解碼結(jié)果轉(zhuǎn)給代理端仿真模塊;
5)對從代理端仿真模塊傳來的消息進行ber編碼;
6)把編碼結(jié)果傳給代理端仿真模塊;
7)把編碼結(jié)果發(fā)送到snmp代理端。
3 對仿真模塊與實現(xiàn)模塊間通信的設(shè)計
無論是管理端主機還是代理端主機,都有一個snmp實現(xiàn)模塊和一個仿真模塊,也就是說,運行在同一臺機器上的snmp實現(xiàn)模塊和snmp仿真模塊之間必然要進行通信,這種通信屬于同一個主機上不同進程間的通信,考慮本系統(tǒng)是一個演示用系統(tǒng),采用阻塞模式的進程通信機制。
當(dāng)仿真模塊發(fā)出命令后,一直等待實現(xiàn)模塊的響應(yīng),收到響應(yīng)后才能發(fā)出下一個命令。
其通信模型如圖2所示。
4 管理端實現(xiàn)模塊和代理端實現(xiàn)模塊間的通信
管理端實現(xiàn)模塊和代理端實現(xiàn)模塊都實現(xiàn)了snmp,他們之間使用snmp進行通信,其通信模型如圖3所示。
5 利用agentx技術(shù)完善代理和仿真系統(tǒng)
agentx協(xié)議是由ietf在1998年提出的,通過將snmp代理的功能模塊進行分解,提供了另外一種擴展代理的途徑。與通過更改代理內(nèi)部的mib結(jié)構(gòu)來擴展代理功能的方法不同,基于agentx框架的代理軟件將snmp協(xié)議處理和管理信息訪問這2個功能進行了分解,從結(jié)構(gòu)上將代理軟件劃分為主代理和子代理2個部分,主代理負(fù)責(zé)與管理工作站進行交互,處理snmp消息的發(fā)送與接收,但幾乎不對設(shè)備的管理信息進行訪問,各個子代理負(fù)責(zé)對各自的管理信息進行訪問,并將其所負(fù)責(zé)的mib域報告給主代理,但卻不能處理主代理的snmp消息,主代理和子代理之間根據(jù)agentx協(xié)議進行通信。
對于管理工作站來說,agentx協(xié)議是透明的,這樣的結(jié)構(gòu),通過子代理向主代理的注冊來擴展注冊的功能,代理的擴展功能更加靈活,通常情況下,主代理和子代理共存于同一個主機上,agentx的通信屬于進程間的通信,具有較高的效率。
5.1 agentx的框架
在支持agentx的代理結(jié)構(gòu)中包括以下要素:
一個主代理 主代理負(fù)責(zé)處理snmp協(xié)議消息,與管理工作站進行交互,但是一般不具備直接訪問管理信息的權(quán)限。
若干子代理 子代理負(fù)責(zé)訪問管理對象,對于snmp協(xié)議來說,子代理是透明的。
主代理和子代理交互的協(xié)議,就是agentx協(xié)議,實現(xiàn)主代理和子代理之間的通信,支持agentx的代理軟件的結(jié)構(gòu)如圖4所示。
5.2 代理的功能
主代理需要實現(xiàn)以下功能:
(1)接受子代理建立agentx會話的請求;
(2)接受子代理注冊mib域的請求;
(3)接收和發(fā)送snmp協(xié)議消息;
(4)實現(xiàn)除管理操作以外的代理應(yīng)該實現(xiàn)的功能;
(5)提供對與管理框架相關(guān)的mib對象的支持;
(6)根據(jù)子代理注冊的mib域,發(fā)送和接收agentx協(xié)議消息來訪問管理信息;
(7)轉(zhuǎn)發(fā)由子代理產(chǎn)生的通知信息。
子代理需要實現(xiàn)以下功能:
(1)與主代理建立agentx會話;
(2)向主代理注冊mib域;
(3)實例化管理對象;
(4)將其注冊的mib域中的對象標(biāo)識符與實際管理變量進行綁定;
(5)對管理變量進行管理操作;
(6)初始化通知信息。
6 系統(tǒng)實現(xiàn)
本系統(tǒng)采用標(biāo)準(zhǔn)的snmp協(xié)議和純java語言,這樣有利于保證系統(tǒng)的平臺無關(guān)性和通用性,并分別在windows2000及l(fā)inux平臺上實現(xiàn)了該系統(tǒng),測試的環(huán)境分為3種,系統(tǒng)的c端和s端運行在同一個主機上,系統(tǒng)的c端和s端運行在2個以上主機上,但是所有主機使用的是同一種平臺(如:windows2000);系統(tǒng)的c端和s端運行在2個以上主機上,并且各個主機使用的是不同平臺(如:windows 2000,linux等),經(jīng)過測試,驗證了該仿真系統(tǒng)的平臺無關(guān)性和通用性,運行在不同平臺上的仿真系統(tǒng)c端和s端能夠很好的通信,完成仿真模擬功能。
7 結(jié)語
我們開發(fā)的snmp仿真系統(tǒng)已經(jīng)成功地應(yīng)用于教學(xué)中,曾作為學(xué)院網(wǎng)絡(luò)管理課程的優(yōu)秀教學(xué)課件被多次使用,獲得了師生的一致好評,考慮到教學(xué)的靈活性和學(xué)生的學(xué)習(xí)的自主行,該系統(tǒng)支持單機運行和網(wǎng)絡(luò)運行,既可以在機房通過局域網(wǎng)進行實驗,也可以用一臺機器進行實驗,易于使用和管理,該系統(tǒng)的下一個版本,將與web技術(shù)相結(jié)合,通過internet,用戶可以遠(yuǎn)程查看snmp管理端和代理端的工作過程,進一步擴大該系統(tǒng)的可利用價值。
評論