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

基于.NET的SNMP通信實現(xiàn)

什么是SNMP?SNMP是如何工作的?
SNMP協(xié)議在設(shè)備監(jiān)控中的使用

評論