您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關SNMP相關基本概念是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一、網絡管理的概念
狹義的網絡管理僅僅指網絡的通信量管理,而廣義的網絡管理指網絡的系統管理。網絡管理功能可概括為OAM﹠P,即網絡的運行(Operation)、處理(Administration)、維護(Maintenance)、服務提供(Provisioning)等所需要的各種活動。有時也考慮前三種,即把網絡管理功能歸結為OAM。
網絡管理通常用到以下術語:
l網絡元素(network element)
網絡中具體的通信設備或邏輯實體,又稱網元。
l對象(object)
通信和信息處理范疇里可標識的切擁有一定信息特性的資源。但應注意,這里所用的“對象”與面向對象系統中所定義的對象并不完全一樣。
l被管理對象(managed object)
被管理對象指可使用管理協議進行管理和控制的網絡資源的抽象表示。例如,一個層的實體或一個連接。
l管理信息庫MIB
MIB是網絡管理系統中的重要構件,它有一個系統內的許多被管對象及其屬性組成。MIB這個概念實際上就是一個虛擬數據庫。這個數據庫提供有關被管理網絡元素的信息,而這些信息由管理進程和各個代理進程共享。MIB由管理進程和各個代理進程共同使用。
l綜合網絡管理INM
用統一的方法在一個異構網絡中管理多廠商生產的計算機硬件和軟件資源。這也稱為一體化網絡管理。
二、SNMP相關概念
SNMP的基本功能包括監視網絡性能、檢測分析網絡差錯和配置網絡設備等。在網絡正常工作時,SNMP可實現統計、配置和測試等功能。當網絡出故障時,可實現各種差錯檢測和恢復功能。
SNMP中的幾個重要概念:
l管理進程(NMS)
管理進程可以向代理進程詢問某些參數值以外,它還可以按要求改變代理進程的參數值。負責發送請求和接收代理進程發過來的trap信息。
l委托代理(proxy agent)
為沒有SNMP服務的設備提供資源信息,委托代理能提供如協議轉換和過濾操作的匯集功能。然后委托代理來對管理對象進行管理。
l代理進程(Agent)
被管設備端和管理相關的軟件叫做代理程序(agent)或代理進程。管理進程和代理進程之間的通信可以有兩種方式。一種是管理進程向代理進程發出請求,詢問一個具體的參數值。另外一種方式是代理進程主動向管理進程報告有某些重要的事件發生。
lcommunity (共同體)
共同體實際上就是用來實現管理應用實體之間身份鑒別的,可以把它理解為一個帶有權限的登陸賬戶,這是訪問網絡設備的重要憑據。假如community是public,其權限是只讀的,那你一 以此用戶登陸就可以查看有關記錄的數據。如果其權限是讀寫的,你就有權修改其中的一些設置,如封鎖某一個交換機的端口。大部分默認情況下,以public作為只讀community,以private作為讀寫community。
lMIB(Management Information Base)
稱為管理信息庫,包含所有代理進程的所有可被查詢和修改的參數。
lSMI(Structure of Management Information)
叫做管理信息結構,是MIB的一套公用的結構和表示符號。SMI定義了一個設備維護的規則集,用于對被管理對象進行命名和編碼。
lOID(對象標志符)
是以SMI(Structure of Management Information)管理信息結構為基礎的一系列點分符號,這些點分符號在任何網絡設備中都唯一標識某一個數據參數。他們的集合我們稱為MIB(Management Information Base)管理信息庫。
三、SNMP通訊方式
SNMP代理和管理站通過SNMP協議中的標準消息進行通信,每個消息都是一個單獨的數據報。SNMP使用UDP(用戶數據報協議)作為第四層協議(傳輸協議),進行無連接操作。 SNMP規定了5種協議消息(也就是SNMP報文),用來在管理進程和代理之間的交換。
整個系統必須有一個管理站(management station),它實際上是網控中心。在管理站內運行管理進程。在每個被管對象中一定要有代理進程。管理進程和代理進程利用SNMP報文進行通信,而SNMP報文又使用UDP來傳送。管理進程和代理進程之間的通信可以有兩種方式。一種是管理進程向代理進程發出請求,詢問或設置一個具體的參數值,稱為Polling;而另一種則是代理進程主動向管理進程報告某些重要事件發生,成為Trap。SNMP中默認的agent接聽端口是161,而接收trap的端口為162。
圖中有兩個主機和一個路由器。這些協議棧中帶有陰影的部分是原來這些主機和路由器所具有的,而沒有陰影的部分是為實現網絡管理而增加的。
有時網絡管理協議無法控制某些網絡元素,例如該網絡元素使用的是另一種網絡管理協議。這時可使用委托代理(proxy agent)。
四、SNMP安全性
SNMPv1采用了“共同體”的字段作為管理進程和代理進程的鑒別密碼,只有具有相應的“共同體名”,才有訪問權限,這種方式只是簡單的明文交換方式;SNMPv2 的安全機制沒有本質的改進;SNMPv3提出了新的安全機制,同時還有一套專門的網絡安全和訪問控制規則。
有三種共同體名稱:read-only, read-write, 和trap。在默認情況下,public獲取只讀,private獲得讀寫權限。
五、SNMP操作
SNMP協議主要有五種報文get、get-next、set、get-response,trap。
lget-request操作:從代理進程處提取一個或多個參數值
lget-next-request操作:從代理進程處提取緊跟當前參數值的下一個參數值
lset-request操作:設置代理進程的一個或多個參數值
lget-response操作:返回的一個或多個參數值。這個操作是由代理進程發出的,它是前面三種操作的響應操作。
ltrap操作:代理進程主動發出的報文,通知管理進程有某些事情發生。
其中前三種報文是管理進程發出的;后兩種是代理進程發出的。在代理進程端是用熟知端口161倆接收get或set報文,而在管理進程端是用熟知端口162來接收trap報文。
下面具體講解5種SNMP操作。
(1)get-request操作
管理站需要主動向agent讀取管理對象的值,以獲得設備或網絡的運行數據和管理信息,進而規劃網絡管理。SNMP不支持一次讀取一張表或表中一行數據。但是當需要讀取多個數據,如果分多次讀取則會提高網絡負擔,所以,Get-Request支持一次提交多個對象標識(OID),以便一次獲取他們的值,提高網絡利用率。
(2)get-next-request操作
SNMP不支持一次讀取一張表或表中一行數據的讀取,Get-Next-Request提供了一種簡單的方法。對一個OID進行Get-Next-Request操作,將會收到一個下一個可讀取的對象的實例標識,接著對他Get-Next-Request將會得到再下一個實例標識,不斷執行下去,將可以讀取完整張表。一方面Get-Next-Request實現很簡單,但是在讀取表中數據的時候卻不可避免地有一個大麻煩。表中的數據是以行為單位,每一行又由若干列組成,如果讀取一行數據,應該讀取這一行的每一列,但是SNMP的Get-Next-Request表時是先列后行,就是說先把第一列中所有行數據讀取完,再讀取下一列所有行。這樣,客戶端就需要做很多工作。另一方面,這樣顯然傳遞了很多不必要的數據,浪費了帶寬。跟Get-Request一樣,Get-Next-Request可以在PDU里綁定多個OID或實例標識,以提高效率。同樣的,綁定多個OID情況下,相應的Get-Response的PDU同樣會返回每一個OID的下一個可用實例標識標識符或相應錯誤。利用綁定多個OID可以比單個執行Get-Next-Request有效率。
(3)set-request操作
網絡管理中,有時需要對設備的一些參數、配置、狀態進行重新配置。需要一種遠程的管理機制,Set-Request就是這樣的操作。set操作可以對MIB中權限為:write-only、read-write的對象進行set操作。
盡管set操作為改變配置提供了一種比較方便的方法,但是SNMP并沒有直接提供操作遠程設備的操作。但這不代表SNMP沒有這種能力,我們可以借助于Set-Request操作間接地實現這一性能。設備通過MIB定義一個操作的對象,類型為write-only或read-write,約定操作取值,NMS可以對這個對象進行設置,設備以自己的方式得知此對象的值改變后,可以按照對象取值的含義執行操作,從而實現遠程控制。
set操作也允許一次提供幾個set的對象和值,以便在一個PDU里操作多個對象。set操作的成功應答包里包含設置的對象的最新取值(也就是設置的值)。
(4)get-response操作
GetResponse對get、set、getNext進行應答,由agent被動地產生并發出。當操作成功地被執行時,GetResponsePDU里包含操作中請求操作的對象oid和他們的值。前面提到,前三種操作都支持在一個PDU里綁定多個對象,相應的GetResponse應答也包含相應變量的值。對于失敗的操作,GetResponse需要在PDU里標注相應的錯誤代碼。GetResponse對請求數據包里的request-id域不操作,原數返回,以使請求端能將應答包和請求包準確匹配,同時也可以作為請求和接收方校驗重復數據包的依據。
當操作成功時,error-status值為noError,error-index為0。variablebindings中的變量的value域填上相應值。
當操作失敗時,error-status為相應的錯誤代碼,如果錯誤由variablebindings組中某個對象引起,則error-index為該對象在variablebindings中的索引。
(5)trap操作
SNMP的前三種操作是NMS主動發起的操作,網絡中存在大量的設備,NMS輪循一次需要一段時間,如果設備發生了重要的狀態改變,等到下一次輪循到來,可能已經失去實時性,NMS不能及時掌握設備數據或狀態的變化。另一方面,考慮到對網絡的占用,又不可能以很小的間隔去輪循設備。所以,需要一種機制讓設備能夠自主地發出警報,通知狀態或配置的改變和其它一些重要事件。Trap就是由agent主動發出的警報PDU,通知NMS重要的改變。
RFC 1157中定義了5種常見類型的Trap,用于這些常見網絡狀態的報警。另外提供了一個自定義的類型,并提供一個PDU單元提供自定義Trap的子代碼,用于SNMP的實現者定義和發送自己的Trap。
另一方面,但Trap也有一些問題,因為SNMP使用的是UDP,無連接的數據報,Trap有可能不能傳遞到NMS,另一方面agent不知道NMS是否收到Trap。另外,發送Trap一般都是由重要的狀態引起的,某些情況下,系統發生了災難性的故障,導致Trap也無法發出,比如系統崩潰、網絡故障等。所以,一個網絡管理系統要綜合使用這些操作,互為補充,才能建立一個可靠的管理系統。單獨依靠每一種操作都有片面性。
RFC里沒有提到如何判斷SNMP是否丟失,但按照TCP/IP協議特征可以做常識性的判斷,比如GetRequest和GetNextRequest,如果在設定的時間內沒有收到agent的GetResponse應答包,就可以認為GetRequest、GetNextRequest或GetResponse丟失,可以嘗試下一次請求,直至有結果或無應答放棄。對SetRequest而言,執行SetRequest以后,可以發送一個GetRequest查詢是否set成功。Trap由于是單向的數據報,沒有應答,沒有辦法判斷是否成功發送到目的地,需要由NMS的主動輪循來檢測。
在v2和v3版本中,對SNMP的操作做了一些修改,加入了別的操作,增強了安全性。如:SNMP v2-Trap的PDU結構跟GetRequest、GetNextRequest、SetRequest、InformRequest相同,而不是v1中擁有自己特殊的格式。InformRequest:管理站向另一個管理站報告通報的消息。InformRequest是SNMP v2引入的新的操作,由管理站發起,向另一個管理站報告狀態或數據,與Trap不同,InformRequest需要得到接收方的應答。GetBulkRequest:管理站向代理讀取表中若干行的操作。六、SNMP中的報文格式
5種操作的SNMP報文是封裝成UDP數據報格式。可見一個SNMP報文共有三個部分組成,即公共SNMP首部、get/set首部trap首部、變量綁定。
(1)公共SNMP首部
共三個字段:
l版本
整型,寫入版本字段的是版本號減1,故:第1版取值為0,第二版取值為1,第三版取值為2。默認取值為0,即第一版。
l共同體(community)
共同體就是一個字符串,作為管理進程和代理進程之間的明文口令,常用的是6個字符“public”。
lPDU類型
根據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首部
l請求標識符(request ID)
這是由管理進程設置的一個整數值。代理進程在發送get-response報文時也要返回此請求標識符。管理進程可同時向許多代理發出get報文,這些報文都使用UDP傳送,先發送的有可能后到達。設置了請求標識符可使管理進程能夠識別返回的響應報文對于哪一個請求報文。
l差錯狀態(error status)
由代理進程回答時填入0~5中的一個數字,見表3的描述。
表3 差錯狀態描述
差錯狀態 | 名字 | 說明 |
0 | noError | 一切正常 |
1 | tooBig | 代理無法將回答裝入到一個SNMP報文之中 |
2 | noSuchName | 操作指明了一個不存在的變量 |
3 | badValue | 一個set操作指明了一個無效值或無效語法 |
4 | readOnly | 管理進程試圖修改一個只讀變量 |
5 | genErr | 某些其他的差錯 |
l差錯索引(error index)
當出現noSuchName、badValue或readOnly的差錯時,由代理進程在回答時設置的一個整數,它指明有差錯的變量在變量列表中的偏移。
(3)trap首部
l企業(enterprise)
填入trap報文的網絡設備的對象標識符。此對象標識符肯定是在圖3的對象命名樹上的enterprise結點{1.3.6.1.4.1}下面的一棵子樹上。
ltrap類型
此字段正式的名稱是generic-trap,共分為表4中的7種。
表4trap類型描述
<td style="BORDER-RIGHT: black 1pt solid; PADDING
trap類型 | 名字 | 說明 |
0 | coldStart | 代理進行了初始化 |
1 | warmStart | 代理進行了重新初始化 |
2 | linkDown | 一個接口從工作狀態變為故障狀態 |
3 | linkUp | 一個接口從故障狀態變為工作狀態 |
4 | authenticationFailure | 從SNMP管理進程接收到具有一個無效共同體的報文 |
5 |
以上就是SNMP相關基本概念是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。