國(guó)網(wǎng)湖北省電力公司襄陽(yáng)供電公司 黃先宇
基于SNMP的網(wǎng)管代理模擬軟件的方案設(shè)計(jì)
國(guó)網(wǎng)湖北省電力公司襄陽(yáng)供電公司 黃先宇
簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)是目前應(yīng)用最廣泛的網(wǎng)絡(luò)管理協(xié)議,用以管理接入網(wǎng)絡(luò)的設(shè)備。網(wǎng)絡(luò)管理代理是SNMP的組成部分,它是運(yùn)行在被管設(shè)備端的管理程序,具備本地設(shè)備的相關(guān)狀態(tài)信息,可與網(wǎng)絡(luò)管理系統(tǒng)通信。本課題源于綜合網(wǎng)絡(luò)管理系統(tǒng)的開(kāi)發(fā),在實(shí)際的應(yīng)用場(chǎng)景中,在測(cè)試時(shí)期就投入非常多的資金購(gòu)置設(shè)備用于組建開(kāi)發(fā)環(huán)境勢(shì)必造成浪費(fèi)。因而采用模擬軟件環(huán)境是最佳的解決方法。本課題的目的就是設(shè)計(jì)一個(gè)網(wǎng)絡(luò)管理代理模擬軟件,它可以模擬各類網(wǎng)絡(luò)設(shè)備,接受管理中心的管理操作。
網(wǎng)絡(luò)管理;SNMP;MIB庫(kù);網(wǎng)管代理
SNMP在TCP/IP協(xié)議族中是屬于應(yīng)用層上的通信協(xié)議,因而網(wǎng)管代理模擬軟件的設(shè)計(jì)需要滿足管理站對(duì)遠(yuǎn)程管理設(shè)備的各方面功能需求,即能夠模擬實(shí)際網(wǎng)絡(luò)設(shè)備代理與網(wǎng)絡(luò)管理站進(jìn)行信息通信。它應(yīng)該具備以下幾個(gè)方面的功能:
1)能夠模擬多種不同方式的設(shè)備異常并以發(fā)送陷阱報(bào)文的方式向網(wǎng)絡(luò)管理站主動(dòng)上報(bào)消息通知;
2)能夠接受來(lái)自網(wǎng)絡(luò)管理站多個(gè)版本(SNMPv1、SNMPv2)的輪詢請(qǐng)求并返回正確的應(yīng)答報(bào)文,包括查詢MIB對(duì)象值、修改MIB對(duì)象值、處理控制命令等;
3)具備可靠的MIB對(duì)象查詢算法,可以高速、可靠地在Agent的MIB庫(kù)中查詢到SNMP請(qǐng)求報(bào)文變量列表中綁定的MIB對(duì)象,從而實(shí)現(xiàn)對(duì)MIB庫(kù)中的信息的查詢與修改操作;
4)具備較好的擴(kuò)展性和執(zhí)行效率。
SnmpSharpNet是一個(gè)完全免費(fèi)的開(kāi)源SNMP API函數(shù)庫(kù),該函數(shù)庫(kù)全部使用C#編寫(xiě),并且完全獨(dú)立,不需要依賴其它函數(shù)庫(kù)。可以完全支持SNMP v1以及SNMP v2版本,對(duì)最新的SNMP v3也提供了較為全面的支持。由于采用的是面向?qū)ο蟮木幊涕_(kāi)發(fā)語(yǔ)言,因而具備較好的安全性、易用性以及可擴(kuò)展性。
SnmpSharpNet提供了對(duì)Get、Get-Next、 Get-Bulk、Set-Requests以及相關(guān)響應(yīng)以及Trap操作的支持,可以很方便的構(gòu)造相應(yīng)的SNMP協(xié)議報(bào)文并提供發(fā)送以及報(bào)文相關(guān)參數(shù)設(shè)置操作。同時(shí)在更加高級(jí)的Manager與Agent的開(kāi)發(fā)中,SnmpSharpNet也提供了低層次的SNMP報(bào)文封裝,可以構(gòu)造指定版本的SNMP PDU報(bào)文,同時(shí)可以自定義報(bào)文中的任意參數(shù),從而使開(kāi)發(fā)范圍更加自由,應(yīng)用層面更加廣泛。
使用低層次SnmpSharpNet封裝的編程的步驟如下:
1)生成一個(gè)指定版本的SNMP報(bào)文類的對(duì)象實(shí)例SnmpPacket;
2)設(shè)置SnmpPacket的共同體名;
3)設(shè)置SnmpPacket的操作類型;
4)設(shè)置SnmpPacket的RequestId;
5)將變量綁定到SnmpPacket的變量表中;
6)將SnmpPacket編碼成字節(jié)數(shù)組準(zhǔn)備發(fā)送;
7)創(chuàng)建UDP Socket實(shí)例,設(shè)置IP與端口號(hào)以及重傳次數(shù);
8)調(diào)用Socket實(shí)例的Sendto方法,將報(bào)文發(fā)送出去。
根據(jù)本模擬軟件需要實(shí)現(xiàn)的核心功能,將其分為四個(gè)模塊:系統(tǒng)初始化、MIB管理、命令處理和Trap處理。
在軟件啟動(dòng)時(shí)首先需要進(jìn)行初始化工作,使Agent進(jìn)入就緒狀態(tài)。要想實(shí)現(xiàn)對(duì)被管設(shè)備的模擬以及對(duì)被管對(duì)象的抽象,該軟件需要維護(hù)一個(gè)MIB信息庫(kù),因而本軟件需要一個(gè)MIB管理模塊,該模塊主要完成MIB樹(shù)的構(gòu)建、對(duì)象查找和消息響應(yīng)數(shù)據(jù)生成等功能,由于MIB定義是遵循ASN.1語(yǔ)法的語(yǔ)句,因而還需要將MIB描述文檔解析為軟件可管理的MIB文件,所以MIB模塊還需要具備MIB詞法分析功能。由于網(wǎng)絡(luò)管理站通過(guò)發(fā)送相關(guān)的SNMP請(qǐng)求報(bào)文來(lái)管理Agent,因而Agent需要具備接收和分析SNMP報(bào)文的功能。因而本軟件需要一個(gè)管理命令處理模塊來(lái)完成模擬軟件和管理軟件間的請(qǐng)求-響應(yīng)式通信功能。Agent通過(guò)向網(wǎng)絡(luò)管理站發(fā)送Trap報(bào)文來(lái)報(bào)告設(shè)備異常信息,因而需要Trap處理模塊主要完成Trap信息的產(chǎn)生和發(fā)送。這四個(gè)模塊分別獨(dú)立開(kāi)發(fā),最終集成在網(wǎng)管代理模擬系統(tǒng)中,以此提高軟件的開(kāi)發(fā)效率和可維護(hù)性。
軟件的初始化工作是軟件開(kāi)發(fā)工作的首要問(wèn)題,軟件的初始化包括加載MIB文件,初始化UDP端口以及配置數(shù)據(jù)三個(gè)過(guò)程。
4.1 MIB文件的加載
考慮到MIB的結(jié)構(gòu)為層次化的樹(shù)型結(jié)構(gòu),由于XML語(yǔ)言可以存儲(chǔ)樹(shù)型節(jié)點(diǎn),因而本軟件使用XML符號(hào)語(yǔ)言作為MIB庫(kù)的記錄語(yǔ)言。代理軟件啟動(dòng)后需要首先加載MIB庫(kù)文件。軟件根據(jù)用戶選擇的XML文件地址,創(chuàng)建XmlDocument實(shí)例將XML文件讀入內(nèi)存中,準(zhǔn)備由MIB模塊調(diào)用處理。同時(shí)將加載好的MIB樹(shù)顯示到圖形界面上的TreeView控件中,方便直接查詢。
4.2 UDP接口的初始化
代理模擬軟件啟動(dòng)后,由于來(lái)自Manager的UDP報(bào)文會(huì)發(fā)到161號(hào)端口。因而需要在本機(jī)對(duì)161號(hào)端口啟動(dòng)監(jiān)聽(tīng),等待Manager發(fā)來(lái)的管理報(bào)文。具體的操作步驟如下:
1)創(chuàng)建基于UDP協(xié)議的Socket對(duì)象實(shí)例,即new Socket(AddressFamily. InterNetwork, SocketType.Dgram, ProtocolType.Udp),其中AddressFamily.InterNetwork代表使用IPv4地址,SocketType.Dgram說(shuō)明使用無(wú)連接的數(shù)據(jù)報(bào)模式,ProtocolType.Udp代表使用UDP傳輸協(xié)議;
2)調(diào)用Socket實(shí)例的Bind函數(shù)將該UDP套接字綁定到161端口;
3)調(diào)用Socket實(shí)例的ReceiveFrom方法等待來(lái)自Manager的SNMP報(bào)文。
4.3 配置信息初始化
程序啟動(dòng)后需要配置Manager的IP地址、SNMP協(xié)議版本、共同體名稱、超時(shí)時(shí)間、重傳次數(shù)等相關(guān)參數(shù)。同時(shí)這些配置都可以由用戶自定義修改,從而提高了軟件的靈活性。
網(wǎng)管代理模擬軟件啟動(dòng)后,首先會(huì)檢測(cè)161號(hào)端口是否已被占用,如果被占用,則會(huì)發(fā)出提示。若161號(hào)端口處于空閑狀態(tài),則程序會(huì)在UDP161端口啟動(dòng)監(jiān)聽(tīng),等待來(lái)自Manager的SNMP請(qǐng)求。
當(dāng)程序收到來(lái)自Manager的SNMP請(qǐng)求時(shí),會(huì)先分析該請(qǐng)求是否合法,對(duì)于錯(cuò)誤的及不支持的請(qǐng)求,會(huì)丟棄該報(bào)文并繼續(xù)監(jiān)聽(tīng);若是合法的SNMP請(qǐng)求,則對(duì)該請(qǐng)求進(jìn)行報(bào)文解析,根據(jù)解析出的Gct或Set命令來(lái)決定Agent的響應(yīng)操作。如果為Get命令,則通過(guò)MIB管理模塊得到相應(yīng)MIB樹(shù)節(jié)點(diǎn)數(shù)據(jù);若為Set命令,則根據(jù)Set命令的數(shù)據(jù)對(duì)MIB樹(shù)節(jié)點(diǎn)中相應(yīng)的參數(shù)進(jìn)行修改操作,并將修改后的記錄存儲(chǔ)到MIB庫(kù)中。當(dāng)接收到的命令處理完成后,模擬軟件會(huì)將處理的結(jié)果構(gòu)造Response報(bào)文返回給Manager。
[1]王俊鵬.Internet網(wǎng)絡(luò)管理研究與實(shí)現(xiàn)[N].計(jì)算機(jī)應(yīng)用技術(shù),2002.
[2]張超.網(wǎng)絡(luò)管理――計(jì)算機(jī)網(wǎng)絡(luò)質(zhì)量體系的關(guān)鍵環(huán)節(jié)[J].江蘇科技信息,2007.
[3]劉文輝.網(wǎng)絡(luò)管理協(xié)議概述[J].江西化工,2003.
[4]郭瑞華.XML數(shù)據(jù)庫(kù)技術(shù)[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2004.
黃先宇(1993—),男,湖北襄陽(yáng)人,大學(xué)本科,畢業(yè)于華北電力大學(xué),現(xiàn)供職于國(guó)網(wǎng)湖北省電力公司襄陽(yáng)供電公司,研究方向:網(wǎng)絡(luò)工程。