隨著計算機網絡技術的飛速發展,通信網絡結構越來越復雜,通信網絡使用的設備也越來越復雜,由于網絡的大型化和復雜化,如何有效地進行網絡管理日益成為們普遍關注的問題。網絡管理的目標是最大限度地增加網絡的可用時間,提高網絡設備的利用率、網絡性能、服務質量和安全性,簡化多廠商混合網絡環境下的管理和控制網絡運行成本,提供網絡的長期規劃。
SNMP(Simple Network Management Protocol,簡單網絡管理協議)易于實現和廣泛的TCP/IP應用基礎,可以在多廠商混合網絡環境下,通過提供單一的網絡操作控制環境來管理所有子網和被管理設備,以集中的、統一的方式遠程控制網絡,以排除故障和重新配置網絡設備而獲得廠商的支持。
然而,實現SNMP編程常見方法是使用網絡管理應用SNMP的API,大多數API都提供了一個很大的函數庫,比如WinsNMP.由于。NET有豐富的、可復用的標準類庫,采用。NET開發越來越受到開發人員的青睞。為了簡化SNMP網絡管理系統的開發復雜度、開發出高效易擴展的代碼,采用把復雜的WinSNMP的API函數封裝成一個個相關的。NET類,從而簡化了SNMP網絡管理軟件開發的復雜性。用于它把SNMP編程中的核心部分都面向對象化封裝起來,因此開發人員不必了解SNMP底層機制,只要了解。NET的編程知識和SNMP編程的流程,就可以快速開發出高效的SNMP程序。
1 SNMP概述
SNMP(Simple Network Management Protocol,簡單網絡管理協議)首先是有IETF的研究小組為了解決Internet上的路由器的管理問題而提出的。1989年SNMPv1發行時,雖然能顯示出管理大部分Internet設備的強大能力,但是也暴露出明顯不足:給網絡帶來沉重負擔、網絡中數據的安全性差。1993年IETF發布了新的SNMP v2,然后再增加了安全機制的同時,也增加了實施的復雜性。隨著網絡安全重要性的發展,SNMPv3誕生了,其體系結構不僅體現了模塊化的設計思想,還能簡單地實現功麓模塊的增加和修改。從總體上說,SNMP的設計原則是簡單性和可擴展性。簡單性是通過信息類型限制、請求響應或協議而實現的;可擴展性是通過將管理信息模型與協議、被管理對象的詳細規定(MIB)分離而實現的。
1.1 SNMP通信模型
SNMP通信管理模型采用的是管理站/管理代理模型,共有4個組成部分:管理站、管理代理、管理信息庫和網絡管理協議,如圖1所示。
圖1 SNMP網絡管理模型
它們之間的關系是:管理站通過與管理代理發送/接受/響應SNMP請求來完成對管理代理的監控管理工作、所有管理設備的信息都被儲存在管理代理實體的管理信息庫中、管理站和管理代理之間交互的數據格式和規則都由SNMP來規范。每個部分的具體介紹如下:
1)管理站 一個單獨的設備或者是共享網絡中的一員,為管理站和網絡管理系統提供接口。
2)管理代理 一般的網絡終端如路由器、交換機等在設備出廠時都已經配置好相關的SNMP管理代理,對于不支持SNMP協議的設備,如果網絡終端是主機的話,可以在"控制面板"的"添加/刪除程序"的"添加/刪除windows組件".安裝"簡單網絡管理協議".
3)管理信息庫(MIB) 存放了網絡設備上被管對象資源的所有信息,每個被管對象有一個惟一對象的對象標識符(OID)。管理信息庫本身就是一個定義如何把對象標識符組合成邏輯相關的集合。
4)網絡管理協議(SNMP) 主要有以下3個功能:取值(Get)使網管站能讀取代理處對象的值;設置值(Set)使網管站能設置管理代理處對象的值;告警信息(Trap)使管理代理能夠向管理站通報重要事件。
1.2 SNMP協議數據單元
在SNMP中,信息按照SNMP報文格式在管理站和管理代理之間進行交換,一共有Get-Request操作、Get-Next-Request操作、Set-Request操作、Get-Response操作、Trap操作一共5種報文類型。如圖2所示。
圖2 SNMP報文的工作機制
前面3個操作是由管理站向管理代理發出的,后面2個操作是管理代理發給管理站的。這里值得注意的一點是,在管理代理一端使用熟知端口161來接受get或set報文,而在管理站一端是用熟知端口162來接受trap報文。
2 SNMP通信的關鍵
2.1 數據類型的規范定義
在基于SNMP通信的監控系統中,每個被管理設備都維護一個包含統計信息及其他數據的數據庫,被稱作管理信息庫(Management Infor-mation Base,MIB)。每個MIB的每項都包含一個信息:對象類型、語法、訪問及狀態等。MIB中的各項內容由管理信息結構(Structure of Management Information,SMI)來定義,SMI為MIB提供了一個通用框架,同時規定了在MIB中使用時的數據類型,即如何表示和命名MIB對象。一個對象類型的命名明確代表一個對象,成為對象標識符。它是一個由圓點分隔的整數序列,這些對象標識符按照類似DNS域名系統的樹狀結構來排列的,一個對象標識符(OID)唯一標識一個MIB對象。另外,MIB還要嚴格遵守ASN.1(Abstract Syntax Notation One,抽象語法標記)的語法格式,ASN.1提供了一套正規格式用來描述對象結構,而且不管對象數據的具體指代。
本文中最常用到的幾個數據的規范如表1所示。
表1 ASN.1規范下的數據定義
2.2 SNMP通信的關鍵函數
SNMP規定使用用戶數據報協議(UDP)作為第4層傳輸協議,在數據傳輸過程中,網絡一步步把UDP數據封裝成SNMP報文的形式來保障管理站和管理代理之間的數據順利交互,而UDP使用的是無連接服務,所以SNMP無需在管理站和管理代理之間保持連接,但可能發生數據報丟失的情況,因此一定要有超時和重傳機制。主要實現的幾個函數如下:
.NET使用以上幾個函數完成基本的SNMP通信,首先,用RequestAsync函數建立SNMP請求,然后用sendToBegin函數發送此SNMP請求,同時管理代理端有監聽函數,收到SNMP請求后會做出響應并給管理站返回需要的信息,此時,管理站用ReceiveBegin函數接受返回來的信息。在此通信過程中有可能發生數據丟失,RetryAsyncRequest和Request函數就是為此而設計的重傳請求函數和重傳協議函數。
3 .NET技術實現
把UDP的Socket通信封裝好之后,運用。NET技術進行具體的SNMP控制,下面以Get-Request操作和Set-Request操作為例子來演示。NET技術編程的快速、便捷。
在主程序中執行了這兩段代碼,都返回了開發者想要的結果。最重要的是,使用。NEET技術封裝了SNMP底層通信的編程,使整個程序看起來簡單易懂。
4 結束語
隨著網絡規模和復雜性的發展,一個功能健全的安全監控管理軟件自然成為網絡管理者的最大愿望NET的開發語言之一C#的主要特點就是簡單易用。由于C#把對編程中的很多部分都對象化,編程人員不需要了解函數的具體實現,在使用的時候,著重注意函數的參數類型和個數以及對象與函數之間的對應關系,就可以很方便地實現各種參數的傳輸、修改等等。如此一來,整個基于SNMP的網站監控管理系統的開發周期就大大縮短。
-
計算機
+關注
關注
19文章
7647瀏覽量
90491 -
交換機
+關注
關注
22文章
2731瀏覽量
101665 -
通信網絡
+關注
關注
22文章
2076瀏覽量
52884
發布評論請先 登錄
【無線電版】基于W5500的嵌入式SNMP代理端實現
net-snmp移植到arm過程
【終極福利】《利用LabVIEW輕松玩轉遠程視頻監控》05 LabVIEW與外部互聯之 .net實現
【終極福利】《利用LabVIEW輕松玩轉遠程視頻監控》05 LabVIEW與外部互聯之 .net實現(第2節)
AN_基于FreeRTOS+LwIP的SNMP實現方案
基于SNMP的網絡監控系統
基于ASP.NET和ADO.NET的太陽能電站遠程監控系統
基于NET的挖掘機實時監測系統設計與實現
基于.NET的SNMP通信實現

什么是SNMP?SNMP是如何工作的?
SNMP協議在設備監控中的使用

評論