2021-4-9 | 互聯(lián)網(wǎng)管理論文
網(wǎng)絡(luò)管理的目的是對網(wǎng)絡(luò)、網(wǎng)絡(luò)單元或設(shè)備進(jìn)行監(jiān)視,采集相關(guān)的數(shù)據(jù),評價網(wǎng)絡(luò)和網(wǎng)絡(luò)單元的有效性,報告網(wǎng)絡(luò)設(shè)備的狀態(tài),支持網(wǎng)絡(luò)規(guī)劃和網(wǎng)絡(luò)分析。這些參數(shù)能幫助網(wǎng)絡(luò)管理人員了解和掌握網(wǎng)絡(luò)的狀態(tài)并及時給予維護(hù)或優(yōu)化。簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)經(jīng)過幾十年的完善和發(fā)展,已經(jīng)成為目前使用最廣泛的網(wǎng)絡(luò)管理標(biāo)準(zhǔn)協(xié)議。基于SNMP協(xié)議以及Java技術(shù)與數(shù)據(jù)庫技術(shù)開發(fā)的網(wǎng)絡(luò)管理系統(tǒng),實現(xiàn)了對區(qū)域網(wǎng)絡(luò)的有效管理。
1SNMP網(wǎng)絡(luò)管理協(xié)議
SNMP框架由三個主要部分構(gòu)成,分別是SMI(StructureofManagementInformation,管理信息結(jié)構(gòu))、MIB(ManagementInformationBase)、和SNMP協(xié)議。SMI是SNMP網(wǎng)絡(luò)管理框架三要素之首,它定義了SNMP框架所用信息的組織、組成和標(biāo)識,SMI是用ASN.1來形式化定義管理對象。其中的每片信息是一個有標(biāo)號的節(jié)點。每個節(jié)點包含兩個內(nèi)容:一個對象標(biāo)識符和一個簡短的文本描述。其中對象標(biāo)識符OID(ObjectIdentifiers,對象標(biāo)識符)是由句點隔開的一組整數(shù),它命名節(jié)點并指示它在ASN.1樹中的準(zhǔn)確位置。管理信息庫(MIB)是網(wǎng)絡(luò)管理中的重要組成部分。每個MIB包含:系統(tǒng)與設(shè)備的狀態(tài)信息,運(yùn)行的數(shù)據(jù)統(tǒng)計,配置參數(shù)等。利用SNMP協(xié)議,可以查詢管理代理實現(xiàn)的MIB中相應(yīng)對象的值,來監(jiān)視網(wǎng)絡(luò)設(shè)備的狀態(tài)。管理代理也會通過SNMP協(xié)議發(fā)出一些trap(陷阱報文)。
2SNMP網(wǎng)絡(luò)管理系統(tǒng)模型
2.1管理者—代理模式
SNMP采用“管理進(jìn)程—代理進(jìn)程”模型來監(jiān)視和控制Internet上各種可管理網(wǎng)絡(luò)設(shè)備。網(wǎng)管活動是通過網(wǎng)管請求的給予者(網(wǎng)管中心的管理者進(jìn)程)和網(wǎng)管請求的接收者(代理系統(tǒng)中的代理進(jìn)程)之間的交互式會話實現(xiàn)的。SNMP管理模型如圖1所示。網(wǎng)絡(luò)操作員首先通過特定的請求窗口向管理者提交網(wǎng)管請求,然后通過本地的網(wǎng)管通信模塊把該請求發(fā)送給指定的遠(yuǎn)程代理,并等待執(zhí)行結(jié)果的返回。遠(yuǎn)程代理在接收到這一請求后,向被監(jiān)控的網(wǎng)絡(luò)資源發(fā)出執(zhí)行該網(wǎng)管請求的命令。此時,遠(yuǎn)程代理將等待執(zhí)行結(jié)果,或在被監(jiān)控的資源出現(xiàn)異常情況時產(chǎn)生事件報告。然后,遠(yuǎn)程代理通過其網(wǎng)管通信模塊向網(wǎng)管中心發(fā)回網(wǎng)管結(jié)果。網(wǎng)管中心的管理者在接收到設(shè)備代理返回的結(jié)果或事件報告后,經(jīng)過分析處理再通過指定窗口把結(jié)果顯示出來。
2.2SNMP網(wǎng)絡(luò)管理系統(tǒng)構(gòu)成
SNMP管理的網(wǎng)絡(luò)由三個關(guān)鍵組件組成:被管理設(shè)備(ManagedDevice)、代理(Agent)和網(wǎng)絡(luò)管理系統(tǒng)(NMS,NetworkManagementSystems)。被管理設(shè)備用于收集并儲存管理信息,通過SNMP,NMS能得到這些信息。被管理設(shè)備可以是路由器、訪問服務(wù)器,交換機(jī)和網(wǎng)橋、HUBS、主機(jī)或打印機(jī)等。SNMP代理是被管理設(shè)備上的一個網(wǎng)絡(luò)管理軟件模塊。SNMP代理擁有本地的相關(guān)管理信息,并將它們轉(zhuǎn)換成與SNMP兼容的格式。網(wǎng)絡(luò)管理系統(tǒng)NMS運(yùn)行應(yīng)用程序以實現(xiàn)監(jiān)控被管理設(shè)備。此外,NMS還為網(wǎng)絡(luò)管理提供了大量的處理程序及必須的儲存資源。任何受管理的網(wǎng)絡(luò)至少需要一個或多個NMS。
3網(wǎng)絡(luò)管理系統(tǒng)總體設(shè)計
基于SNMP網(wǎng)絡(luò)性能參數(shù)設(shè)置及獲取被管理設(shè)備信息的程序流程圖如圖2所示。IP地址標(biāo)識了程序要訪問的網(wǎng)絡(luò)設(shè)備,如主機(jī)、路由器等等,要采集這些設(shè)備的性能參數(shù)就必須向它們發(fā)送SNMP報文,而IP地址則是組成這些SNMPPDU的變量之一?;赟NMP的網(wǎng)絡(luò)管理系統(tǒng)采用JAVA語言編寫,JAVA語言具有良好的跨平臺性和穩(wěn)健性。數(shù)據(jù)庫使用MYSQL,MYSQL具有功能強(qiáng),使用簡單、管理方便、運(yùn)行速度快等特點。
4系統(tǒng)功能實現(xiàn)
4.1系統(tǒng)功能主界面
本系統(tǒng)基于單文檔框架窗口作為系統(tǒng)的總控臺,所有的功能模塊都可在此總控臺中來調(diào)用,SN-MP管理功能部件采用對話框模式。主界面如圖3所示。進(jìn)入系統(tǒng),啟動界面之后,在系統(tǒng)托盤建立應(yīng)用程序圖標(biāo),并打開總控窗口。當(dāng)總控窗口最小化時,將由在托盤區(qū)圖標(biāo)上的相應(yīng)菜單操作來執(zhí)行指令。如圖4所示。
4.2SNMP數(shù)據(jù)采集
SNMP數(shù)據(jù)的采集是重點研究的對象,如何通過編程來實現(xiàn)發(fā)送SNMP報文,取得SNMP報文,從中讀取數(shù)據(jù)就是這次設(shè)計所要解決的。當(dāng)一個SNMP協(xié)議實體(比如管理者)發(fā)送報文時要執(zhí)行下面的過程:首先是按照ASN.1格式構(gòu)造PDU,交給認(rèn)證進(jìn)程。認(rèn)證進(jìn)程檢查源和目標(biāo)之間是否可以通信,如果通過這個檢查,則把有關(guān)信息(版本號、團(tuán)體名、PDU)組裝成報文。最后經(jīng)過BER編碼,交給傳輸實體發(fā)送出去。如圖5所示。當(dāng)一個SNMP協(xié)議實體(比如管理者)接受到報文時要執(zhí)行下面的過程:首先是按照BER編碼恢復(fù)ASN.1報文,然后對報文進(jìn)行語法分析,驗證版本號和認(rèn)證信息等。如果通過分析和驗證,則分離出協(xié)議數(shù)據(jù)單元,并進(jìn)行語法分析,必要時經(jīng)過適當(dāng)處理后返回應(yīng)答報文。在認(rèn)證檢驗失敗時可以生成一個陷阱報文,向發(fā)送端報告異常情況。無論何種檢驗失敗,都丟棄報文。
SNMP規(guī)定了5種協(xié)議數(shù)據(jù)單元PDU(SNMP報文),用來在管理進(jìn)程和代理之間的交換。Get-request操作:從代理進(jìn)程處提取一個或多個參數(shù)值Get-next-request操作:從代理進(jìn)程處提取緊跟當(dāng)前參數(shù)值的下一個參數(shù)值Set-request操作:設(shè)置代理進(jìn)程的一個或多個參數(shù)值Get-response操作:返回的一個或多個參數(shù)值。這個操作是由代理進(jìn)程發(fā)出的,它是前面三種操作的響應(yīng)操作。Trap操作:代理進(jìn)程主動發(fā)出的報文,通知管理進(jìn)程有某些事情發(fā)出。
本系統(tǒng)采用Java語言開發(fā),報文構(gòu)建和解碼工作的部分代碼如下:(1)創(chuàng)建SNMP報文VarBindListretrievedVars=newVarBindList();//請求標(biāo)識interrorStatus=0;//錯誤狀態(tài)interrorIndex=0;//錯誤索引ObjectIdentifierrequestedObjectIdentifier=newObjectIdentifier(itemID);VariablePairnextPair=newVariablePair(re-questedObjectIdentifier,newNullSNMP());SequencevarList=newSequence();varList.addSNMPObject(nextPair);PDUpdu=newPDU(BERCodec.SNMPGE-TREQUEST,requestID,errorStatus,errorIndex,varList);MessageSNMPmessage=newMessageSNMP(version,community,pdu);//其中version、community、pdu三個參數(shù)分別為版本號、團(tuán)體名、PDUbyte[]messageEncoding=message.get-BEREncoding();DatagramPacketoutPacket=newDatagram-Packet(messageEncoding,messageEncoding.length,hostAddress,remotePort);dSocket.send(outPacket);(2)對SNMP報文解碼DatagramPacketinPacket=newDatagram-Packet(newbyte[receiveBufferSize],receiveBuffer-Size);dSocket.receive(inPacket);byte[]encodedMessage=inPacket.getData();MessageSNMPreceivedMessage=newMes-sageSNMP(BERCodec.extractNextTLV(encod-edMessage,0).value);PDUreceivedPDU=receivedMessage.getPDU();if(receivedPDU.getRequestID()==re-questID){if(receivedPDU.getErrorStatus()!=0)thrownewGetExceptionSNMP(”OID”+itemID+”notavailableforretrieval”,receivedP-DU.getErrorIndex(),receivedPDU.getErrorStatus());varList=receivedPDU.getVarBindList();SequencenewPair=(Sequence)(varList.get-SNMPObjectAt(0));ObjectIdentifiernewObjectIdentifier=(Objec-tIdentifier)(newPair.getSNMPObjectAt(0));ObjectSNMPnewValue=newPair.getSNM-PObjectAt(1);if(newObjectIdentifier.toString().equals(itemID)){retrievedVars.addSNMPObject(newPair);break;}}returnretrievedVars;