SNMP简单网络管理协议及开发测试工具
簡介
SNMP 是專門設(shè)計(jì)用于在 IP 網(wǎng)絡(luò)管理網(wǎng)絡(luò)節(jié)點(diǎn)(服務(wù)器、工作站、路由器、交換機(jī)及HUBS等)的一種標(biāo)準(zhǔn)協(xié)議,它是一種應(yīng)用層協(xié)議。 SNMP 使網(wǎng)絡(luò)管理員能夠管理網(wǎng)絡(luò)效能,發(fā)現(xiàn)并解決網(wǎng)絡(luò)問題以及規(guī)劃網(wǎng)絡(luò)增長。通過 SNMP 接收隨機(jī)消息(及事件報(bào)告)獲知網(wǎng)絡(luò)出現(xiàn)問題。
SNMP的前身是簡單網(wǎng)關(guān)監(jiān)控協(xié)議(SGMP),用來對(duì)通信線路進(jìn)行管理。隨后,人們對(duì)SGMP進(jìn)行了很大的修改,特別是加入了符合Internet定義的SMI和MIB,改進(jìn)后的協(xié)議就是著名的SNMP。基于TCP/IP的SNMP網(wǎng)絡(luò)管理框架是工業(yè)上的現(xiàn)行標(biāo)準(zhǔn),由3個(gè)主要部分組成,分別是管理信息結(jié)構(gòu)SMI(Structure ofManagement Information)、管理信息庫MIB和管理協(xié)議SNMP。
-
SMI定義了SNMP框架所用信息的組織和標(biāo)識(shí),為MIB定義管理對(duì)象及使用管理對(duì)象提供模板。
-
MIB定義了可以通過SNMP進(jìn)行訪問的管理對(duì)象的集合。
-
SNMP協(xié)議是應(yīng)用層協(xié)議,定義了網(wǎng)絡(luò)管理者如何對(duì)代理進(jìn)程的MIB對(duì)象進(jìn)行讀寫操作。
SNMP中的MIB是一種樹狀數(shù)據(jù)庫,MIB管理的對(duì)象,就是樹的端節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有唯一位置和唯一名字。IETF規(guī)定管理信息庫對(duì)象識(shí)別符(OID,Object Identifier)唯一指定,其命名規(guī)則就是父節(jié)點(diǎn)的名字作為子節(jié)點(diǎn)名字的前綴。MIB樹結(jié)構(gòu)如下圖所示:
下表列出了常用的一些例子,這些類別是MIB 結(jié)構(gòu)樹中mib結(jié)點(diǎn)的子樹。
| MIB類別 | 包含的相關(guān)信息 |
| system | 被管理對(duì)象(如主機(jī)、路由器等設(shè)備)系統(tǒng)的總體信息 |
| interface | 各個(gè)網(wǎng)絡(luò)接口的相關(guān)信息 |
| at | 地址轉(zhuǎn)換(如:ARP映射)的相關(guān)信息 |
| ip | IP協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| icmp | ICMP協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| tcp | TCP協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| udp | UDP協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| ospf | OSPF(開發(fā)最短路徑優(yōu)先)協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| bgp | BGP(邊界網(wǎng)關(guān))協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| rmon | 遠(yuǎn)程網(wǎng)絡(luò)堅(jiān)實(shí)和實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| Rip-2 | RIP協(xié)議的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
| dns | 域名系統(tǒng)的實(shí)現(xiàn)和運(yùn)行相關(guān)信息 |
組成部分
一個(gè)SNMP管理的網(wǎng)絡(luò)由下列三個(gè)關(guān)鍵組件組成:
-
網(wǎng)絡(luò)管理系統(tǒng)(NMS,Network-management systems)
-
被管理的設(shè)備(managed device)
-
代理者(agent)
網(wǎng)絡(luò)管理系統(tǒng)運(yùn)行應(yīng)用程序,以該應(yīng)用程序監(jiān)視并控制被管理的設(shè)備。也稱為管理實(shí)體(managingentity),網(wǎng)絡(luò)管理員在這兒與網(wǎng)絡(luò)設(shè)備進(jìn)行交互。網(wǎng)絡(luò)管理系統(tǒng)提供網(wǎng)絡(luò)管理需要的大量運(yùn)算和記憶資源。一個(gè)被管理的網(wǎng)絡(luò)可能存在一個(gè)以上的網(wǎng)絡(luò)管理系統(tǒng)。
被管理的設(shè)備是一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),它包含一個(gè)存在于被管理的網(wǎng)絡(luò)中的SNMP代理者。被管理的設(shè)備通過管理信息庫(MIB)收集并存儲(chǔ)管理信息,并且讓網(wǎng)絡(luò)管理系統(tǒng)能夠通過SNMP代理者取得這項(xiàng)信息。任何一個(gè)被管理的資源都表示成一個(gè)對(duì)象,稱為被管理的對(duì)象。MIB是被管理對(duì)象的集合。它定義了被管理對(duì)象的一系列屬性:對(duì)象的名稱、對(duì)象的訪問權(quán)限和對(duì)象的數(shù)據(jù)類型等。每個(gè)SNMP設(shè)備(Agent)都有自己的MIB。MIB也可以看作是NMS(網(wǎng)絡(luò)管理系統(tǒng),網(wǎng)絡(luò)管理系統(tǒng)既可以指一臺(tái)專門用來進(jìn)行網(wǎng)絡(luò)管理的服務(wù)器,也可以指某個(gè)網(wǎng)絡(luò)設(shè)備中執(zhí)行管理功能的一個(gè)應(yīng)用程序)和Agent之間的溝通橋梁。它們之間的關(guān)系如下圖所示:
代理者是一種存在于被管理的設(shè)備中的網(wǎng)絡(luò)管理軟件模塊。代理者控制本地機(jī)器的管理信息,以和SNMP兼容的格式傳送這項(xiàng)信息。
技術(shù)優(yōu)點(diǎn)
SNMP是管理進(jìn)程(NMS)和代理進(jìn)程(Agent)之間的通信協(xié)議。它規(guī)定了在網(wǎng)絡(luò)環(huán)境中對(duì)設(shè)備進(jìn)行監(jiān)視和管理的標(biāo)準(zhǔn)化管理框架、通信的公共語言、相應(yīng)的安全和訪問控制機(jī)制。網(wǎng)絡(luò)管理員使用SNMP功能可以查詢?cè)O(shè)備信息、修改設(shè)備的參數(shù)值、監(jiān)控設(shè)備狀態(tài)、自動(dòng)發(fā)現(xiàn)網(wǎng)絡(luò)故障、生成報(bào)告等。
SNMP具有以下技術(shù)優(yōu)點(diǎn):
-
基于TCP/IP互聯(lián)網(wǎng)的標(biāo)準(zhǔn)協(xié)議,傳輸層協(xié)議一般采用UDP。
-
自動(dòng)化網(wǎng)絡(luò)管理。網(wǎng)絡(luò)管理員可以利用SNMP平臺(tái)在網(wǎng)絡(luò)上的節(jié)點(diǎn)檢索信息、修改信息、發(fā)現(xiàn)故障、完成故障診斷、進(jìn)行容量規(guī)劃和生成報(bào)告。
-
屏蔽不同設(shè)備的物理差異,實(shí)現(xiàn)對(duì)不同廠商產(chǎn)品的自動(dòng)化管理。SNMP只提供最基本的功能集,使得管理任務(wù)與被管設(shè)備的物理特性和實(shí)際網(wǎng)絡(luò)類型相對(duì)獨(dú)立,從而實(shí)現(xiàn)對(duì)不同廠商設(shè)備的管理。
-
簡單的請(qǐng)求—應(yīng)答方式和主動(dòng)通告方式相結(jié)合,并有超時(shí)和重傳機(jī)制。
-
報(bào)文種類少,報(bào)文格式簡單,方便解析,易于實(shí)現(xiàn)。
-
SNMPv3版本提供了認(rèn)證和加密安全機(jī)制,以及基于用戶和視圖的訪問控制功能,增強(qiáng)了安全性。
架構(gòu)方式
主代理
主代理是一個(gè)在可運(yùn)行SNMP的網(wǎng)絡(luò)組件上運(yùn)作的軟件,可回應(yīng)從管理站發(fā)出的SNMP要求。它的角色類似客戶端/服務(wù)器結(jié)構(gòu)(Client/Server)術(shù)語中的服務(wù)器。主代理依賴子代理提供有關(guān)特定功能的管理信息。
如果系統(tǒng)當(dāng)前擁有多個(gè)可管理的子系統(tǒng),主代理就會(huì)傳遞它從一個(gè)或多個(gè)子代理處收到的請(qǐng)求。這些子代理在一個(gè)子系統(tǒng)以及對(duì)那個(gè)子系統(tǒng)進(jìn)行監(jiān)測(cè)和管理操作的接口內(nèi)為關(guān)心的對(duì)象建模。主代理和子代理的角色可以合并,在這種情況下我們可以簡單的稱之為代理(agent)。
子代理
子代理是一個(gè)在可運(yùn)行SNMP的網(wǎng)絡(luò)組件上運(yùn)作的軟件,運(yùn)行在特定子系統(tǒng)的特定管理信息庫(MIB,Management Information Base)中定義的信息和管理功能。子代理的一些能力有:
搜集主代理的信息
配置主代理的參數(shù)
回應(yīng)管理者的要求
產(chǎn)生警告或陷阱
對(duì)協(xié)議和管理信息結(jié)構(gòu)的良好分離使得使用SNMP來監(jiān)測(cè)和管理同一網(wǎng)絡(luò)內(nèi)上百的不同子系統(tǒng)非常簡單。MIB模型運(yùn)行管理OSI參考模型的所有層,并可以擴(kuò)展至諸如數(shù)據(jù)庫,電子郵件以及J2EE參考模型之類的應(yīng)用。
管理站
管理者或者管理站提供第三個(gè)組件。它和一個(gè)客戶端/服務(wù)器結(jié)構(gòu)下的客戶端一樣工作。它根據(jù)一個(gè)管理員或應(yīng)用程序的行為發(fā)出管理操作的請(qǐng)求,也接收從代理處獲得的TRAP。
協(xié)議種類
目前, SNMP 有 3 種: SNMPV1 、 SNMPV2 、 SNMPV3。第 1 版和第 2 版沒有太大差距,但 SNMPV2 是增強(qiáng)版本,包含了其它協(xié)議操作。與前兩種相比, SNMPV3 則包含更多安全和遠(yuǎn)程配置。為了解決不同 SNMP 版本間的不兼容問題, RFC3584 中定義了三者共存策略。
SNMP 還包括一組由RMON、RMON2、MTB、MTB2、OCDS及OCDS定義的擴(kuò)展協(xié)議。
協(xié)議結(jié)構(gòu)
SNMP 是一種應(yīng)用程序協(xié)議,封裝在UDP中。各種版本的 SNMP 信息通用格式如下所示:
Version Community PDU
Version:SNMP 版本號(hào)。管理器和代理器必須使用相同版本的 SNMP。需要?jiǎng)h除具有不同版本號(hào)的信息,并不對(duì)它們作進(jìn)一步的處理。
Community:團(tuán)體名稱,用于在訪問代理器之前認(rèn)證管理器。
PDU(協(xié)議數(shù)據(jù)單元):SNMPv1、v2 和 v3 中的 PDU 類型和格式將在對(duì)應(yīng)文件中作具體介紹。
在分層網(wǎng)絡(luò)結(jié)構(gòu),例如在開放式系統(tǒng)互聯(lián)(OSI)模型中,在傳輸系統(tǒng)的每一層都將建立協(xié)議數(shù)據(jù)單元(PDU)。PDU包含來自上層的信息和當(dāng)前層的實(shí)體附加的信息,這個(gè)PDU會(huì)被傳送到下一較低的層。物理層實(shí)際以一種編幀的位流形式傳輸這些PDU,這些PDU由協(xié)議棧的較高層建造。接收系統(tǒng)自下而上傳送這些分組通過協(xié)議棧,并在協(xié)議棧的每一層分離出PDU中的相關(guān)信息。
每一層附加到PDU上的信息,是指定給另一個(gè)系統(tǒng)的同等層的,這就是對(duì)等層進(jìn)行一次通信會(huì)話協(xié)調(diào)的過程。通過從傳輸層段剝離報(bào)頭,執(zhí)行協(xié)議數(shù)據(jù)檢測(cè)以確定作為傳輸層段的部分?jǐn)?shù)據(jù)的協(xié)議段的數(shù)據(jù),以及執(zhí)行標(biāo)志驗(yàn)證和剝離,從而處理數(shù)據(jù)段。同時(shí)提供用于處理數(shù)據(jù)段的技術(shù),其中接收到協(xié)議數(shù)據(jù)單元的報(bào)頭部分。利用所接收的報(bào)頭部分來確定將儲(chǔ)存在應(yīng)用空間中的數(shù)據(jù)的字節(jié)數(shù)。而且,利用所接收的報(bào)頭部分來確定下一個(gè)協(xié)議數(shù)據(jù)單元的下一個(gè)報(bào)頭部分。然后,發(fā)出窺視命令以獲得下一個(gè)報(bào)頭部分。另外提供用于利用所儲(chǔ)存的部分循環(huán)冗余校驗(yàn)摘要和剩余數(shù)據(jù)來執(zhí)行循環(huán)冗余校驗(yàn)的技術(shù)。
SNMP規(guī)定了5種協(xié)議數(shù)據(jù)單元PDU(也就是SNMP報(bào)文),用來在管理進(jìn)程和代理之間的交換。
-
get-request操作:從代理進(jìn)程處提取一個(gè)或多個(gè)參數(shù)值
-
get-next-request操作:從代理進(jìn)程處提取緊跟當(dāng)前參數(shù)值的下一個(gè)參數(shù)值
-
set-request操作:設(shè)置代理進(jìn)程的一個(gè)或多個(gè)參數(shù)值
-
get-response操作:返回的一個(gè)或多個(gè)參數(shù)值。這個(gè)操作是由代理進(jìn)程發(fā)出的,它是前面三種操作的響應(yīng)操作。
-
trap操作:代理進(jìn)程主動(dòng)發(fā)出的報(bào)文,通知管理進(jìn)程有某些事情發(fā)生。
前面的3種操作是由管理進(jìn)程向代理進(jìn)程發(fā)出的,后面的2個(gè)操作是代理進(jìn)程發(fā)給管理進(jìn)程的,為了簡化起見,前面3個(gè)操作今后叫做get、get-next和set操作。
注意:在代理進(jìn)程端是用熟知端口161倆接收get或set報(bào)文,而在管理進(jìn)程端是用熟知端口162來接收trap報(bào)文。
開發(fā)和使用
第一版
SNMP的第一個(gè)RFC系列出現(xiàn)在1988年:
RFC 1065:基于TCP/IP網(wǎng)絡(luò)的管理信息的結(jié)構(gòu)和認(rèn)定
RFC 1066:以基于TCP/IP網(wǎng)絡(luò)的網(wǎng)絡(luò)管理為基礎(chǔ)的管理信息
RFC 1067:一個(gè)簡單網(wǎng)絡(luò)管理協(xié)議
這些協(xié)議被廢除經(jīng)由:
RFC 1155:基于TCP/IP網(wǎng)絡(luò)的管理信息的結(jié)構(gòu)和認(rèn)定
RFC 1156:以基于TCP/IP網(wǎng)絡(luò)的網(wǎng)絡(luò)管理為基礎(chǔ)的管理信息
RFC 1157:一個(gè)簡單網(wǎng)絡(luò)管理協(xié)議
SNMP協(xié)議工作在OSI模型的應(yīng)用層(第七層)。它(在第一版中)指定了四種核心協(xié)議數(shù)據(jù)單元(PDU):
GET,用來得到一條管理信息。GET命令從設(shè)備讀取數(shù)據(jù),這些數(shù)據(jù)通常是操作參數(shù),例如連接狀態(tài)、接口名稱等。
GETNEXT,用來反復(fù)得到管理信息的串行
SET,用來給一個(gè)被管理的子系統(tǒng)制造一個(gè)變化。SET命令允許設(shè)置設(shè)備的某些參數(shù),這類功能一般有限制,例如關(guān)閉某個(gè)網(wǎng)絡(luò)接口、修改路由器參數(shù)等功能。
TRAP,用來報(bào)告一個(gè)關(guān)于被管理子系統(tǒng)的警告或其他異步事件
典型的,SNMP為代理使用UDP端口161,為管理站使用UDP端口162。
第一版因?yàn)槠浯嗳醯陌踩远鴤涫軤幾h??蛻舳说恼J(rèn)證使用明碼傳送。在80年代,SNMP第一版被設(shè)計(jì)出來的時(shí)期,互聯(lián)網(wǎng)標(biāo)準(zhǔn)的認(rèn)證/安全并不被主要的協(xié)議設(shè)計(jì)團(tuán)體所重視。
第二版
SNMP第二版(RFC 1441–RFC 1452)修訂了第一版并且包含了在性能、安全、機(jī)密性和管理者之間通信這些領(lǐng)域的改進(jìn)。它引入了GETBULK以取代反復(fù)的GETNEXT,藉以在單個(gè)請(qǐng)求中獲取大量的管理數(shù)據(jù)。然而,SNMP第二版的新安全系統(tǒng)被認(rèn)為過于復(fù)雜,而不被廣泛接受。
SNMP v2c(基于社區(qū)的SNMP第二版)定義于RFC 1901–RFC 1908,一開始也非正式的被稱為SNMP第1.5版。SNMPv2c包含SNMP第二版除了受爭議的新SNMP第二版安全模型以外的部份,并以SNMP第一版的簡單的基于社區(qū)的安全性方案取而代之。
SNMP v2u(基于用戶的SNMP第二版)定義于RFC 1909–RFC 1910。這是一個(gè)SNMP第一版和SNMP第二版的折衷方案,試圖提供比SNMP第一版更好的安全性,又不遭遇SNMP第二版的高復(fù)雜度。這產(chǎn)生一個(gè)被商業(yè)化的變種,稱為SNMP v2*,而且它的機(jī)制最后被SNMP第三版的兩個(gè)安全性框架之一采用。
第三版
Internet工程工作小組(IETF)把在RFC3411-RFC3418(STD0062)中定義的SNMP第三版作為2004年的標(biāo)準(zhǔn)版本。IETF將先前的版本定為“Obsolete”或“Historical”。
實(shí)際上,SNMP實(shí)現(xiàn)通常支持多個(gè)版本:典型的SNMPv1、SNMPv2c以及SNMPv3。參見RFC3584“Internet標(biāo)準(zhǔn)網(wǎng)絡(luò)管理框架第一、二、三版間的共存”。
SNMP第三版提供三項(xiàng)重要的服務(wù):認(rèn)證、隱私和訪問控制。
應(yīng)用
在大型網(wǎng)絡(luò)管理中,網(wǎng)絡(luò)管理員比較頭痛的問題就是如何實(shí)時(shí)了解不在身邊的網(wǎng)絡(luò)設(shè)備的運(yùn)行狀況。若要一臺(tái)一臺(tái)的去查看網(wǎng)絡(luò)設(shè)備的運(yùn)行現(xiàn)狀,那明顯不是很現(xiàn)實(shí)。實(shí)際網(wǎng)絡(luò)中,利用SNMP協(xié)議自動(dòng)幫助管理員收集網(wǎng)絡(luò)運(yùn)行狀況的方法應(yīng)用最為廣泛。通過這種方法,網(wǎng)絡(luò)管理員只需要坐在自己的位置上,就可以了解全公司的網(wǎng)絡(luò)設(shè)備的運(yùn)行情況。有了這個(gè)簡單網(wǎng)絡(luò)管理協(xié)議(SNMP),網(wǎng)絡(luò)管理員可以很方便的在SNMP Agent和NMS之間交換管理信息。SNMP的主要作用就是幫助企業(yè)網(wǎng)絡(luò)管理人員更方便的了解網(wǎng)絡(luò)性能、發(fā)現(xiàn)并解決網(wǎng)絡(luò)問題、規(guī)劃網(wǎng)絡(luò)的未來發(fā)展。?
SNMP開發(fā)工具包
snmp4j是一個(gè)開源的基于java語言開發(fā)的snmp工具包,基于jdk1.8。
一般便宜的設(shè)備都不支持SNMP協(xié)議,因?yàn)檫@種低端的接入設(shè)備根本沒有網(wǎng)絡(luò)管理的必要,并且家用設(shè)備 一般都在3臺(tái)以內(nèi),所以Snmp協(xié)議也用不到的。
SNMP walk與get的區(qū)別
snmpwalk是對(duì)OID值的遍歷(比如某個(gè)OID值下面有N個(gè)節(jié)點(diǎn),則依次遍歷出這N個(gè)節(jié)點(diǎn)的值。如果對(duì)某個(gè)葉子節(jié)點(diǎn)的OID值做walk,則取得到數(shù)據(jù)就不正確了,因?yàn)樗鼤?huì)認(rèn)為該節(jié)點(diǎn)是某些節(jié)點(diǎn)的父節(jié)點(diǎn),而對(duì)其進(jìn)行遍歷,而實(shí)際上該節(jié)點(diǎn)已經(jīng)沒有子節(jié)點(diǎn)了,那么它會(huì)取出與該葉子節(jié)點(diǎn)平級(jí)的下一個(gè)葉子節(jié)點(diǎn)的值,而不是當(dāng)前請(qǐng)求的節(jié)子節(jié)點(diǎn)的值。)SNMPWALK是一個(gè)通過SNMP GET-NEXT類型PDU,實(shí)現(xiàn)對(duì)目標(biāo)AGENT的某指定MIB分支信息進(jìn)行完整提取輸出的命令工作。
snmpget是取具體的OID的值。(適用于OID值是一個(gè)葉子節(jié)點(diǎn)的情況)
總結(jié)
以上是生活随笔為你收集整理的SNMP简单网络管理协议及开发测试工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq拼音提权
- 下一篇: 计算机用户太多怎样删除,删除电脑中多余的