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