SNMP協議介紹及其相關知識

最近做網管系統的維護,涉及到SNMP的相關東東,發現大學學的東西很多已經印象模糊...下面的這些資料感覺蠻有用,做了個整理。

---------------------

·SNMP&MIB基本知識

---------------------

最近要做一些服務器和設備的監控, 自帶的cacti模板已不能滿足需求, 經過一天調試, 目前已實現了bind9 mysql bind等數據流量的分析(其實也就是用腳本取數據,最後用rrdtool畫圖出來), 但學習的過程中, 發現不大瞭解MIB概念, google了一下,下面的文章應該能解答一部分與我有同樣問題的朋友們(我簡單進行了排版整理)

SNMP協議詳解  

   簡單網絡管理協議(SNMP:Simple Network Management Protocol)是由互聯網工程任務組(IETF:Internet Engineering Task Force )定義的一套網絡管理協議。該協議基於簡單網關監視協議(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一個管理工作站可以遠程管理所有支持這種協議的網絡設備,包括監視網絡狀態、修改網絡設備配置、接收網絡事件警告等。 雖然SNMP開始是面向基於IP的網絡管理,但作爲一個工業標準也被成功用於電話網絡管理。
1. SNMP基本原理
  SNMP採用了Client/Server模型的特殊形式:代理/管理站模型。對網絡的管理與維護是通過管理工作站與SNMP代理間的交互工作完成的。每個SNMP從代理負責回答SNMP管理工作站(主代理)關於MIB定義信息的各種查詢。下圖10是NMS公司網絡產品中SNMP協議的實現模型。
1.gif

  SNMP代理和管理站通過SNMP協議中的標準消息進行通信,每個消息都是一個單獨的數據報。SNMP使用UDP(用戶數據報協議)作爲第四層協議(傳輸協議),進行無連接操作。SNMP消息報文包含兩個部分:SNMP報頭和協議數據單元PDU。數據報結構如下圖
2.gif

版本識別符(version identifier):確保SNMP代理使用相同的協議,每個SNMP代理都直接拋棄與自己協議版本不同的數據報。

團體名(Community Name):用於SNMP從代理對SNMP管理站進行認證;如果網絡配置成要求驗證時,SNMP從代理將對團體名和管理站的IP地址進行認證,如果失敗,SNMP從代理將向管理站發送一個認證失敗的Trap消息

協議數據單元(PDU):其中PDU指明瞭SNMP的消息類型及其相關參數。

 

SNMP共有5種報文,如圖: 

PDU報文類型

PDU類型

名稱

0

get-request

1

get-next-request

2

get-response

3

set-request

4

trap

 

PDU報文格式(Trap報文比較特殊):

                      
【get/set首部】
■請求標識符(request ID)
這是由管理進程設置的一個整數值。代理進程在發送get-response報文時也要返回此請求標識符。管理進程可同時向許多代理髮出get報文,這些報文都使用UDP傳送,先發送的有可能後到達。設置了請求標識符可使管理進程能夠識別返回的響應報文對於哪一個請求報文。
■差錯狀態(error status 
由代理進程回答時填入0~5中的一個數字,見下表描述:
■ 差錯索引(error index)
當出現noSuchName、badValue或readOnly的差錯時,由代理進程在回答時設置的一個整數,它指明有差錯的變量在變量列表中的偏移。
【Trap首部】

 ■企業(enterprise)
填入trap報文的網絡設備的對象標識符。此對象標識符肯定是在對象命名樹上的enterprise結點{1.3.6.1.4.1}下面的trap類型樹上。
■trap類型
此字段正式的名稱是generic-trap,共分爲下表中的7種。

類型2、3、5時,在報文後面變量部分的第一個變量應標識響應的接口。


■特定代碼(specific-code)
指明代理自定義編號(若trap類型爲6),否則爲0。
■ 時間戳(timestamp)
指明自代理進程初始化到trap報告的事件發生所經歷的時間,單位爲ms。例如時間戳爲1908表明在代理初始化後1908ms發生了該事件。


【變量綁定(variable-bindings)】
指明一個或多個變量的名和對應的值。在get或get-next報文中,變量的值應忽略。

 

 

SNMP安全性

SNMPv1只能通過消息頭部的社區名進行簡單的認證,容易遭受安全性攻擊。安全性威脅包括 :僞裝、信息篡改、消息失序和定時的修改、泄露等。
  · 僞裝是未經授權的組織僞裝成獲得授權的管理組織,試圖進行管理操作的行爲;
  · 信息篡改是未經授權的組織試圖篡改一個由合法組織發出的消息,導致非法管理操作;
  · 當未經授權的組織把消息重排序、攔截或複製時將導致消息的失序和定時被修改;
  · 當未經授權的組織竊取了存在管理對象中的值,或從管理站和代理的信息交換中獲知了某事件的發生,稱爲信息泄露。
  由於SNMPv1安全性受限,許多廠商只好不支持或僅部分支持Set操作,從而降低了SNMP的功能,使其只能起到一個監視網絡的作用。
  SNMPv2在安全性上較SNMPv1有了很大的改善。它採用MD5報文摘要算法防止信息被篡改和改序;並對報文的指定部分採用對稱加密算法(DES標準加密算法)進行加密。

 

2. 管理信息庫MIB
    IETF規定的管理信息庫MIB(由中定義了可訪問的網絡設備及其屬性,由對象識別符(OID:Object Identifier)唯一指定。MIB是一個樹形結構,SNMP協議消息通過遍歷MIB樹形目錄中的節點來訪問網絡中的設備。  
    下圖給出了NMS系統中SNMP可訪問網絡設備的對象識別樹(OID:Object Identifier)結構。
3.gif

下圖給出了對一個DS1線路狀態進行查詢的OID設置例子。  

4.gif

3. SNMP的五種消息類型

SNMP中定義了五種消息類型:Get-Request、Get-Response、Get-Next-Request、Set-Request、Trap  
(1)Get-Request 、Get-Next-Request與Get-Response   
SNMP 管理站用Get-Request消息從擁有SNMP代理的網絡設備中檢索信息,而SNMP代理則用Get-Response消息響應。Get-Next- Request用於和Get-Request組合起來查詢特定的表對象中的列元素。如:首先通過下面的原語獲得所要查詢的設備的接口數:
{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)}
後再通過下面的原語,進行查詢(其中第一次用Get-Request,其後用Get-Next-Request):
{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)}

(2)Set-Request
SNMP管理站用Set-Request 可以對網絡設備進行遠程配置(包括設備名、設備屬性、刪除設備或使某一個設備屬性有效/無效等)。
(3)Trap
SNMP代理使用Trap向SNMP管理站發送非請求消息,一般用於描述某一事件的發生。

 

SNMP管理信息庫MIB 

管理信息庫MIB指明瞭網絡元素所維持的變量(即能夠被管理進程查詢和設置的信息)。MIB給出了一個網絡中所有可能的被管理對象的集合的數據結構。SNMP的管理信息庫採用和域名系統DNS相似的樹型結構,它的根在最上面,根沒有名字。下圖畫的是管理信息庫的一部分,它又稱爲對象命名(objectnamingtree)。  
mib.gif
 

管理信息庫的對象命名舉例

    對象命名樹的頂級對象有三個,即ISO、ITU-T和這兩個組織的聯合體。在ISO的下面有4個結點,其中的餓一個(標號3)是被標識的組織。在其下面有 一個美國國防部(Department of Defense)的子樹(標號是6),再下面就是Internet(標號是1)。在只討論Internet中的對象時,可只畫出Internet以下的子 樹(圖中帶陰影的虛線方框),並在Internet結點旁邊標註上{1.3.6.1}即可。  在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理信息庫,原先的結點名是mib。1991年定義了新的版本MIB- II,故結點名現改爲mib-2,其標識爲{1.3.6.1.2.1},或{Internet(1) .2.1}。這種標識爲對象標識符。
  最初的結點mib將其所管理的信息分爲8個類別,見表1。現在de mib-2所包含的信息類別已超過40個。

  表1 最初的結點mib管理的信息類別

 mib2.JPG

     應當指出,MIB的定義與具體的網絡管理協議無關,這對於廠商和用戶都有利。廠商可以在產品(如路由器)中包含SNMP代理軟件,並保證在定義新的MIB 項目後該軟件仍遵守標準。用戶可以使用同一網絡管理客戶軟件來管理具有不同版本的MIB的多個路由器。當然,一個沒有新的MIB項目的路由器不能提供這些項目的信息。
     這裏要提一下MIB中的對象{1.3.6.1.4.1},即enterprises(企業),其所屬結點數已超過3000。例如IBM爲 11.3.6.1.4.1.2},Cisco爲{1.3.6.1.4.1.9},Novell爲{1.3.6.1.4.1.23}等。世界上任何一個公 司、學校只要用電子郵件發往iana-mib@isi.edu進行申請即可獲得一個結點名。這樣各廠家就可以定義自己的產品的被管理對象名,使它能用SNMP進行管理。

 

 

 

 

 

