1. 程式人生 > >基於SNMP網絡管理系統的實現

基於SNMP網絡管理系統的實現

SNMP 個推

個推作為國內最專業的第三方消息推送技術解決方案的服務商接入SDK用戶數高達90億,日活躍用戶達6.5億。日分發消息23億。在實際的運維環境中,需要時刻對網絡設備進行監控和管理,並包含了各種網絡設備,包括交換機,路由器,服務器等等。

網絡是計算機通信網的重要組成部分,它通過互連和協同工作來構成大範圍的信息處理系統。網絡管理指通過監督,組織,控制網絡通信服務和信息處理等活動,確保計算機網絡的持續正常運行,並在運行出現異常時及時響應和排除故障。如何有效的進行區域內網絡的管理是計算機網絡能夠有效,可靠,安全,經濟的提供服務的重要保障。

認識SNMP協議
意義價值:SNMP協議可以為不同廠家,不同類型,不同型號的設備,定義一個統一的接口和協議,使得管理員可以通過網絡,使用通用的規則管理位於不同物理空間的設備,從而大大提高網絡管理的效率,簡化網絡管理員的工作。

技術分享圖片
SNMP協議處於OSI七層模型中的應用層協議。在1988年被制定,並被Internet體系結構委員會(IAB)采納作為一個短期的網絡管理解決方案;由於SNMP的簡單性,在Internet時代得到了蓬勃的發展,1992年發布了SNMPv2版本,以增強SNMPv1的安全性和功能。現在,已經有了SNMPv3版本。目前大部分的網絡設備如交換機,路由器等都支持SNMP協議規範,SNMP協議已經成為了網絡管理領域中的工業標準。

一套完整的SNMP網絡設備監控系統系統主要包括管理信息庫(MIB)、管理信息結構(SMI)及SNMP報文協議,管理工作站利用SNMP進行遠程監控管理網絡上的所有支持這種協議的設備(如計算機工作站、終端、路由器、Hub、網絡打印機等),主要負責監視設備狀態、修改設備配置、接受事件警告等。

