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