SNMP网络管理协议
網絡管理系統的組成
1. 被管理節點(設備)--被監視的設備
2. 網絡管理代理?? ???---是駐留在網絡設備中的軟件模塊,對來自管理站的信息查詢 和 動作執行 的請求作出響應, 主動向管理站提供一些重要的非請求信息
3. 網絡管理工作站??? ---信息的接收點,指令的發送點(與在不同的被管理節點中的代理進行通信,并顯示這些代理狀態的中心設備)
4.網絡管理協議?????? ----規范被管設備與網管工作站的信息傳遞(被網絡管理工作站和代理用來交換信息的協議)
5.管理信息數據庫??? ----收集有關被管網絡設備的信息(動態變化的)
網絡管理協議
重點是:SNMP? Simple Network Management Protocol
? ? ? ? ? ?RMON??Remote? Monitoring遠程管理協議
? ? ? ? ? ?SNMP依賴于UDP為其提供服務
SNMP的管理模型
應用模型
SNMP是基于TCP/IP協議族的網絡管理標準,是一種在IP網絡中管理網絡節點(如服務器、工作站、路由器、交換機等)的標準協議。SNMP能夠使網絡管理員提高網絡管理效能,及時發現并解決網絡問題以及規劃網絡的增長。網絡管理員還可以通過SNMP接收網絡節點的通知消息以及告警事件報告等來獲知網絡出現的問題。 SNMP管理的網絡主要由三部分組成:- 被管理的設備
- SNMP代理
- 網絡管理系統(NMS)
- 網絡中被管理的每一個設備都存在一個管理信息庫(MIB)用于收集并儲存管理信息。通過SNMP協議,NMS能獲取這些信息。被管理設備,又稱為網絡單元或網絡節點,可以是支持SNMP協議的路由器、交換機、服務器或者主機等等。
- SNMP代理是被管理設備上的一個網絡管理軟件模塊,擁有本地設備的相關管理信息,并用于將它們轉換成與SNMP兼容的格式,傳遞給NMS。
- NMS運行應用程序來實現監控被管理設備的功能。另外,NMS還為網絡管理提供大量的處理程序及必須的儲存資源。
管理信息數據庫
1. 對象類型(ObjectType)例如 IP 帶寬
2. 語法
3. 權限
4. 狀態
SNMP的管理信息庫采用與DNS一樣的樹狀分層結構
OID 對象的唯一標識。例如上圖中icmp的OID是 ?1.3.6.1.2.1.5
?SNMP的5種協議數據單元
SNMP規定了5種協議數據單元PDU(也就是SNMP報文),用來在管理進程和代理之間的交換。
get-request操作:從代理進程處提取一個或多個參數值。
get-next-request操作:從代理進程處提取緊跟當前參數值的下一個參數值。
set-request操作:設置代理進程的一個或多個參數值。
get-response操作:返回的一個或多個參數值。這個操作是由代理進程發出的,它是前面三種操作的響應操作。
trap操作:代理進程主動發出的報文,通知管理進程有某些事情發生。
前面的3種操作是由管理進程向代理進程發出的,后面的2個操作是代理進程發給管理進程的,為了簡化起見,前面3個操作今后叫做get、get-next和set操作。在SNMP中往往使用UDP協議,所以可能發生管理進程和代理進程之間數據報丟失的情況。因此一定要有超時和重傳機制
圖1描述了SNMP的這5種報文操作。請注意,在代理進程端是用熟知端口161倆接收get或set報文,而在管理進程端是用熟知端口162來接收trap報文。
圖1 SNMP的5種報文操作
圖2是封裝成UDP數據報的5種操作的SNMP報文格式。可見一個SNMP報文共有三個部分組成,即公共SNMP首部、get/set首部、trap首部、變量綁定。
(1)公共SNMP首部
共三個字段:
??版本?
寫入版本字段的是版本號減1,對于SNMP(即SNMPV1)則應寫入0。
? 共同體(community)
共同體就是一個字符串,作為管理進程和代理進程之間的明文口令,常用的是6個字符“public”。
? PDU類型
根據PDU的類型,填入0~4中的一個數字,其對應關系如表2所示意圖。
表2 PDU類型
| PDU類型 | 名稱 |
| 0 | get-request |
| 1 | get-next-request |
| 2 | get-response |
| 3 | set-request |
| 4 | trap |
(2)get/set首部
? 請求標識符(request ID)
這是由管理進程設置的一個整數值。代理進程在發送get-response報文時也要返回此請求標識符。管理進程可同時向許多代理發出get報文,這些報文都使用UDP傳送,先發送的有可能后到達。設置了請求標識符可使管理進程能夠識別返回的響應報文對于哪一個請求報文
? 差錯狀態(error status)
由代理進程回答時填入0~5中的一個數字,見表3的描述
表3 差錯狀態描述
| 差錯狀態 | 名字 | 說明 |
| 0 | noError | 一切正常 |
| 1 | tooBig | 代理無法將回答裝入到一個SNMP報文之中 |
| 2 | noSuchName | 操作指明了一個不存在的變量 |
| 3 | badValue | 一個set操作指明了一個無效值或無效語法 |
| 4 | readOnly | 管理進程試圖修改一個只讀變量 |
| 5 | genErr | 某些其他的差錯 |
? 差錯索引(error index)
當出現noSuchName、badValue或readOnly的差錯時,由代理進程在回答時設置的一個整數,它指明有差錯的變量在變量列表中的偏移。
(3)trap首部
? 企業(enterprise)
填入trap報文的網絡設備的對象標識符。此對象標識符肯定是在圖3的對象命名樹上的enterprise結點{1.3.6.1.4.1}下面的一棵子樹上。
? trap類型
此字段正式的名稱是generic-trap,共分為表4中的7種。
| trap類型 | 名字 | 說明 |
| 0 | coldStart | 代理進行了初始化 |
| 1 | warmStart | 代理進行了重新初始化 |
| 2 | linkDown | 一個接口從工作狀態變為故障狀態 |
| 3 | linkUp | 一個接口從故障狀態變為工作狀態 |
| 4 | authenticationFailure | 從SNMP管理進程接收到具有一個無效共同體的報文 |
| 5 | egpNeighborLoss | 一個EGP相鄰路由器變為故障狀態 |
| 6 | enterpriseSpecific | 代理自定義的事件,需要用后面的“特定代碼”來指明 |
當使用上述類型2、3、5時,在報文后面變量部分的第一個變量應標識響應的接口。
? 特定代碼(specific-code)
指明代理自定義的時間(若trap類型為6),否則為0。
? 時間戳(timestamp)
指明自代理進程初始化到trap報告的事件發生所經歷的時間,單位為10ms。例如時間戳為1908表明在代理初始化后1908ms發生了該時間。
(4)變量綁定(variable-bindings)
指明一個或多個變量的名和對應的值。在get或get-next報文中,變量的值應忽略。
?
總結
以上是生活随笔為你收集整理的SNMP网络管理协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php ZipArchive 压缩整个文
- 下一篇: springboot集成quartz