技術分享圖片
SNMP消息
在OSI模型中,傳輸層的數據單元也稱為數據包(packets)。SNMP采用的是UDP(用戶數據報協議)作為其傳輸層協議,並為SNMP提供網絡服務,UDP協議的數據單元稱為數據報(datagrams)。因為UDP是一種不可靠的數據報服務,所以並不能保證UDP數據報一定能達到目的,但是掉包問題並不對網絡管理產生大的影響。SNMP消息包含兩個部分:SNMP報頭和協議數據單元PDU(Protocol Data Unit),其中SNMP報頭包括SNMP版本號和團體名。SNMP版本號目前有三種:Version1、Version2、Version3。團體標識可以作為SNMP消息的口令,缺省值為"public"。查看SNMP版本聯系和區別(http://blog.csdn.net/zyboy2000/article/details/7221687)

Get_Request:Manager端向Agent端發送讀取信息的請求;

Get_ Next_Request:Manager端向Agent端 發送Get-Request組合起來查詢特定的表對象中的列元素。

Get_Response:Agent端對Manager端請求的響應;(被動響應)

Set_Request:Manager端向Agent端發送設備設置信息,Agent端可根據設置信息來改變設備狀態(包括設備名、設備屬性、刪除設備或使某一個設備屬性有效/無效等);

Trap:當Agent端發生某些事件時,Agent端主動向Manager端發送陷阱信息,如關機事件。

SNMP4J簡介
SNMP4J 是一個企業級的免費開源的SNMP API for Java的類庫。基於JAVASE 1.4及以上。官網位於http://www.snmp4j.org/,提供相關JavaDoc和wiki。
技術分享圖片
Java Demo(實現對某一網絡主機獲取主機名稱)
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
SNMPTest.getRequest的Console:
OID: 1.3.6.1.2.1.1.5.0
Value: com-router

SNMP4J 重要的類和接口
Snmp:該包中的核心類,它提供發送和接受SNMP PDU的方法。擁有同步和異步的兩種方式。Snmp和傳輸協議無關。支持添加特定TransportMapping實例通過調用addTransportMapping(TransportMapping TransportMapping)方法或使用非默認的構造函數創建一個Snmp實例與相應的傳輸映射。傳輸映射用於傳入和傳出消息。
TransportMapping:該接口代表了SNMP4J所使用的傳輸層協議。這也是SNMP4J一大特色的地方。按照RFC的規定,SNMP是只使用UDP作為傳輸層協議的。而SNMP4J支持管理端和代理端使用UDP或者TCP進行傳輸。該接口有兩個子接口。
PDU:PDU類代表一個SNMP協議數據單元。PDU(針對Snmpv2c)、PDUv1(針對Snmpv1)、ScopedPDU(針對Snmpv3),但三個類除各自特別的一些參數外,都基本相同。PDU作為基類,往往足夠提供大部分的特性。
Target*:一個Target接口定義了遠程SNMP實體的抽象表示。帶有一個地址對象,以及協議參數,比如重試次數和超時時間等。對於SNMPv1和SNMPv2c,適用CommunityTarget的實現。SNMPv3,適用UserTarget。
SNMP4J API調用流程

創建協議。一般可以使用DefaultUdpTransportMapping實例,作為傳輸層協議。

創建SNMP對象。填充TransportMapping作為構造參數。

開啟監聽。

構造目標。設置Address,版本號,重試次數,超時時間等參數。

創建報文(PDU)。設置請求方式,查詢的OID。

發送報文。同步方式:調用snmp.send 方法;異步方式:需要設置監聽器。

獲取ResponseEvent。同步方式阻塞返回,異步方式在監聽線程中的回調函數中獲得。ResponseEvent.getResponse(),獲取回復報文。

釋放資源。Snmp.close()。

SNMP網絡管理系統
一個SNMP管理的網絡包含三個主要部分:被管理設備、代理和網絡管理系統(NMS)。被管理設備就是處於被管理的網絡中的多個設備,負責收集和存儲管理信息;代理是安裝在被管理設備中的軟件程序(如大部分交換機自帶SNMP代理程序,僅需開啟即可);網絡管理系統就是用於監控被管理設備執行狀態的軟件系統。SNMP進行網絡管理時,一般采用Manager/Agent結構集中式管理信息的方式,管理工作站為Manager端,網絡中的各個設備為Agent端。
技術分享圖片
SMI管理消息結構
管理信息結構SMI是SNMP的基礎部分,定義了SNMP框架所使用的信息的組成,結構和表示,為描述MIB對象和協議如何交換信息奠定了基礎。

MIB管理消息庫
在復雜的網絡環境中,網絡設備的類型各式各樣,所以設備的信息也因設備類型不同而不同,為了將這些信息能通過網絡管理系統進行管理,必須采用一套標準來描述這些設備的信息,所以SNMP定義了MIB(Management Information Base)。MIB分為標準MIB和私有MIB,標準MIB適用於所有網絡設備,而私有的MIB則由設備廠家向有關機構申請後自行定義。MIB采用樹狀結構,每個節點每個結點分配了一個字符串和一個小整數作為標號,即OID(Object Identifier)。
技術分享圖片
MIB結構樹中任一對象的名字就是從根到對象結點的路徑上各個節點的標號序列,標號之間用點分隔。如被管理設備中每個網絡接口的IP地址信息表示為:iso.org.dod.internet.mgmt.mid.ip,它的數字表示為:1.3.6.1.2.1.4。

標準MIB的基本OID以為1.3.6.1.2.1前綴,而私有的MIB的基本OID以為1.3.6.1.4.1前綴。如果在某一節點下有多個信息,則以列表方式存在,比如IP地址信息中包括子網掩碼、網關地址等。

網絡環境拓撲圖
技術分享圖片
系統設計圖
技術分享圖片
系統案例和效果

基於SNMP網絡管理系統的實現,完美解決了跨設備,跨物理位置的網絡設備的監控和管理。實時監控當前設備的狀態,網絡流入流出速率,cpu/內存的使用狀況 等必要信息。
如比當天的流量實時監控:
技術分享圖片
網絡管理員可以對設備集中的進行監控和管理,並且直觀的從界面中獲取實時流量數據,分析當前網絡設備的當前狀態,即時相應處理和維護。

基於SNMP網絡管理系統的實現