SNMP簡介
SNMP簡介
一個網路管理系統一般要包含以下幾個元素:若干個(可能很多個)需要被管理的網路設備節點,如路由器、伺服器等設備,每個節點上都執行著一個稱為設備代理(agent)的應用進程,其實現對被管理設備的各種被管理物件的資訊如流量等的搜集和對這些被管物件的訪問的支援;?至少一個管理工作站,該管理站執行著管理平臺應用系統,實現為管理員提供對被管設備的視覺化的圖形介面,從而使管理員可以方便的進行管理;一個管理協定,用來定義設備代理和管理工作站之間管理資訊傳送的規程。其中管理協議的操作是在管理框架下進行的,管理框架定義了和安全相關的認證,授權,訪問控制和加密策略等各種安全防護框架。
在執行TCP/IP協定的互聯網環境中,管理協定標準是簡單網路管理協定(Simple Network Management Protocol,SNMP),其定義了傳送管理資訊的協定消息格式及管理站和設備代理相互之間進行消息傳送的規程。
出於業界對網路管理協定標準化的迫切要求的驅動,IETF於1990發佈了SNMPv1的正式RFC文檔;其設計思想重點放在保證協議的簡單性、靈活性和可擴展性上,並希望把SNMP作為一個過渡性的網管協議來作為實現對互連的網路設備進行管理時遵循的標準,待OSI的網路管理協定-CMIP的開發、實現和標準化成熟和完善到可以在業界推廣之後,再用CMIP來替換SNMP。但是由於各種的原因,CMIP並沒有替代SNMP,而SNMP發展為業界的標準。
SNMP一共發展有3個主版本,分別為SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分為若干個子版本,其中SNMPv2c應用最為廣泛:
SNMPv1: 是第一個正式協議版本,在RFC1155-RFC1158中定義,該版本採用了基於共同體名的安全機制;
SNMPv2c: 這個版本被稱為基於共同體名的SNMPv2,使用基於共同體名的安全機制和SNMPv2p做出的協議操作方面的擴充,由RFC1901-RFC1906定義;
SNMPv3: 該協定版本採用基於用戶的安全機制,其安全機制是在SNMPv2u和SNMPv2*基礎上進行大量的評議以後進行了更新,並且對協定機的邏輯功能模組的進行了劃分而保證了良好的可擴充性,由RFC2271-RFC2275所定義。
執行SNMP管理系統的原理及SNMP協定
使用SNMP協定的網路管理系統管理結構工作一般包括:管理進程通過定時向各個設備的設備代理進程發送查詢請求消息(以輪詢方式),來跟蹤各個設備的狀態;而當設備出現異常事件如設備冷啟動等時,設備代理進程主動向管理進程發送陷阱消息,彙報出現的異常事件。這些輪詢消息和陷阱消息的發送和接受規程及其格式定義都是由SNMP協議定義的;而被管理設備將其各種管理物件的資訊都存放在一個稱為管理資訊庫(Management Information Base)庫結構中。
其中SNMP協定是執行在UDP協定之上,它利用的是UDP協議的161/162埠。其中161埠被設備代理監聽,等待接受管理者進程發送的管理資訊查詢請求消息;162埠由管理者進程監聽等待設備代理進程發送的異常事件報告陷阱消息,如Trap。
設備的所有的需要被管理的資訊被看作一個各種被管理物件的集合,這些被管理物件由OSI定義在一個被稱作管理資訊庫(Management Information Base,MIB)的虛擬的資訊庫中。
管理物件庫MIB
MIB是一個按照層次結構組織的樹狀結構(定義方式類似於功能變數名稱系統),管理物件為定義為樹中的相應葉子節點。管理物件是按照模組的形式組織,每個物件的父節點表示該種物件屬於上層的哪一個模組。而且OSI為樹中每一層的每個節點定義唯一的一個數位標識,每層中的該數位標識從1開始遞增,這樣樹中的每個節點都可以用從根開始到目的節點的相應的標識對應的一連串的數位來表示,如1.3.6.1.2.1.1表示了MIBII中系統組子樹,而1.3.6.1.2.1.1.1.0表示系統組中的系統描述(sytem Descrption)物件。每個物件的一連串數位表示被稱為物件識別字(Object Indentifier,OID)。
相關的一組物件的集合被定義為一個MIB模組。這些模組使用OSI的抽象語法標記(Abstract Syntax Notation One,ASN.1)的一個子集寫成。該子集被定義為管理資訊結構(Management Information,SMI)。
SNMP的消息在發送和傳輸時消息是採用基本編碼規則(BER)對消息進行編碼。
SNMP基本的標準MIB庫是MIBII,具體請參考RFC 1213。
SNMP協議操作
SNMP提供有三類操作,分別為Get,Set和Trap。
Get操作實現對被管理物件所表示的管理資訊的讀操作。在SNMPv1中,GET操作具體一共有兩種形式
Get和GetNext操作: Get操作指示直接讀取操作參數指定的OID所表示的被管理物件的管理資訊值。GetNext操作指示讀取操作參數指定的OID所表示的被管理物件在MIB樹中按照字典順序的下一個被管理物件的管理資訊的值。在SNMPv2中,增加了一種GetBulk操作,其是Get和GetNext的綜合,是為了提高對被管理資訊的訪問的效率而增加的。
Set操作實現對被管理物件的管理資訊進行寫操作,其實現直接對操作參數指定的OID所表示的被管理物件對應的管理資訊的值的設置。
前面幾種消息是由管理工作站主動實現對被管理設備進行輪詢訪問時發出以得到被管理設備的各種資訊;而在被管理設備出現異常事件需要及時向管理工作站報告時,就需要Trap操作,該操作實現被管理設備向管理工作站報告設備上出現的異常事件,如網路介面出現故障或恢復工作,設備重新啟動等資訊。另外在SNMPv2中新增加了一種Inform操作來實現管理站與管理站之間的通信。
其中上述操作的消息都可以在操作參數中一次指定一個或多個管理物件OID資訊,也就是說一個消息一次可以實現對多個被管理物件的操作。
SNMPv1和SNMPv2c採用了一種簡單的基於共同體名的安全機制:
管理站和被管設備上都存儲有該充當密碼作用的共同體名;消息發送者(一般是管理者)在要發送的消息中的共同體名欄位中填入對應於接收者的共同體名,然後以明文方式在網路上發送消息,接收方(被管理設備)接收到消息以後,如果消息格式是正確的,則讀取該欄位,與自身保存的共同體名相比較,來實現對發送消息者的認證。在一些實現中,對應於每個共同體名還有一個機器位址列表,來表示只有位址在這個列表中的機器使用該共同體名發送的消息才認為是可信的。這裏的共同體名就擔任密碼的作用。同時對應於每個共同體名都有一個訪問控制許可權,可能值為讀或讀寫。只有請求的操作和使用的共同體名的許可權一致才允許進行。
詳細情況請參考RFC 1157、RFC 1902、RFC 2273、RFC 2274。
留言