資訊坊科技有限公司
Back to Top

在目前日益複雜、分散、多元化的網絡環境中充斥著各式各樣網絡設備,這使得網絡的管理、除錯變得困難,簡單網絡管理協議 (SNMP) 是使用 UDP 協議對網絡設備進行管理的一個框架,屬於應用級協議,它提供一組簡單標準的操作去收集、修改及交換網絡設備之間的網絡管理資訊,以便於監察和維護網絡設備,透過標準的 SNMP,網管人員便可以更容易地管理複雜網絡,找出問題所在。

由於網絡管理資訊的急切性通常都不會很高,為了避免網絡管理資訊的傳輸對網絡造成負擔,SNMP 採用可靠性較低的 UDP 協議,UDP 並不能擔保資料包傳到目的地,但對網絡管理來說,間中掉包問題不大,通常我們會為管理軟件定下時間,如在一段時間來收不到回覆,便自動重發。

網管資訊庫 (MIB)

SNMP 被設計成適用於各類型的網絡設備,故它所管理的資訊亦隨著設備的不同而千差萬別,每種網絡或設備對其資料的表達方式亦存在差異,為將這些資訊納入同一套管理系統,就須採用一套抽象的語法來描述所有類型的資訊,為此,SNMP 定義了網管資訊庫 (MIB) ,階層性描述所有受管理資訊的屬性,並稱這些受管理的資訊為 SNMP 物件(object)。MIB 可分為標準(Standard) MIB 及 私人 (Private) MIB 兩大類,標準 MIB 適用於所有網絡設備,而 Private MIB 則由廠家自行定義,以反映設備的獨特變量值,合法的 Private MIB 需要向有關機構申請,務求令每一個 Private MIB 都是世上獨一無二的。

SNMP 物件可能只是個純量,也可能是內含數個純量的表,SNMP 採用 OSI 的抽象語法標注法 (ASN.1) 定義物件資料格式,SNMP 物件由物件型別 (type)、存取 (access) 及語法 (syntax) 所構成,‘型別’是組易於人類辨識的字串代碼,它附有編號,‘存取’可控制對該物件的讀寫,‘語法’是該物件的資料結構,由 ASN.1 語法所定義。符合 ASN.1 定義的 MIB 都能被匯編到有名的 SNMP 管理軟件,如 HP OpenView、IBM Netview、Tivoli TME 或 CA Unicenter TNG,匯入不同網絡設備的 MIB,再經過一些簡單程式控制,用戶便可以製作出一套能管理所有網絡設備的系統。

MIB 採用樹狀結構,為一種階層式分類,每個節點皆有它特定的類型,以易於人類辨識的單字標記,並附有物件身份編號 (OID),樹狀末端的所有葉片為SNMP 定義的物件,而實際上在網絡之間傳遞的 MID 為 OID。下圖為 MIB 樹狀基本結構

標準 MIB 的基本OID開頭為 1.3.6.1.2.1 ,而 Private MIB 的基本OID開頭為 1.3.6.1.4.1

以下是十多年前一款 Access Point - Orinoco AP2000 Private MIB 的其中一個物件資料結構:

==========================================================
Definition of ORiNOCO MIB OID Tree used in the ORiNOCO Wireless Product Line
==========================================================
lucent OBJECT IDENTIFIER ::= { enterprises 1751 }
mibs OBJECT IDENTIFIER ::= { lucent 2 }
orinocomibs OBJECT IDENTIFIER ::= { mibs 4 }
orinocoSys OBJECT IDENTIFIER ::= { orinocomibs 1 }

“iso(1).org(3).dod(6).internet(1).private(4).enterprise(1). lucent(1751).mibs(2).orinocomibs(4). orinocoSys(1)”

oriSystemContactPhoneNumber OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The phone number for the contact person.
This object is supported by the following ORiNOCO Devices:
- Access Point 2000"
::= { orinocoSys 6 }

以上這個物件 oriSystemContactPhoneNumber 的 OID 為 1.3.6.1.4.1.1751.2.4.1.6.0 ,只要你把這個OID 以標準的 SNMP 格式傳到 AP2000 ,AP2000 便會以準的 SNMP 格式回傳 oriSystemContactPhoneNumber 數值

SNMP 的架構

SNMP 是目前最普遍用於各式網際網絡 ( 不特指 Internet ) 的網管協定,SNMP 如同其名、是個頗單純的協定,但其特點卻足以應付各種網絡的網管需求。

一個 SNMP 網管系統,由代理器 ( AGENT ) 及網管系統 (NMS) 組成,SNMP 代理器是附在網絡設備內的程式模塊,它可取得所依附裝置的網絡資訊,並透過網絡將這些資訊採用 SNMP 協定提供予網管系統。

SNMP 代理器所依附裝置可以是任何形態的網絡設備,包括電腦主機、終端機、網絡印表機、路由器、 橋接器等等,這些裝置的規模有大有小,其計算能力、儲存空間等亦有限制,為令 SNMP 代理器能普遍安裝於各種網絡裝置,在定義時即考慮各裝置在網管需求的交集,並令代理器的存在不會對原裝置造成太大負擔。

網管系統 (NMS) 通常是部專職的主機,它負責收集由各代理器傳來的網絡資訊,並提供網絡整體的分析、統計等圖表及數據,由於各裝置上的代理器被設計的很小巧,它們只負責回應裝置的資訊,所以主要的計算負擔即落在 NMS,故 NMS 通常是配備有高速的 CPU、大量記憶體、磁碟機空間的工作站級電腦,並且也配備良好的圖形操作介面以方便管理操作及圖表的輸出。

SNMP 指令

SNMP v2 定義了五種基本操作供網管系統 (NMS) 存取各 SNMP 代理器維護的變量,代理器也可不定時向 NMS 回覆異常情況 (Trap) 資訊,這些操作是

GetRequest (讀取請求),由 NMS 發送給代理器,用來讀取一個變量值。

GetNextRequest (讀取下一個請求),由 NMS 發送給代理器,用來讀取一個變量值, 主要是用來讀取一個表中的項目值。

GetResponse (讀取回應) ,由代理器發送給 NMS,以回應 GetRequest 及GetNextRequest,包含 NMS 所請求的變量值。

SetRequest (設置請求),由NMS 發送給代理器,用來設置一個變量值。

Trap (異常情況),由代理器單向發送給 NMS,用來報告一個異常情況,例如設備重新啟動,NMS 不會對 Trap 作任何回應。

不是所有網絡設備都有 SNMP 功能,廠家需要花額外人手去編寫代理器,對於一些廉價設備,這種投入不化算,用戶亦沒有這種要求,但對於一些中大型網絡中的設備,SNMP 則是必需的。



文:鄧惠標
更新:2017年4月23日