孫萌 劉雪飛
摘要:為提高網(wǎng)絡(luò)管理效率,實(shí)現(xiàn)網(wǎng)管數(shù)據(jù)的遠(yuǎn)程傳輸,設(shè)計(jì)并實(shí)現(xiàn)了基于Web的MIB瀏覽器。通過研究XML語言與ASN.1的轉(zhuǎn)換來實(shí)現(xiàn)用XML描述MIB文檔,并利用JQuery技術(shù)將其轉(zhuǎn)換為MIB樹狀菜單呈現(xiàn)于瀏覽器頁面,以便于網(wǎng)管人員獲取MIB節(jié)點(diǎn)結(jié)構(gòu)及其屬性信息?;赟NMP4J對(duì)MIB對(duì)象實(shí)例值進(jìn)行采集和配置,并通過DOM技術(shù)將采集到的數(shù)據(jù)解析轉(zhuǎn)換為XML文件以用于Web前后端數(shù)據(jù)的傳輸。利用html和CSS等web技術(shù)進(jìn)行了MIB瀏覽器前端頁面的設(shè)計(jì),并結(jié)合ajax、jsp等技術(shù),實(shí)現(xiàn)了MIB數(shù)據(jù)在前后端交互以及動(dòng)態(tài)地獲取和呈現(xiàn),帶來了高效便捷的網(wǎng)絡(luò)管理。
關(guān)鍵詞:MIB可視化;WBM;網(wǎng)絡(luò)管理;SNMP
中圖分類號(hào): TP302 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)34-0238-04
隨著全球經(jīng)濟(jì)和網(wǎng)絡(luò)信息技術(shù)的飛速發(fā)展,尤其近幾年隨著大數(shù)據(jù)時(shí)代的到來, 信息化在不斷提高,網(wǎng)絡(luò)技術(shù)也得到了進(jìn)一步的推廣及運(yùn)用,網(wǎng)絡(luò)系統(tǒng)呈現(xiàn)出復(fù)雜性的發(fā)展變化[1],因此需要對(duì)傳統(tǒng)的網(wǎng)絡(luò)管理技術(shù)進(jìn)行改革和優(yōu)化,以便提升管理質(zhì)量,保障信息傳遞安全穩(wěn)定[2]。同時(shí),如何對(duì)網(wǎng)管數(shù)據(jù)進(jìn)行可視化[3],使網(wǎng)管人員能夠更直觀便捷地發(fā)現(xiàn)數(shù)據(jù)背后的信息是當(dāng)前網(wǎng)絡(luò)管理中急需解決的問題。隨著網(wǎng)絡(luò)管理技術(shù)的蓬勃發(fā)展,網(wǎng)絡(luò)管理出現(xiàn)了新的方式,B/S結(jié)構(gòu)由于自身優(yōu)勢(shì)逐漸取代C/S結(jié)構(gòu),基于Web的網(wǎng)絡(luò)管理成了網(wǎng)絡(luò)管理技術(shù)發(fā)展的趨勢(shì)。
在網(wǎng)絡(luò)管理中,管理信息庫(MIB)定義了受管網(wǎng)絡(luò)設(shè)備必須保存的數(shù)據(jù)項(xiàng)、允許對(duì)每個(gè)數(shù)據(jù)項(xiàng)進(jìn)行的操作及其含義,它是被管理網(wǎng)絡(luò)設(shè)備中所有數(shù)據(jù)對(duì)象的集合[4]。網(wǎng)管的操作主要是對(duì)MIB節(jié)點(diǎn)對(duì)象的操作,對(duì)象之間的關(guān)系是網(wǎng)絡(luò)管理信息模型中的重要組成部分并體現(xiàn)于MIB節(jié)點(diǎn)的屬性值中[5],實(shí)現(xiàn)MIB結(jié)構(gòu)及信息的可視化有助于提高網(wǎng)絡(luò)管理的效率。MIB瀏覽器為用戶管理MIB對(duì)象提供了圖形化界面,是對(duì)被管理設(shè)備中SNMP變量進(jìn)行管理的圖形化網(wǎng)絡(luò)管理工具[6]。目前比較著名的MIB瀏覽器有NuDesign、Mg-soft、iReasoning等的MIB瀏覽器,但這些瀏覽器均基于C/S結(jié)構(gòu),無法實(shí)現(xiàn)跨系統(tǒng)、跨平臺(tái)使用,且靈活性差,在升級(jí)、維護(hù)、跨平臺(tái)使用等方面均存在不足,使其不再符合現(xiàn)代網(wǎng)絡(luò)管理技術(shù)的發(fā)展趨勢(shì)。
因此本文設(shè)計(jì)并實(shí)現(xiàn)了采用B/S結(jié)構(gòu)的MIB瀏覽器,可以將Web技術(shù)有效地運(yùn)用于網(wǎng)絡(luò)管理當(dāng)中,并結(jié)合SNMP4J進(jìn)行MIB數(shù)據(jù)的采集和配置,能更好地適用于管理當(dāng)代結(jié)構(gòu)更加復(fù)雜的網(wǎng)絡(luò),使網(wǎng)管人員能夠快速地進(jìn)行MIB數(shù)據(jù)的存取以及對(duì)網(wǎng)管數(shù)據(jù)的進(jìn)一步分析,實(shí)現(xiàn)了網(wǎng)管數(shù)據(jù)的跨平臺(tái)分享和高效便捷的網(wǎng)絡(luò)管理。
1 MIB瀏覽器總體設(shè)計(jì)
MIB瀏覽器是一種有效的網(wǎng)絡(luò)管理工具,并且按照SNMP協(xié)議中規(guī)定的操作來操控被管理網(wǎng)絡(luò)設(shè)備的MIB的值[7],能夠使網(wǎng)管人員方便地進(jìn)行網(wǎng)絡(luò)設(shè)備的管理?;赪eb的MIB瀏覽器,采用了B/S架構(gòu),運(yùn)用Web技術(shù)和SNMP4J框架實(shí)現(xiàn)了可跨平臺(tái)訪問的MIB瀏覽器,總體設(shè)計(jì)如圖1所示。
2 瀏覽器端模塊的設(shè)計(jì)與實(shí)現(xiàn)
2.1設(shè)計(jì)并實(shí)現(xiàn)用xml描述MIB文檔
RFC1213即MIB-II文檔是用于定義和描述MIB對(duì)象的文檔,文檔采用ASN.1語言進(jìn)行描述,管理信息的管理樹型結(jié)構(gòu)中的SNMP管理對(duì)象節(jié)點(diǎn)在其中被分為了6個(gè)對(duì)象組。以節(jié)點(diǎn)對(duì)象實(shí)例表示方法來看,可以把節(jié)點(diǎn)分為標(biāo)量對(duì)象和表對(duì)象,其中表對(duì)象是由行對(duì)象和列對(duì)象組成[8]。在文檔中MIB對(duì)象的描述采用了宏定義OBJECT-TYPE作為對(duì)象類型的描述模板,該類型模板規(guī)定,對(duì)象類型由6部分組成:對(duì)象類型的名稱、語法、訪問權(quán)限、狀態(tài)、描述信息以及對(duì)象標(biāo)識(shí)符OID。
與ASN.1相比,XML 能夠更加清晰地表示MIB文件中被管理對(duì)象的樹狀層次結(jié)構(gòu),因此使用 XML 對(duì)網(wǎng)絡(luò)管理數(shù)據(jù)進(jìn)行建模更加合理[9]。作者采取了XMLSchema映射方法,設(shè)計(jì)將管理對(duì)象轉(zhuǎn)換為XMLSchema中描述的復(fù)雜類型元素,而對(duì)象中必須定義的6種信息作為XML元素的屬性進(jìn)行轉(zhuǎn)換,根據(jù)由MIB對(duì)象映射后的XMLSchema,將MIB文檔中管理對(duì)象的信息編寫為xml文檔,如圖2所示(以system對(duì)象組為例)。
2.2 MIB樹狀菜單的設(shè)計(jì)和實(shí)現(xiàn)
MIB瀏覽器需要呈現(xiàn)所有的MIB節(jié)點(diǎn),因MIB節(jié)點(diǎn)以樹狀結(jié)構(gòu)組織,因此可以設(shè)計(jì)為樹狀菜單呈現(xiàn)到Web頁面上,而且MIB節(jié)點(diǎn)對(duì)象的相關(guān)信息也需要獲取并呈現(xiàn)。在HTML頁面引入JS文件以生成菜單,JS文件采取了JQuery框架,利用ajax進(jìn)行2.1章節(jié)xml文檔的載入,并且通過Jquery遍歷操作實(shí)現(xiàn)對(duì)載入各元素的操縱。利用Jquery中的attr方法對(duì)元素中的屬性進(jìn)行操作,通過解析xml文檔中的id屬性實(shí)現(xiàn)樹形結(jié)構(gòu)的層次布局。利用Jquery的each()、attr()、click()等方法實(shí)現(xiàn)對(duì)節(jié)點(diǎn)的操控及屬性信息自動(dòng)獲取。對(duì)MIB樹狀菜單操控主要是:利用 “class$=”屬性通配符,獲取所有class值以“-plus”“-minus”結(jié)尾的節(jié)點(diǎn),對(duì)其進(jìn)行展開和收起;通過find()、each()和prop()進(jìn)行全選和取消全選。
2.3被管設(shè)備IP地址設(shè)置模塊
通過SNMP訪問被管網(wǎng)絡(luò)設(shè)備,需要根據(jù)符合規(guī)范的設(shè)備IP地址來設(shè)置目標(biāo)主機(jī),否則會(huì)影響設(shè)備的連接及MIB對(duì)象值的獲取。IP地址的正則表達(dá)式如下:
((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))。通過JavaScript中的正則表達(dá)式的test()方法進(jìn)行校驗(yàn)。
2.4 SNMP共同體名設(shè)置模塊
SNMP提供了基于共同體的安全機(jī)制用于保證網(wǎng)絡(luò)管理信息的安全,共同體名設(shè)計(jì)為必填項(xiàng),對(duì)應(yīng)的正則表達(dá)式“$| ”,通過test()方法校驗(yàn)。
2.5網(wǎng)管操作類型設(shè)置模塊
本文根據(jù)網(wǎng)管常見操作設(shè)計(jì)了四種操作類型:
Get:獲取葉子節(jié)點(diǎn)即標(biāo)量對(duì)象的信息;
Walk:獲取表對(duì)象的信息;
GetList:獲取多個(gè)標(biāo)量對(duì)象的信息;
Set:對(duì)MIB節(jié)點(diǎn)進(jìn)行設(shè)置。
通過html的select控件來實(shí)現(xiàn),onchange事件調(diào)用用戶改變輸入域的內(nèi)容時(shí)執(zhí)行的函數(shù),函數(shù)中通過判斷select中option的value值來進(jìn)行相應(yīng)的操作。
2.6 MIB對(duì)象值顯示模塊
MIB對(duì)象實(shí)例值在前臺(tái)以表格形式呈現(xiàn),通過按鈕觸發(fā)Getmib函數(shù)獲取后臺(tái)采集到的mib數(shù)據(jù)并且以表格形式呈現(xiàn),編寫cleartable函數(shù)用于清空表格數(shù)據(jù),清除除表頭外的其他行。
3服務(wù)端模塊的設(shè)計(jì)與實(shí)現(xiàn)
3.1 利用SNMP4J實(shí)現(xiàn)MIB信息的訪問
3.1.1 標(biāo)量對(duì)象信息的獲取
對(duì)于每個(gè)標(biāo)量對(duì)象類型都只有唯一一個(gè)對(duì)象實(shí)例,對(duì)象類型及其對(duì)象實(shí)例之間不存在模糊性[10],按規(guī)定每個(gè)標(biāo)量對(duì)象的對(duì)象標(biāo)識(shí)之后加上“.0”組成它的對(duì)象實(shí)例標(biāo)識(shí),因此需默認(rèn)在自動(dòng)獲取的對(duì)象標(biāo)識(shí)符之后增加“.0”再進(jìn)行添加VariableBinding。
創(chuàng)建SNMP、PDU對(duì)象,并且調(diào)用add方法添加變量綁定,調(diào)用setType()方法來確定該pdu的操作類型為GET,send()方法發(fā)送pdu,并且返回一個(gè)ResponseEvent對(duì)象,然后通過getResponse()方法來獲得SNMP請(qǐng)求的應(yīng)答pdu。response不為空時(shí),利用response的get(int index)方法返回VaribleBinding類型的對(duì)象vb,然后通過VaribleBinding的getOid和getVariable()獲取變量綁定的對(duì)象實(shí)例標(biāo)識(shí)符和對(duì)象值。
3.1.2多條標(biāo)量對(duì)象信息的獲取
在瀏覽器端同時(shí)通過MIB樹狀菜單自動(dòng)獲取多條對(duì)象標(biāo)識(shí)符,多條對(duì)象標(biāo)識(shí)符數(shù)據(jù)將封裝為一個(gè)list集合傳給后臺(tái)SNMP4J代碼。通過for-each遍歷list集合中的OID并將其依次添加變量綁定,最后利用for循環(huán)通過應(yīng)答pdu獲取多條變量綁定的對(duì)象實(shí)例標(biāo)識(shí)符和變量綁定的對(duì)象值。
3.1.3表對(duì)象信息的獲取
表對(duì)象中具有多個(gè)列向量實(shí)例,需通過遍歷的方式來獲取。具體代碼實(shí)現(xiàn)過程如圖3所示。
其中根據(jù)調(diào)用checkWalkFinished方法返回finished值來判斷是否結(jié)束遍歷。方法中通過調(diào)用getErrorStatus()方法判斷pdu的error狀態(tài)是否正常;利用vb.getOid()判斷vb中OID是否為空;通過OID類的size()方法,比對(duì)vb中子標(biāo)識(shí)符數(shù)與targetoid中子標(biāo)識(shí)符數(shù);利用leftMostCompare()方法逐一對(duì)比vb中OID與targetoid的子標(biāo)識(shí)符是否一致;利用isExceptionSyntax()方法進(jìn)行syntax屬性判斷;利用compareTo方法進(jìn)行vb中OID與targetOID的對(duì)比。
3.1.4設(shè)置MIB對(duì)象實(shí)例值
網(wǎng)管人員常常需要通過修改MIB對(duì)象值達(dá)到管理網(wǎng)絡(luò)設(shè)備的目的,SNMP4J中的PDU的settype提供了set操作類型。設(shè)置MIB對(duì)象需要注意的是:該團(tuán)體名有寫的權(quán)限,同時(shí)該MIB對(duì)象是可寫的,并且寫的值與MIB對(duì)象類型中所聲明的值的類型一致。
3.2 利用DOM解析轉(zhuǎn)換MIB數(shù)據(jù)為xml文件
本文通過創(chuàng)建document對(duì)象和節(jié)點(diǎn)對(duì)象,并且根據(jù)采集到的MIB數(shù)據(jù)結(jié)構(gòu),來構(gòu)建MIB數(shù)據(jù)的xml文檔,將采集到的MIB數(shù)據(jù)轉(zhuǎn)換為XML格式用于前后端之間的傳輸。
首先將采集的MIB對(duì)象數(shù)據(jù)存入List集合,以用于將數(shù)據(jù)值作為文本節(jié)點(diǎn)對(duì)象添加到document中。創(chuàng)建 DOM 解析器工廠、解析器對(duì)象,然后創(chuàng)建document對(duì)象并利用createElement方法創(chuàng)建根節(jié)點(diǎn)rootnode。利用appendChild方法在根節(jié)點(diǎn)下創(chuàng)建equipment子節(jié)點(diǎn),作為OID和value的節(jié)點(diǎn)集合,長(zhǎng)度與Oidarlist的長(zhǎng)度保持一致。根據(jù)標(biāo)簽名equipment獲取由該元素包含的所有子元素組成的nodeList,進(jìn)行子元素添加。然后根據(jù)標(biāo)簽名OID和Value分別獲取元素包含的所有子元素組成的nodeList,通過遍歷獲取集合(數(shù)組)的元素值并將其通過createTextNode方法作為文本節(jié)點(diǎn)對(duì)象添加到document中。最后,利用TransformerFactory創(chuàng)建轉(zhuǎn)換工廠對(duì)象和文件轉(zhuǎn)換對(duì)象,并且利用domSource把要轉(zhuǎn)換的document對(duì)象封裝到DOMSource類中。新建xml文件并創(chuàng)建文件輸出流,把轉(zhuǎn)換得到的xml文件保存到StreamResult,利用transform(domSource,xmlResult)方法把節(jié)點(diǎn)樹轉(zhuǎn)換為XML文件。
3.3 MIB數(shù)據(jù)在前后端的交互
3.3.1利用JSP獲取前端輸入數(shù)據(jù)
用request.getParameter()方法獲取前端頁面的表單輸入,并將其作為字符串類型的參數(shù)傳入相應(yīng)的方法中。并利用switch語句進(jìn)行前端傳入的操作類型的判定:
case “Get”時(shí),根據(jù)對(duì)象標(biāo)識(shí)符加上".0"創(chuàng)建對(duì)象實(shí)例標(biāo)識(shí)符,調(diào)用GetsingleOID方法;
case “Walk”時(shí),調(diào)用GetMIBData中的Walk方法;
case “GetList”時(shí),通過split方法將前端傳來的多個(gè)OID字符串以逗號(hào)分割,并將其存放入名為oidlist的數(shù)組,調(diào)用GetList方法;
case “GetList”時(shí),需判斷前端傳入的節(jié)點(diǎn)access屬性是否為可寫"read-write",若可以調(diào)用setMIB方法,否則彈框提示“該節(jié)點(diǎn)不允許此操作”。
3.3.2用ajax呈現(xiàn)采集到的xml格式的mib數(shù)據(jù)
設(shè)計(jì)利用ajax中XMLhttpRequest請(qǐng)求3.2章節(jié)中生成的XML文件,并從XML文件中提取節(jié)點(diǎn)信息以表格形式呈現(xiàn)到前端頁面。
創(chuàng)建XMLHttpRequest對(duì)象,使用XMLHttpRequest對(duì)象的open()和send()方法進(jìn)行請(qǐng)求的發(fā)送,選用 XMLHttpRequest 對(duì)象的responseXML屬性獲得來自服務(wù)器的響應(yīng),具體實(shí)現(xiàn)代碼流程如圖3所示。
4結(jié)束語
本文從基于Web的觀點(diǎn)出發(fā),立足于研究Web、SNMP相關(guān)技術(shù)和方法,為解決傳統(tǒng)C/S架構(gòu)MIB瀏覽器的不足設(shè)計(jì)并實(shí)現(xiàn)了B/S架構(gòu)的MIB瀏覽器。運(yùn)用Web技術(shù)實(shí)現(xiàn)MIB數(shù)據(jù)的可視化并進(jìn)行網(wǎng)絡(luò)管理,便于網(wǎng)管人員能夠快速地進(jìn)行MIB數(shù)據(jù)的存取以及對(duì)網(wǎng)管數(shù)據(jù)的進(jìn)一步分析,實(shí)現(xiàn)了網(wǎng)管數(shù)據(jù)的遠(yuǎn)程
傳輸和高效便捷的網(wǎng)絡(luò)管理。因?yàn)闀r(shí)間有限,本文未將MIB瀏覽器集成到網(wǎng)絡(luò)管理系統(tǒng),后續(xù)會(huì)進(jìn)一步研究實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)數(shù)據(jù)的關(guān)聯(lián)分析和圖形展示??傮w來說,基于 Web 的MIB瀏覽器符合未來網(wǎng)絡(luò)管理發(fā)展趨勢(shì),能更好地適用于管理當(dāng)代結(jié)構(gòu)更加復(fù)雜的網(wǎng)絡(luò),有利于對(duì)信息爆炸的大數(shù)據(jù)時(shí)代帶來的海量網(wǎng)絡(luò)數(shù)據(jù)的處理。
參考文獻(xiàn):
[1] 滕云于勃.基于Web管理技術(shù)的安全網(wǎng)絡(luò)管理系統(tǒng)[J].電子技術(shù)與軟件工程,2019(17):205-206.
[2] 趙子玉.計(jì)算機(jī)網(wǎng)絡(luò)管理系統(tǒng)應(yīng)用的現(xiàn)狀與發(fā)展[J].中國(guó)管理信息化,2018,21(5):187-189.
[3] 陶詩羽.基于Web的網(wǎng)絡(luò)設(shè)備配置管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2018.
[4] 賈宇琪.基于MIB動(dòng)態(tài)解析技術(shù)的集群網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2019.
[5] 李鵬飛. 基于XML的管理信息實(shí)例樹可視化呈現(xiàn)和編輯方法[D].北京郵電大學(xué),2018.
[6] 劉雪飛.基于SNMP++的MIB瀏覽器研究[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(3):91-93.
[7] 王勇.計(jì)算機(jī)網(wǎng)絡(luò)管理教程[M].北京:清華大學(xué)出版社,2010.
[8] 劉雪飛,王申強(qiáng),吳伯橋.一種MIB-Ⅱ轉(zhuǎn)換為XML文檔格式的DTD映射方法[C].//中國(guó)計(jì)算機(jī)用戶協(xié)會(huì).中國(guó)計(jì)算機(jī)用戶協(xié)會(huì)網(wǎng)絡(luò)應(yīng)用分會(huì)2011年第十五屆網(wǎng)絡(luò)新技術(shù)與應(yīng)用年會(huì)論文集.2011:104-106,128.
[9] 吳黎兵,付帆,何炎祥,等.基于XML網(wǎng)絡(luò)管理的MIB轉(zhuǎn)換方法研究[J].武漢理工大學(xué)學(xué)報(bào)(信息與管理工程版),2011,33(6):851-854,863.
[10] 沈亞琦.基于SNMP的網(wǎng)絡(luò)計(jì)費(fèi)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2006.
【通聯(lián)編輯:唐一東】