近來(lái),公司產(chǎn)品開(kāi)發(fā)涉及到SNMP方面的知識(shí), 在此作一些總結(jié),或許對(duì)您現(xiàn)在或者將來(lái)有用。
在目前越來(lái)越復(fù)雜的網(wǎng)絡(luò)環(huán)境中,整個(gè)環(huán)境有各種各樣的網(wǎng)絡(luò)設(shè)備,為了能更好的對(duì)這些設(shè)備進(jìn)行管理,及早的發(fā)現(xiàn)網(wǎng)絡(luò)中已經(jīng)存在或未來(lái)可能存在的問(wèn)題,SNMP提供了一種對(duì)這些網(wǎng)絡(luò)設(shè)備進(jìn)行有效管理的技術(shù)基礎(chǔ)。
一 SNMP簡(jiǎn)介
SNMP,Simple Network Management Protocol,即簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,,是有IETF(Internet Engineeriing Task Force,互聯(lián)網(wǎng)工程任務(wù)組)定義的一套基于SGMP(Simple Gateway Monitor Protocol,簡(jiǎn)單網(wǎng)關(guān)監(jiān)視協(xié)議)的網(wǎng)絡(luò)管理協(xié)議。以SNMP為技術(shù)的網(wǎng)絡(luò)管理系統(tǒng)(NMS)中,管理工作站利用SNMP進(jìn)行遠(yuǎn)程監(jiān)控管理網(wǎng)絡(luò)上的所有支持這種協(xié)議的設(shè)備(如計(jì)算機(jī)工作站、終端、路由器、Hub、網(wǎng)絡(luò)打印機(jī)等),主要負(fù)責(zé)監(jiān)視設(shè)備狀態(tài)、修改設(shè)備配置、接受事件警告等。
三 SNMP環(huán)境安裝配置
SNMP服務(wù)安裝:
1) 打開(kāi)"控制面板";
2) 進(jìn)入"添加與刪除程序";
3) 點(diǎn)擊"添加與刪除Windows組件";
4) 選擇"管理和監(jiān)控工具箱";
5) 點(diǎn)擊"詳細(xì)";
6) 選擇"簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)",并點(diǎn)擊擊確定;
7) 點(diǎn)擊下一步繼續(xù)直到完成。
SNMP服務(wù)配置:
1) 打開(kāi)"管理工具";
2) 進(jìn)入"服務(wù)";
3) 選擇SNMP Service ;
4) 編輯屬性,選擇代理標(biāo)簽;
5) 確認(rèn)Contact和location均被選中;
6) 選擇陷井標(biāo)簽;
7) 輸入Community Name,默認(rèn)為public,加入到列表;
8) 在陷井目的地,單擊Add,并填入Agent端的IP地址,單擊確定;
9) 選擇安全標(biāo)簽
10) 單擊public編輯,將Community Rightes改為Read Create,單擊確定;
11) 設(shè)置SNMP Trap Service的啟動(dòng)方式為"自動(dòng)"
12) 重新啟動(dòng)SNMP Service和SNMP Trap Service。
三 SNMP消息
在OSI模型中,傳輸層的數(shù)據(jù)單元也稱為數(shù)據(jù)包(packets)。SNMP采用的是UDP(用戶數(shù)據(jù)報(bào)協(xié)議)作為其傳輸層協(xié)議,并為SNMP提供網(wǎng)絡(luò)服務(wù),UDP協(xié)議的數(shù)據(jù)單元稱為數(shù)據(jù)報(bào)(datagrams)。因?yàn)閁DP是一種不可靠的數(shù)據(jù)報(bào)服務(wù),所以并不能保證UDP數(shù)據(jù)報(bào)一定能達(dá)到目的,但是掉包問(wèn)題并不對(duì)網(wǎng)絡(luò)管理產(chǎn)生大的影響。SNMP消息包含兩個(gè)部分:SNMP報(bào)頭和協(xié)議數(shù)據(jù)單元PDU(Protocol Data Unit),其中SNMP報(bào)頭包括SNMP版本號(hào)和團(tuán)體名。SNMP版本號(hào)目前有三種:Version1、Version2、Version3。團(tuán)體標(biāo)識(shí)可以作為SNMP消息的口令,缺省值為"public"。如圖1。
圖1:SNMP消息格式
SNMP消息有五種類型:
1) Get_Request:Manager端向Agent端發(fā)送讀取信息的請(qǐng)求;
2) Get_Next_Request:Manager端向Agent端發(fā)送讀取信息的請(qǐng)求;
3) Get_Response:Agent端對(duì)Manager端請(qǐng)求的響應(yīng);
4) Set_Request:Manager端向Agent端發(fā)送設(shè)備設(shè)置信息,Agent端可根據(jù)設(shè)置信息來(lái)改變?cè)O(shè)備狀態(tài);
5) Trap:當(dāng)Agent端發(fā)生某些事件時(shí),Agent端主動(dòng)向Manager端發(fā)送陷阱信息,如關(guān)機(jī)事件。
SNMP消息采用ASN.1定義為:
SNMP-Message∶∶=
SEQUENCE {
version INTERER{
version 1
},
community
public,
pud
data
}
PDU則定義為:
PDU∶∶=
CHOICE{
get_request
Getrequest_PDU
get_next_request
GetNextRequest_PDU
get_response
Getresponse_PDU
set_request
Setrequest_PDU
trap
Trap_PDU
}
例如Getrequest_PDU定義為:
GetRequest_PDU∶∶=[0]
IMPLICIT SEQUENCE{
Request_ID
requestid,
Error_Status,
errorstatus,
Error_Index,
errorindex,
Varialle_Bindings
varbildlist
}
PDU有五種類型:Getrequest_PDU、GetNextRequest_PDU、Getresponse_PDU、Setrequest_PDU和Trap_PDU,分別對(duì)應(yīng)SNMP消息的五種類型。PDU提供兩種格式:
第一種格式PDU用于描述Getrequest_PDU、GetNextRequest_PDU、Getresponse_PDU、Setrequest_PDU等四種消息類型,這種格式的PUD分為五個(gè)部分:
1) PDU類型值:用于表示PDU類型,0表示Get_Request,1表示Get_Next_Request,2表示Get_Response,3表示Set_Request;
2) 請(qǐng)求ID:由四個(gè)字節(jié)整數(shù)組成,用于請(qǐng)求的唯一編號(hào),以便使響應(yīng)消息和請(qǐng)求消息匹配;
3) 錯(cuò)誤狀態(tài):用于表示發(fā)生錯(cuò)誤,0表示NoError,1表示oobig,2表示NoSuchName,3表示BadValue,4表示ReadOnly,5表示Generr;
4) 錯(cuò)誤索引:由一個(gè)字節(jié)整數(shù)組成,用于指出變量表中哪一個(gè)變量引起了錯(cuò)誤;
5) 變量表:一系列變量名和相應(yīng)值組成的序偶的序列。
注意,當(dāng)PDU類型為Getrequest_PDU、etNextRequest_PDU、Getresponse_PDU時(shí),錯(cuò)誤狀態(tài)和錯(cuò)誤索引均為0,變量表中的值部分為null。
第二類格式PDU用于Trap_PDU消息類型,這種格式分為七部分:
PDU類型值:用于表示PDU類型,4表示Trap_PDU;
陷阱對(duì)象的類型:產(chǎn)生陷阱的被管理對(duì)象的類型
陷阱對(duì)象的地址:提供產(chǎn)生陷阱的被管理對(duì)象的地址
陷阱類型:
陷阱性質(zhì):
變量表:同上。
一個(gè)SNMP管理的網(wǎng)絡(luò)包含三個(gè)主要部分:被管理設(shè)備、代理和網(wǎng)絡(luò)管理系統(tǒng)(NMS)。被管理設(shè)備就是處于被管理的網(wǎng)絡(luò)中的多個(gè)設(shè)備,負(fù)責(zé)收集和存儲(chǔ)管理信息;代理是安裝在被管理設(shè)備中的軟件程序;網(wǎng)絡(luò)管理系統(tǒng)就是用于監(jiān)控被管理設(shè)備執(zhí)行狀態(tài)的軟件系統(tǒng)。SNMP進(jìn)行網(wǎng)絡(luò)管理時(shí),一般采用Client/Server結(jié)構(gòu)或Manager/Agent結(jié)構(gòu)集中式管理信息的方式,管理工作站為Server端或Manager端,網(wǎng)絡(luò)中的各個(gè)設(shè)備為Cient端或Agent端,如下圖1。
圖2:SNMP網(wǎng)絡(luò)管理結(jié)構(gòu)
從圖2中,我們可以看出Manager端通過(guò)162端口進(jìn)行通訊,而Agent端通過(guò)161端口進(jìn)行通訊。具體的通訊過(guò)程是:Manager端向Agent端發(fā)送請(qǐng)求(Getrequest消息、GetNextRequest消息和Setrequest消息,這些消息符合SNMP格式要求),Agent端接受到請(qǐng)求之后對(duì)Manager端的IP地址進(jìn)行認(rèn)證;如果認(rèn)證失敗,Agent端向Manager端的發(fā)送Trap異常信息;如果認(rèn)證通過(guò),Agent端向Manager端的發(fā)送Response信息。
五 MIB 管理信息庫(kù)
在復(fù)雜的網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)設(shè)備的類型各式各樣,所以設(shè)備的信息也因設(shè)備類型不同而不同,為了將這些信息能通過(guò)網(wǎng)絡(luò)管理系統(tǒng)進(jìn)行管理,必須采用一套標(biāo)準(zhǔn)來(lái)描述這些設(shè)備的信息,所以SNMP定義了MIB(Management Information Base)。MIB分為標(biāo)準(zhǔn)MIB和私有MIB,標(biāo)準(zhǔn)MIB適用于所有網(wǎng)絡(luò)設(shè)備,而私有的MIB則由設(shè)備廠家向有關(guān)機(jī)構(gòu)申請(qǐng)后自行定義。MIB采用樹(shù)狀結(jié)構(gòu),每個(gè)節(jié)點(diǎn)每個(gè)結(jié)點(diǎn)分配了一個(gè)字符串和一個(gè)小整數(shù)作為標(biāo)號(hào),即OID(Object Identifier)。如圖3。
圖3:MIB結(jié)構(gòu)圖
MIB結(jié)構(gòu)樹(shù)中任一對(duì)象的名字就是從根到對(duì)象結(jié)點(diǎn)的路徑上各個(gè)節(jié)點(diǎn)的標(biāo)號(hào)序列,標(biāo)號(hào)之間用點(diǎn)分隔。如被管理設(shè)備中每個(gè)網(wǎng)絡(luò)接口的IP地址信息表示為:iso.org.dod.internet.mgmt.mid.ip,它的數(shù)字表示為:1.3.6.1.2.1.4。
標(biāo)準(zhǔn)MIB的基本OID以為1.3.6.1.2.1前綴,而私有的MIB的基本OID以為1.3.6.1.4.1前綴。如果在某一節(jié)點(diǎn)下有多個(gè)信息,則以列表方式存在,比如IP地址信息中包括子網(wǎng)掩碼、網(wǎng)關(guān)地址等。












