◆武 韡 石亞軍
(湖北三峽職業技術學院 湖北 443000)
基于SNMP協議的網絡預警系統的分析與設計
◆武 韡 石亞軍
(湖北三峽職業技術學院 湖北 443000)
復雜網絡由交換機、路由器、服務器等多種設備組成,所有設備正常運行且為最佳的狀態是一件耗時耗力的事情,再加上用戶私自更改IP,ARP病毒欺騙等現象使網絡管理更加困難。本文設計的系統采用基于SNMP協議自主開發,在windows平臺上采用MySQL數據庫,通過ODBC連接,在充分理解SNMP協議編碼原理的基礎上,從底層開發,實現網絡預警功能。
網絡設備;SNMP;網絡預警
目前網絡管理的產品幾乎都支持SNMP協議,但真正擁有網絡管理五個大的功能的網絡系統不是很多[1]。IBM的NetView等軟件雖然都做得比較成熟,但針對中小型企業仍然有些問題不宜解決:開發擴展插件復雜,需要很大的精力研究其接口,無法短期內實現想要的功能;不提供對所需要的監控數據(ip-mac,mac-port)的采集。
有鑒于此,本網絡監視系統的主要考慮以下方面:不借助第三方SNMP控件產品,直接從底層開發,有利于移植;采用獨立的MySQL數據庫,有利于數據的保存和再次利用;獨立的配置文件,管理簡潔方便;采用SNMPv2c的getBulkRequest采集數據,減少網絡管理流量;預留了web擴展接口,有利于B/S模式網絡信息的發布。
首先在Windows平臺上,對網絡設備中的數據進行周期性采集;然后將采集到的原始流量數據存儲在數據庫中;在程序界面能實時從數據庫獲取數據,從而實現對網絡數據的監視[2]。
本系統的設計分為三大模塊,涉及的部件有:代理、流量數據采集部件、MySQL數據庫、顯示模塊,整個系統描述如圖1所示。

圖1 系統描述
流量數據采集模塊從指定的IP地址采集網絡流量信息,這些信息包括:arp-mac對應表,mac-port對應表,并且每隔10分鐘采集一次,將這些信息存入數據庫switchdb的arpinfo表和portinfo表中。
選擇使用MySQL數據庫來存儲網絡流量信息是由于網絡流量巨大且變化較快[3]。將流量數據采集模塊采集到的數據存儲起來,供當模塊顯示之用和供日后進行網絡流量分析所用。switchdb數據庫及表中各個表項如表1、2所示。

表1 Arpinfo
arpinfo表用于存儲用戶IP地址和MAC地址的映射關系,switch_ip字段存儲要采集數據的交換機ip地址;user_ip字段用于存儲交換機上用戶對應的ip地址;user_mac字段用于存儲交換機上用戶ip對應的mac地址;by_time字段存儲采集數據的時間,此字段主要為了核查數據時使用,精確到秒。

表2 Portinfo
portinfo表主要用于mac地址所對應的交換機端口號,switch_port字段是用于存儲mac地址對應的交換機的物理端口號。
對相關MIB數據進行采集時,一次采集的結果僅反映可采集當時的數值,所以對MIB數據的采集在代理上存儲的是一個動態的量。如果單獨的一個數值離開了時間的概念的話,就沒有意義了。對于此一類的數據,系統需要周期性地進行查詢,并和每次查詢的時間結合起來,才能得到我們需要的有效的結果[4]。系統初始化如圖2所示,系統采集流程如圖3所示。

圖2 系統初始化

圖3 系統采集流程圖
生成SNMPv2c的GetBulkRequestPDU是數據讀取實現的關鍵[5]。在讀取數據的時候,需要調用構造GetBulkRequest PDU的CreateSNMPBulk()函數(根據GetBulkRequest PDU的格式自己編寫的函數),因為是從底層構造PDU。完成GetBulkRequest PDU的構造后,封裝后才能發送,所以需要調用另一個自己編寫的封裝函數EncodeSNMPPDU()。當得ResponsePDU時,通過DecodeSNMPPDU()函數實現對數據報的抽取,得到相應的數據存入數據庫。函數EncodeSNMPPDU()函數和DecodeSNMPPDU()函數流程圖4、5所示。

圖4 EncodeSNMPPDU()函數流程圖

圖5 DecodeSNMPPDU()函數流程圖
用戶通過鼠標的操作,就可以對各個數據進行查詢,主要功能如下:
(1)將交換機中的arp表和mac-port表顯示在屏幕上。
(2)顯示將交換機中的數據成功入庫。
(3)連接指定的交換機。
(4)顯示系統設置信息。
(5)顯示交換機的讀取信息。
首先與數據庫的連接要進行初始化,然后調用對應的函數來執行用戶操作。
本設計主要采用了底層開發構造數據包,實現了一個基于SNMP的網絡監視系統、網絡數據庫和顯示程序。其中實現了SNMP協議中的Get操作,具有簡單性和擴展性,可批量獲取本機及遠程網絡設備的Arp-Ip對應表和mac-port對應表數據,管理員能借此對網絡中的用戶情況,如Arp病毒,分析監控,采取適當的措施。同時通過對數據庫的操作,可以繼續擴展成web上的顯示應用。
[1]黎皓.基于SNMP的網絡性能管理系統研究[J].通訊世界,2013.
[2]楊勇,李軍,張越培.異構網絡中SNMP數據采集監測系統研究[J].計算機技術與發展,2014.
[3]鄧江安,金晟.基于Web和SNMP的網絡用戶管理系統[J].計算機與網絡,2014.
[4]蔡洪民,鐘隆著.基于統計的校園網異常流量檢測系統設計與實現[J].計算機安全,2014.
[5]陳建國.基于SNMP的計算機性能監控系統設計與實現[J].福建工程學院學報,2014.

圖1 系統測試結果
本應用系統模擬創建25個虛擬用戶(VU),在5分鐘內一共進行了2735次請求操作,對用戶詳情頁進行渲染,結果如圖1所示,在虛擬用戶數緩慢增加過程中,系統基本保持平穩運行。
本文中提出的前端架構設計模式,以實際網站前端架設為例,介紹了本架構的實現方法,通過測試結果發現,本前端框架對于改善前端加載速率和處理并發性上有顯著優勢,為互聯網前端的建設提出了更好的解決方案。
參考文獻:
[1]曹劉陽.編寫高質量代碼:Web 前端開發修煉之道[J].Web開發,2010
[2]張紫微.Web前端性能優化的研究與應用[D].成都:電子科技大學,2010.
[3]連志剛.Web系統性能測試過程模型研究[D].西安:西北大學,2012.
[4]勇浩晨.淺談Struts在web應用中對MVC的實現[J].天府新論,2007.