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

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

snmp及編程實(shí)現(xiàn)

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

評(píng)論