SNMP常用術語

 

術語
術語描述
SNMP
Simple Network Management Protocol(簡單網絡管理協議)
是一個標準的用於管理基於IP網絡上設備的協議
MIB
Management Information Base(管理信息庫)
定義代理進程中所有可被查詢和修改的參數
SMI
Structure of Management Information(管理信息結構)
SMI定義了SNMP中使用到的ASN.1類型、語法,並定義了SNMP中使用到的類型、宏、符號等。SMI用於後續協議的描述和MIB的定義。每個版本的SNMP都可能定義自己的SMI
ASN.1
Abstract Syntax Notation One(抽象語法定義)
用於定義語法的正式語言,在SNMP中定義SNMP的協議數據單元PDU和管理對象MIB的格式。SNMP只使用了ASN.1中的一部分,而且使用ASN.1的語言特性定義了一些自定義類型和類型宏 ,這些組成了SMI
PDU
Protocol Data Unit(協議數據單元)
它是網絡中傳送的數據包。每一種SNMP操作,物理上都對應一個PDU
NMS
Network Management System網絡管理系統,又名網絡管理站,簡稱管理站
它是SNMP的總控機,提供統一的用戶界面訪問支持SNMP的設備,一般提供UI界面,並有統計、分析等功能,是網管系統的總控制檯。NMS是網絡管理操作的發起者
BER
Basic Encoding Rule,基本編碼規格
描述如何將ASN.1類型的值編碼爲字符串的方法。它是ASN.1標準的一部分。BER編碼將數據分成TLV三部分,TTag的縮寫,是類型標識;LLength的縮寫,標識類型的長度;VValue的縮寫,標識數據內容。按照TLV的順序對數據進行編碼,生成字節流。SNMP使用BERSNMP的操作請求和應答編碼後進行傳輸,並用於接收端進行解碼
Agent
SNMP的訪問代理,簡稱代理,爲設備提供SNMP能力,負責設備與NMS的通信
Proxy
代理服務器。對實現不同協議的設備進行協議轉換,使非IP協議的設備也能被管理
Trap
是由設備主動發出的報警數據,用於提示重要的狀態的改變
           
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章