簡介
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)唯一指定,其命名規則就是父節點的名字作為子節點名字的前綴。
組成部分
一個SNMP管理的網路由下列三個關鍵組件組成:
網路管理系統(NMS,Network-management systems)
被管理的設備(managed device)
代理者(agent)
網路管理系統運行應用程式,以該應用程式監視並控制被管理的設備。也稱為管理實體(managingentity),網路管理員在這兒與網路設備進行互動。網路管理系統提供網路管理需要的大量運算和記憶資源。一個被管理的網路可能存在一個以上的網路管理系統。
被管理的設備是一個
網路節點,它包含一個存在於被管理的網路中的SNMP代理者。被管理的設備通過管理信息庫(MIB)收集並存儲管理信息,並且讓網路管理系統能夠通過SNMP代理者取得這項信息。
代理者是一種存在於被管理的設備中的網路管理軟體模組。代理者控制本地機器的
管理信息,以和SNMP兼容的格式傳送這項信息。
技術優點
SNMP是管理進程(NMS)和代理進程(Agent)之間的通信協定。它規定了在網路環境中對設備進行監視和管理的標準化管理框架、通信的公共語言、相應的安全和訪問控制機制。網路管理員使用SNMP功能可以查詢設備信息、修改設備的參數值、監控設備狀態、自動發現網路故障、生成報告等。
SNMP具有以下技術優點:
自動化網路管理。網路管理員可以利用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:團體名稱,用於在訪問代理器之前認證管理器。
開發和使用
第一版
RFC 1065:基於
TCP/IP網路的管理信息的結構和認定
RFC 1066:以基於TCP/IP網路的網路管理為基礎的管理信息
RFC 1067:一個簡單網路管理協定
這些協定被廢除經由:
RFC 1155:基於TCP/IP網路的管理信息的結構和認定
RFC 1156:以基於TCP/IP網路的網路管理為基礎的管理信息
RFC 1157:一個簡單網路管理協定
GET,用來得到一條管理信息
GETNEXT,用來反覆得到管理信息的串列
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的主要作用就是幫助企業網路管理人員更方便的了解網路性能、發現並解決網路問題、規劃網路的未來發展。