SNMP(Simple Network Management Protocol)即簡易網路管理通訊協定,它為網路管理系統提供了底層網路管理的架構。SNMP協議的應用範圍非常廣泛,諸多種類的網路裝置、軟體和系統中都有所採用,主要是因為SNMP協議有如下幾個特點:
首先,相對於其它種類的網路管理體系或管理協議而言,SNMP易於實現。SNMP的管理協議、MIB及其它相關的體系架構能夠在各種不同類型的裝置上運行,包括低檔的個人電腦到高檔的大型主機、伺服器、及路由器、交換器等網路裝置。一個SNMP管理代理程式組件在運行時不需要很大的記憶體空間,因此也就不需要太強的計算能力。SNMP協議一般可以在目標系統中快速開發出來,所以它很容易在面市的新產品或升級的老產品中出現。儘管SNMP協議缺少其它網路管理協議的某些優點,但它設計簡單、擴充靈活、便於使用,這些特點大大彌補了SNMP協議應用中的其他不足。
其次,SNMP協議是開放的免費產品。只有經過IETF的標準議程批准(IETF是IAB下設的一個組織),才可以改動SNMP協議;廠商們也可以私下改動SNMP協議,但這樣作的結果很可能得不償失,因為他們必須說服其他廠商和使用者支援他們對SNMP協議的非標準改進,而這樣做卻有悖於他們的初衷。
第三,SNMP協議有很多詳細的文檔資料(例如RFC,以及其它的一些文章、說明書等),網路業界對這個協議也有著較深入的理解,這些都是SNMP協議近一步發展和改進的基礎。
最後,SNMP協議可用於控制各種裝置。比如說電話系統、環境控制裝置,以及其它可接入網路且需要控制的裝置等,這些非傳統裝備都可以使用SNMP協議。
正是由於有了上述這些特點,SNMP協議已經被認為是網路裝置廠商、應用軟體開發人員及終端使用者的首選管理協議。
SNMP是一種無連線協定,不需連線的意思是它不支援象TELNET或FTP這種專門的串連。通過使用請求報文和返迴響應的方式,SNMP在管理代理程式和管理員之間傳送資訊。這種機制減輕了管理代理程式的負擔,它不必要非得支援其它協議及基於串連模式的處理過程。因此,SNMP協議提供了一種專屬的機制來處理可靠性和故障檢測方面的問題。
另外,網路管理系統通常安裝在一個比較大的網路環境中,其中包括大量的不同種類的網路和網路裝置。因此,為劃分管理職責,應該把整個網路分成若干個使用者分區,可以把滿足以下條件的網路裝置歸為同一個SNMP分區:它們可以提供用於實現分區所需要的安全性方面的分界線。SNMP協議支援這種基於分區名(community string)資訊的安全模型,可以通過物理方式把它添加到選定的分區內的每個網路裝置上。目前SNMP協議中基於分區的身分識別驗證模型被認是為很不牢靠的,它存在一個嚴重的安全問題。主要原因是SNMP協議並不提供加密功能,也不保證在SNMP資料包交換過程中不能從網路中直接拷貝分區資訊。只需使用一個資料包捕獲工具就可把整個SNMP資料包解密,這樣分區名就暴露無遺。因為這個原因,大多數網站禁止管理代理程式裝置的設定作業。但這樣做有一個副作用,這樣一來只能監控資料對象的值而不能改動它們,限制了SNMP協議的可用性。
SNMP的命令和報文
SNMP協議定義了資料包的格式,及網路系統管理員和管理代理程式之間的資訊交換,它還控制著管理代理程式的MIB資料對象。因此,可用於處理管理代理程式定義的各種任務。SNMP協議之所以便於使用,這是因為它對外提供了三種用於控制MIB對象的基本操作命令。它們是:Set 、Get 和 Trap :
Set:它是一個特權命令,因為可以通過它來改動裝置的配置或控制裝置的運轉狀態。
Get:它是SNMP協議中使用率最高的一個命令,因為該命令是從網路裝置中獲得管理資訊的基本方式。
Trap:它的功能就是在網路管理系統沒有明確要求的前提下,由管理代理程式通知網路管理系統有一些特別的情況或問題發生了。
SNMP協議也定義了執行以上三個命令時的報文流, 但它沒有定義其它的裝置管理代理命令,可應用於MIB資料對象的操作只有Set和Get命令,這兩個命令的目標是資料對象的值。比如說,SNMP協議中沒有定義reboot(重啟)命令;然而,管理代理程式軟體把MIB資料對象和裝置的內部命令聯絡起來,這樣就可以實現某些特殊的命令操作。如果現在想要重啟某個裝置,管理系統就把某個與重啟有關的MIB資料對象的值設為1(我們的假定)。這樣就會觸發管理代理程式執行重新啟動裝置的命令,同時還把這個MIB資料對象重新設定為原來的狀態。
一條SNMP報文由三個部分組成:版本域(version field),分地區(community field)和SNMP協議資料單元域(SNMP protocol data unit field),資料包的長度不是固定的。
版本域:這個域用於說明現在使用的是哪個版本的SNMP協議。目前,version 1是使用最廣泛的SNMP協議。
分地區:分區(community)是基本的安全機制,用於實現SNMP網路系統管理員訪問SNMP管理代理程式時的身分識別驗證。分區名(Community name)是管理代理程式的口令,管理員被允許訪問資料對象的前提就是網路系統管理員知道網路代理程式的口令。如果把組態管理代理成可以執行Trap命令,當網路系統管理員用一個錯誤的分區名查詢管理代理程式時,系統就發送一個autenticationFailure trap報文。
協議資料單元域:SNMPv1的PDU有五種類型,有些是報文請求(Request),有些則是響應(Response)。它們包括:GetRequest、GetNextRequest、SetRequest、GetResponse、Trap 。SNMPv2又增加了兩種PDU:GetBulkRequest和InformRequest 。
SNMP管理員使用GetRequest從擁有SNMP代理的網路裝置中檢索資訊,SNMP代理以GetResponse訊息響應GetRequest。可以交換的資訊很多,如系統的名字,系統自啟動後正常啟動並執行時間,系統中的網路介面數等等。GetRequest和GetNextRequest結合起來使用可以獲得一個表中的對象。GetRequest取回一個特定對象;而使用GetNextRequest則是請求表中的下一個對象。使用SetRequest可以對一個裝置中的參數進行遠程配置。Set-Request可以設定裝置的名字,關掉一個連接埠或清除一個位址解析表中的項。Trap即SNMP陷阱,是SNMP代理髮送給管理站的非請求訊息。這些訊息告知管理站本裝置發生了一個特定事件,如連接埠失敗,掉電重起等,管理站可相應的作出處理。
MIB概述
管理資訊資料庫(MIB)是一個資訊存放庫,它包含了管理代理程式中的有關配置和效能的資料,有一個組織體系和公用結構,其中包含分屬不同組的許多個資料對象。如所示。
MIB資料對象以一種樹狀分層結構進行組織,這個樹狀結構中的每個分枝都有一個專用的名字和一個數字形式的標識符。表示的是標準MIB的組織體系,列出了從MIB結構樹的樹根到各層樹枝的全部內容。結構樹的分枝實際表示的是資料對象的邏輯分組。而樹葉,有時候也叫節點(node),代表了各個資料對象。在結構樹中使用子樹表示增加的中間分枝和增加的樹葉。
使用這個樹狀分層結構,MIB瀏覽器能夠以一種方便而且簡潔的方式訪問整個MIB資料庫。MIB瀏覽器是這樣一種工具,它可以遍曆整棵MIB結構樹,通常以圖形顯示的形式來表示各個分枝和樹葉對象。可以通過其數位識別碼符來尋找MIB中的資料對象,這個數位識別碼符號從結構樹的頂部(或根部)開始,直到各個葉子節點(即資料對象)為止。這種訪問方式和檔案系統的組織方式一致。兩者的主要區別在於檔案系統中的路徑名可以以絕對也可以以相對方式表示,而MIB資料對象只能以絕對方式表示,不能使用相對方式。例如,在圖中,iso(1)位於結構樹的最上方,而sysDescr(1)處在葉子節點的位置。現在看不到樹根root(.),其餘所有的分枝都是從這裡擴充而來的。通常用帶點的符號來表示資料對象的標識符。要訪問資料對象sysDescr(1),其完整的標識符應該是這樣的:iso.org.dod.internet.mgmt.mib-2.system.sysDescr(這個標識符應該從左向右讀)。資料對象也可以以另一種更短的格式表示,即用數字形式標識符代替分枝名形式的表示形式。這樣,上面的那種形式的標識符iso.org.dod.internet.mgmt.mib-2.system.sysDescr 還可以用 1.3.6.1.2.1.1.1 來表示。這兩種表達格式的作用是一致的,都表示同一個MIB資料對象。儘管數字形式的標識符看起來更簡潔,選擇何種表達格式仍然是個人偏好問題。幸運的是,許多MIB瀏覽器可以以兩者中任何一種格式來表示資料對象,這使得兩種格式間的相互轉化非常容易。
MIB的訪問方式
在定義MIB資料對象時,存取控制資訊確定了可作用於該資料對象的操作種類。SNMP協議有如下的MIB資料對象訪問方式:
唯讀方式(Read-only)
可讀可寫(Read-write)
禁止訪問(Not-accessible)
網路管理系統無法改動唯讀方式的MIB資料對象,但可以通過Get或Trap命令讀取資料對象的值。在一件產品的使用期內,某些MIB的資訊從不會改變。例如,MIB資料對象sysDescr,它代表System Description,包含了管理代理程式軟體所需要的廠商資訊。確定某些資料對象為唯讀還有另一個原因,即確保有關效能的資訊及其它統計資料正確,不至於因誤操作而改動它們。
SNMP作為資料轉送方法,和資料的組織形式MIB結合,為網路管理系統提供了底層的保障。一個真正的網路管理系統可以建立在SNMP之上,也可以建立在其他的網路管理協議上,如CMIP等等,不過那也是需要另外撰文敘述的了。