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