最近在研究WSN網絡管理方面的內容,先看看事實上的工業標準SNMP長的是什麼樣子再說。數據庫
SNMP前身是SGMP(Simple Gateway Management Protocol),長江後浪推前浪,SGMP就掛了。SNMP的主要架構思想是manager/agent模型,使用5種commands用於manager與agent之間的交互,他們分別是「Get」,「GteNext」,「GetResponse」,「Set」和「Trap」。其實就是manager使用Get,GetNext,Set來獲取或是修改Agent中的信息,而Agent使用GetResponse與Trap來回應或是主動通知Manager。而這些信息又要怎麼表示呢?使用統一的MIB(Management Information Base)來表示吧。編程
看上去很簡單,其實就是很簡單,可拓展性也強。兩種角色:「Manager」與「Agent」,5種命令:「Get」,「GteNext」,「GetResponse」,「Set」和「Trap」,而命令使用標準的MIB格式。網絡
圖1 SNMP網絡層次架構
如圖1所示,有Manager主動發起的命令有3種:「Get」「GetNext」「Set」,對應這三種命令,Agent統統使用GetResponse來回應。但只有這四條命令顯然不行,咱們須要Agent能夠異步的通知Manager一些事情,好比傳感器信息、失火警報、世界末日等等,因而又有了「trap」這條由Agent發起的命令……不過沒看到Manager在收到「trap」信息後要不要回應呢?若是要,要使用什麼格式呢?須要看看。異步
要深刻了解SNMP的能力必需要深入認識MIB到底長什麼樣?適合什麼樣的數據交互。SNMP Agent被安裝在網絡中的一個元素中,可使一個路由器,一個交換機,一個帶網絡功能的設備等等。每一個SNMP Agent管理一系列特定的objects,而每一個object又有一些特定的特性。因而乎,每一個object/characteristic均可以使用一個惟一的ID號來肯定,這就是OID。就是相似於這樣的東西「1.3.6.1.4.1.2682.1」,轉化成圖就是相似於樹形結構。.net
圖2 orm
發現沒有,這貨還真像Windows中的註冊表……其實MIB的責任就是列出一個SNMP網絡中全部設備的OID,至於怎麼存儲,再說吧……至於這貨能不能勝任大容量的信息存儲?如今還不清楚,但若是其真的像Windows中的註冊表,還真的不太適合,可能須要一些輔助的方法。嗯,好比說經過OID獲取的都是實時信息,然後在存儲在數據庫中。那麼網絡重編程怎麼辦?難道使用SET方法?變通一點咯,不必定使用SNMP進行重編程。路由