1.引言
近年來,隨著網(wǎng)絡(luò)應(yīng)用和規(guī)模的不斷增加,網(wǎng)絡(luò)管理工作越來越繁重.由于缺乏必要的網(wǎng)絡(luò)監(jiān)控手段,有時甚至無法及時發(fā)現(xiàn)網(wǎng)絡(luò)故障的發(fā)生.而網(wǎng)絡(luò)管理的目標(biāo)是最大限度的保證網(wǎng)絡(luò)運行的穩(wěn)定性,提高網(wǎng)絡(luò)設(shè)備的利用率.網(wǎng)絡(luò)性能.服務(wù)質(zhì)量和安全性.因此,先進的網(wǎng)絡(luò)管理手段對于保持良好的網(wǎng)絡(luò)運行狀態(tài)顯得尤為重要.目前多數(shù)網(wǎng)絡(luò)設(shè)備都支持SNMP(Simple Network ManagementProtocol,簡單網(wǎng)絡(luò)管理協(xié)議),所以可以通過SNMP協(xié)議,對網(wǎng)絡(luò)設(shè)備及參數(shù)進行實時測量,及時了解網(wǎng)絡(luò)設(shè)備的性能及帶寬使用情況,以便實時了解網(wǎng)絡(luò)當(dāng)前的運行狀態(tài).
2.SNMP
SNMP的前身是簡單網(wǎng)關(guān)監(jiān)控協(xié)議(SGMP),用來對通信線路進行管理.隨后, 人們對SGMP進行了很大的修改,特別是加入了符合Internet定義的SMI和MIB,改進后的協(xié)議就是著名的SNMP.基于TCP/IP的SNMP網(wǎng)絡(luò)管理框架是工業(yè)上的現(xiàn)行標(biāo)準,由3個主要部分組成,分別是管理信息結(jié)構(gòu)SMI(Structure ofManagement Information).管理信息庫MIB和管理協(xié)議SNMP.SMI定義了SNMP框架所用信息的組織和標(biāo)識,為MIB定義管理對象及使用管理對象提供模板;MIB定義了可以通過SNMP進行訪問的管理對象的集合;SNMP協(xié)議是應(yīng)用層協(xié)議,定義了網(wǎng)絡(luò)管理者如何對代理進程的MIB對象進行讀寫操作.SNMP中的MIB是一種樹狀數(shù)據(jù)庫,MIB管理的對象,就是樹的端節(jié)點,每個節(jié)點都有唯一位置和唯一名字.IETF規(guī)定管理信息庫對象識別符(O I D,O b j e c tIdentifier)唯一指定,其命名規(guī)則就是父節(jié)點的名字作為子節(jié)點名字的前綴.
根據(jù)OSI網(wǎng)絡(luò)協(xié)議參考模型,SNMP屬于應(yīng)用層協(xié)議,在運輸層使用UDP協(xié)議進行封裝.
由于UDP只提供無連接的服務(wù),因此SNMP不需要在代理和管理器之間保持聯(lián)接.SNMP實體發(fā)送消息后不需等待應(yīng)答,仍然可以繼續(xù)發(fā)送其他消息.SNMP并不要求消息傳輸?shù)目煽啃?,消息可能被下層的傳輸服?wù)丟失,因此可靠性的實現(xiàn)應(yīng)由SNMP發(fā)送實體根據(jù)消息的重要性自行決定.
3.SNMP++開發(fā)包
3.1 SNMP++開發(fā)包簡介
SNMP++是一套C++類的集合,為網(wǎng)絡(luò)管理應(yīng)用的開發(fā)者提供了SNMP服務(wù).SNMP++并非是現(xiàn)有的SNMP引擎的擴充或者封裝,它通過提供強大靈活的功能,降低管理和執(zhí)行的復(fù)雜性,把面向?qū)ο蟮膬?yōu)點帶到了網(wǎng)絡(luò)編程中.SNMP++開發(fā)包源代碼公開,免費提供,具有如下特點:
(1)內(nèi)存管理方面.在創(chuàng)建或銷毀一個對象時,SNMP++類負責(zé)該對象使用資源的申請和釋放.SNMP++的對象可以靜態(tài)或動態(tài)創(chuàng)建,程序員不用擔(dān)心由于使用SNMP++對象而引起資源或內(nèi)存泄漏問題.
(2)可移植性強.除了SNMP類的實現(xiàn)隨操作系統(tǒng)不同有所區(qū)別,SNMP++中所有的類都是由可移植性極強的C++代碼編寫的,因此使用SNMP++軟件包編寫的網(wǎng)絡(luò)管理程序具有很好的可移植性.
(3)提供超時和重傳機制.SNMP++在Target類中提供了超時和重傳服務(wù),程序員只需要設(shè)置參數(shù)就可以實現(xiàn)超時和重傳功能,而不必去費力編寫超時和重傳功能的代碼.對于不同的Target,可以很容易地實現(xiàn)不同的超時和重傳機制.
(4)阻塞模式與非阻塞模式的網(wǎng)絡(luò)請求.
SNMP++提供了兩種模式的網(wǎng)絡(luò)請求:阻塞與非阻塞模式.阻塞模式是一個請求發(fā)出后,程序等候回應(yīng)包的到來,直到超時.非阻塞模式則是在請求發(fā)出后,控制返回繼續(xù)執(zhí)行,等回應(yīng)包到來后,再去做處理.非阻塞模式的實現(xiàn)要復(fù)雜一些,但較為靈活.
(5)支持Trap的發(fā)送和接收.使用SNMP++,可以很方便地實現(xiàn)Trap的發(fā)送與接收功能,并且可以調(diào)整Trap發(fā)送與接收時所使用的UDP端口.
3.2 SNMP++軟件包的相關(guān)類
SNMP++使用C++語言編寫,充分利用了面向?qū)ο蟮木幊碳夹g(shù),SNMP編程涉及的所有數(shù)據(jù)結(jié)構(gòu),全部被封裝在相應(yīng)的類中.所有的底層操作細節(jié),對使用者來說是完全透明的,使用者只需要設(shè)置好相應(yīng)的參數(shù),調(diào)用對象的方法,就可以完成各種SNMP操作.
SNMP++包括了大約70個類,大致可分為:
數(shù)據(jù)類型類,主要封裝了SMI中定義的ASN.1,數(shù)據(jù)類型以及SNMP中定義的數(shù)據(jù)類型;變量綁定類,封裝了SNMP消息中的變量綁定數(shù)據(jù)結(jié)構(gòu);PDU類,封裝了SNMP消息中的PDU部分;Target類,封裝了構(gòu)成一個SNMP消息所需要的全部信息;SNMP類,主要用來完成建立網(wǎng)絡(luò)連接.發(fā)送消息.接收Trap等操作;另外還有用于支持上述類功能的支持類以及SNMPv3消息加密.用戶認證類等.
4.一種實時網(wǎng)絡(luò)運行狀態(tài)的輪詢及改進方法
4.1 實時網(wǎng)絡(luò)運行狀態(tài)的輪詢方法
在SNMP中,有很多MIB對象提供了大量的網(wǎng)絡(luò)信息.可以通過SNMP輪詢(polling)的方式,從主機或網(wǎng)絡(luò)設(shè)備中來定期獲取MIB信息并進行統(tǒng)計分析,從而獲知網(wǎng)絡(luò)的實時性能狀態(tài).然而受網(wǎng)絡(luò)規(guī)模.代理數(shù)量.管理終端的處理速度.網(wǎng)絡(luò)阻塞狀況等因素的影響,輪詢的頻率較難確定.為簡化問題,假定網(wǎng)絡(luò)管理工作站(NMS)一次只處理一個代理(即只有當(dāng)一個代理處理完,其他代理才可以工作).
輪詢周期Td必須滿足條件T chN d ≥ Δ@ ,其中Δ 是NMS從代理成功獲得響應(yīng)消息的最小需求時間,N是代理的總數(shù)量.
另外還需要考慮網(wǎng)絡(luò)流量的影響,此時輪訓(xùn)周期可表示為:
其中Si是每次輪詢的網(wǎng)絡(luò)流量,而W是分配的網(wǎng)絡(luò)帶寬.
要達到實時的監(jiān)控代理的管理信息,NMS選擇的輪詢周期應(yīng)符合奈奎斯特條件:
所以輪詢周期的上下限為:
這種SNMP輪詢可擴展性較差,因為當(dāng)設(shè)備數(shù)量或數(shù)據(jù)量很大.會導(dǎo)致較大延遲且占用大量帶寬資源,容易導(dǎo)致通信擁塞,實時性較差.
4.2 輪詢方法的改進
在改進的實時監(jiān)控方法中,每個代理以自身的周期發(fā)送管理信息,無需NMS的參與.
該方法的一個優(yōu)點是在網(wǎng)絡(luò)監(jiān)控中沒有請求的周期性輪詢.首先,NMS發(fā)送默認的報告周期變量,代理則發(fā)送相關(guān)周期變量值,并提取每個數(shù)據(jù)類型的頻率部分.每個代理根據(jù)管理信息中的時間變化來計算自己的監(jiān)控周期AMP(Agent Monitoring Periods).如果代理要改變報告周期,可以發(fā)送包含AMP的消息給NMS,NMS收到AMP后并進行調(diào)整,該周期表示為MMP(Manager Monitoring Periods).NMS將MMP值通知給相關(guān)的代理,然后代理根據(jù)MMP發(fā)送信息.當(dāng)一個代理發(fā)送管理信息時,如果使用的周期不同于收到的MMP,將向NMS報告新的AMP,NMS繼續(xù)從代理處接收新的AMP,并為每一個代理重新計算合適的MMP.如果一個新計算的MMP和先前的MMP不同,此時NMS會將該MMP通知給相關(guān)代理.該方法也要對相應(yīng)的協(xié)議數(shù)據(jù)單元(PDU)做出修改.不管是SNMP的PDU還是NMS的PDU,前面部分都是固定的,只是后面的變量部分加入相應(yīng)的AMP和MMP即可.
在傳送過程中,如果新的AMP不需要發(fā)送,則相應(yīng)值域設(shè)置為0.
5.實驗分析
實驗環(huán)境為8臺PC機使用一臺交換機組成的小型局域網(wǎng).圖1顯示了使用一般輪詢和改進輪詢的方法時,網(wǎng)絡(luò)內(nèi)TCP報文接收率的比較.從圖中可以看出,改進的輪詢方法可使網(wǎng)絡(luò)內(nèi)的協(xié)議開銷減少24.7%.
在用Visual C++ 6.0結(jié)合SNMP++軟件開發(fā)包實現(xiàn)的實時監(jiān)控程序中,通過輸入該交換機設(shè)備的IP地址.SNMP通信字符串.設(shè)備類型和采樣時間間隔,就可以進行掃描探測.通過管理信息,可以獲得任意兩個相互通信的主機的帶寬情況,程序打開一個未使用端口,等待網(wǎng)絡(luò)監(jiān)控程序連接,得到相關(guān)數(shù)據(jù).比如一個代理和一個主機之間測試的帶寬情況以及帶寬歷史記錄等,以便對網(wǎng)絡(luò)實時狀態(tài)進行探測,實現(xiàn)網(wǎng)絡(luò)的實時監(jiān)控.
6.結(jié)束語
本文基于目前應(yīng)用較廣泛的網(wǎng)絡(luò)管理協(xié)議SNMP,對網(wǎng)絡(luò)實時監(jiān)控的實現(xiàn)方法進行了研究,并設(shè)計了具有較小協(xié)議開銷的輪詢方法.
程序采用HP公司提供的SNMP++類庫和編程工具Visual C++ 6.0進行實現(xiàn),并在簡單局域網(wǎng)環(huán)境下進行了實驗,證明該方法能夠在較低的網(wǎng)絡(luò)開銷下,實現(xiàn)對網(wǎng)絡(luò)性能的實時監(jiān)控.
-
監(jiān)控
+關(guān)注
關(guān)注
6文章
2319瀏覽量
57547 -
協(xié)議
+關(guān)注
關(guān)注
2文章
614瀏覽量
40078 -
C++
+關(guān)注
關(guān)注
22文章
2119瀏覽量
75328
發(fā)布評論請先 登錄
基于SNMP的網(wǎng)絡(luò)拓撲結(jié)構(gòu)自動發(fā)現(xiàn)研究
測量網(wǎng)絡(luò)參數(shù)的微波網(wǎng)絡(luò)分析儀
如何實現(xiàn)校園分布式網(wǎng)絡(luò)測量系統(tǒng)的應(yīng)用設(shè)計?
OBS網(wǎng)絡(luò)中基于SNMP的嵌入式代理的實現(xiàn)
基于Web 的SNMP 網(wǎng)絡(luò)管理
WSDM-SNMP 映射技術(shù)研究與實現(xiàn)
基于SNMP協(xié)議的網(wǎng)絡(luò)管理系統(tǒng)設(shè)計
一種基于SNMP的WEB網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計與實現(xiàn)
網(wǎng)絡(luò)測量系統(tǒng)

什么是簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)
基于SNMP的網(wǎng)絡(luò)監(jiān)控系統(tǒng)開發(fā)平臺與架構(gòu)的設(shè)計與實現(xiàn)

snmp及編程實現(xiàn)

簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)的研究與應(yīng)用

評論