摘 要:本文論述了基于Web的網(wǎng)絡(luò)監(jiān)視系統(tǒng)的軟件實(shí)現(xiàn),包括使用SNMP協(xié)議從網(wǎng)絡(luò)設(shè)備上采集網(wǎng)絡(luò)流量信息,數(shù)據(jù)庫設(shè)計,Web流量顯示,實(shí)現(xiàn)了 SNMP協(xié)議中的 GET、SET 、GETNEXT操作。
關(guān)鍵詞:簡單網(wǎng)絡(luò)管理協(xié)議(SNMP) 網(wǎng)絡(luò)監(jiān)視 Web
引言
隨著網(wǎng)絡(luò)的不斷發(fā)展,規(guī)模增大,復(fù)雜性增加,簡單的網(wǎng)絡(luò)管理技術(shù)已不能適應(yīng)網(wǎng)絡(luò)迅速發(fā)展的要求。以往的網(wǎng)絡(luò)管理系統(tǒng)往往是廠商在自己的網(wǎng)絡(luò)系統(tǒng)中開發(fā)的專用系統(tǒng),很難對其他廠商的網(wǎng)絡(luò)系統(tǒng),通信設(shè)備軟件等進(jìn)行管理,這種狀況很不適應(yīng)網(wǎng)絡(luò)異構(gòu)互聯(lián)的發(fā)展趨勢。目前SNMP已成為網(wǎng)絡(luò)管理領(lǐng)域中事實(shí)上的工業(yè)標(biāo)準(zhǔn),并被廣泛支持和應(yīng)用,大多數(shù)網(wǎng)絡(luò)管理系統(tǒng)和平臺都是基于SNMP的,本文所研究的網(wǎng)絡(luò)監(jiān)視系統(tǒng)也是基于SNMP的。
1. SNMP簡介
1.1 概述
SNMP(Simple Network Management Protocol,簡單網(wǎng)絡(luò)管理協(xié)議)首先是由IEIT的研究小組為了解決Internet上的路由器管理問題而提出的。SNMP的設(shè)計原則是簡單性混合擴(kuò)展性。 簡單性是通過信息類型限制、請求響應(yīng)協(xié)議而取得。擴(kuò)展性是通過將管理信息模型與協(xié)議、被管理對象的詳細(xì)規(guī)定(MIB)分離而實(shí)現(xiàn)的。
SNMP的網(wǎng)絡(luò)管理模型包括以下關(guān)鍵元素:管理站、代理者、管理信息庫、網(wǎng)絡(luò)管理協(xié)議。 管理站一般是一個分立的設(shè)備,也可以利用共享系統(tǒng)實(shí)現(xiàn)。管理站作為網(wǎng)絡(luò)管理員與網(wǎng)絡(luò)管理系統(tǒng)的接口,它的基本構(gòu)成為:一組具有分析數(shù)據(jù)、發(fā)現(xiàn)故障等功能的管理員程序;一個用于網(wǎng)絡(luò)管理員監(jiān)控網(wǎng)絡(luò)的接口;將網(wǎng)絡(luò)管理員的要求轉(zhuǎn)變?yōu)閷h(yuǎn)程網(wǎng)絡(luò)元素的實(shí)際監(jiān)控的能力;一個從所有被管網(wǎng)絡(luò)實(shí)體的MIB中抽取信息的數(shù)據(jù)庫。
網(wǎng)絡(luò)管理系統(tǒng)中另一個重要元素是代理者。裝備了SNMP的平臺,如主機(jī)、網(wǎng)橋、路由器及集線器均可作為代理者工作。代理者對來自管理站的信息請求和動作請求進(jìn)行應(yīng)答,并隨機(jī)地為管理站報告一些重要的意外事件。
管理站和代理者之間通過網(wǎng)絡(luò)管理協(xié)議通信,SNMP通信協(xié)議主要包括以下能力:
(1) Get:管理站讀取代理者處對象的值。
(2) Set:管理站設(shè)置代理者處對象的值。
(3) Trap:代理者向管理站通報重要事件。
1.2 SNMP協(xié)議數(shù)據(jù)單元
SNMP規(guī)定了5種協(xié)議數(shù)據(jù)單元PDU(也就是SNMP報文) ,用來在管理進(jìn)程和代理之間的交換。Get-request 操作:從代理進(jìn)程處提取一個或多個參數(shù)值。Get-next-request操作:從代理進(jìn)程處提取緊跟當(dāng)前參數(shù)值的下一個參數(shù)值。Set-request操作:設(shè)置代理進(jìn)程的一個或多個參數(shù)值。Get-response操作:返回的一個或多個參數(shù)值。這個操作是由代理進(jìn)程發(fā)出的,它是前面三種操作的響應(yīng)操作。Trap操作:代理進(jìn)程主動發(fā)出的報文,通知管理進(jìn)程有某些事情發(fā)生。
前面的3種操作是由管理進(jìn)程向代理進(jìn)程發(fā)出的,后面的2個操作時代理進(jìn)程發(fā)給管理進(jìn)程的,為了簡化起見,前面3個操作以下叫做Get、Get-next和Set操作。圖2.1描述了SNMP的這5種報文操作。請注意,在代理進(jìn)程端是用熟知端口161來接收Get或Set報文,而在管理進(jìn)程端是用熟知端口162來接收Trap報文。

圖1.1封裝成UDP數(shù)據(jù)報的5種操作的SNMP報文格式。可見一個SNMP報文共有三個部分組成,即公共SNMP首部、Get/Set首部Trap首部、變量綁定。
1.3 WinSNMP
WinSNMP的目的是為在Windows下開發(fā)基于SNMP的網(wǎng)絡(luò)管理程序提供解決方案。它為SNMP網(wǎng)管開發(fā)者提供了必須循環(huán)的開放式單一接口規(guī)范,它定義了過程調(diào)用、數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)和相關(guān)的語法。
2. 系統(tǒng)總體設(shè)計
2.1 系統(tǒng)總體構(gòu)架
本系統(tǒng)的研究目標(biāo)是在Web環(huán)境下實(shí)現(xiàn)網(wǎng)絡(luò)流量的可視化監(jiān)視系統(tǒng),系統(tǒng)具有以下基本功能:
(1)周期性(本系統(tǒng)設(shè)置為每分鐘)訪問被管設(shè)備的SNMP代理,獲取MIB庫中相關(guān)數(shù)據(jù),分析數(shù)據(jù)并將原始數(shù)據(jù)存儲在SQL SERVER數(shù)據(jù)庫中。對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行分析,并以可視化的形式將統(tǒng)計結(jié)果顯示在瀏覽器上。
(2)本系統(tǒng)涉及的部件有:代理、流量數(shù)據(jù)采集部件、SQL SERVER 數(shù)據(jù)庫、統(tǒng)計分析模塊、Web服務(wù)器和瀏覽器。代理駐留在設(shè)備中,流量數(shù)據(jù)采集部件利用標(biāo)準(zhǔn)的SNMP協(xié)議從代理中取得數(shù)據(jù)。在本系統(tǒng)中,代理是指單位交換機(jī)中的代理程序,本系統(tǒng)不考慮它的實(shí)現(xiàn)。數(shù)據(jù)采集部件利用了微軟提供的WinSNMP程序包,在它的基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)采集功能。數(shù)據(jù)層采用了SQL SERVER 數(shù)據(jù)庫,SQL SERVER數(shù)據(jù)庫是一個高效的數(shù)據(jù)庫管理系統(tǒng),具有多用戶存取的特點(diǎn),該特點(diǎn)對本系統(tǒng)今后的改進(jìn)和升級意義重大。在Web SERVER 層,本系統(tǒng)采用了流行的ASP.NET技術(shù),實(shí)時從數(shù)據(jù)庫獲取數(shù)據(jù),然后以圖形方式寫入瀏覽器。
由此,本系統(tǒng)在設(shè)計之初分為三大模塊:
①SQL SERVER數(shù)據(jù)庫模塊。
②流量數(shù)據(jù)采集模塊。
③Web模塊。
整個系統(tǒng)描述如圖所示:

本系統(tǒng)的軟件層次結(jié)構(gòu)分為四層,直接面向用戶的最高層為流量數(shù)據(jù)顯示層和統(tǒng)計分析層。統(tǒng)計分析從數(shù)據(jù)庫中獲取數(shù)據(jù),流量顯示是基于B/S構(gòu)架的,可以從任何一臺計算機(jī)中通過瀏覽器實(shí)時地看到流量的顯示。Web服務(wù)器也從數(shù)據(jù)庫中獲取數(shù)據(jù),經(jīng)過處理以圖形方式傳給瀏覽器。數(shù)據(jù)庫中的數(shù)據(jù)是數(shù)據(jù)采集模塊采集過來的。數(shù)據(jù)采集基于WinSNMP的。使用的協(xié)議是SNMP協(xié)議。
流量數(shù)據(jù)采集模塊從指定的IP地址采集網(wǎng)絡(luò)流量信息,這些信息包括:系統(tǒng)描述、SysObjectOid、系統(tǒng)名、管理員名、收到/發(fā)送的TC包、收到/發(fā)送的UDP包、收到/發(fā)送的IP包。并且每隔一分鐘將收到的TCP,UDP,IP包信息相加計算出一分鐘內(nèi)該路由器發(fā)送/接受的總流量,將這些信息插入數(shù)據(jù)庫symptom的winsnmp——collection表。
2.2 開發(fā)環(huán)境搭建和配置
①服務(wù)器搭建,搭建兩臺基于Windows 2000服務(wù)器A和B。
②配置開發(fā)環(huán)境,服務(wù)器A上安裝VISUAL C++6.0,WINSNMP包程序 SQL SERVER2000;服務(wù)器B上安裝MICOSOFT VISUAL STUDIO.NET。(.NET的框架使服務(wù)器支持ASP.NET)
③數(shù)據(jù)庫模塊設(shè)計,在服務(wù)器A上新建數(shù)據(jù)庫symptom,并建winsnmp_collection表。
④編寫流量數(shù)據(jù)采集模塊,在服務(wù)器A 上使用VISUAL C++ 編寫流量數(shù)據(jù)采集模塊,并將采集的信息存儲進(jìn)symptom數(shù)據(jù)庫的winsnmp_collection表。
⑤編寫Web模塊,在服務(wù)器B上連接服務(wù)器A上的symptom數(shù)據(jù)庫的winsnmp_collection表并且將數(shù)據(jù)讀出,然后在Web瀏覽器中以圖表形式表現(xiàn)出來。
2.3 功能模塊簡介
服務(wù)器和開發(fā)環(huán)境組建完畢即可開始實(shí)現(xiàn)各模塊的功能了,各模塊設(shè)計說明如下:

2.3.1 數(shù)據(jù)庫模塊簡介
開發(fā)平臺:WINDOWS 2000 SP3 +SQL SERVER。
數(shù)據(jù)庫模塊說明:因?yàn)榫W(wǎng)絡(luò)流量巨大,且變化較快對數(shù)據(jù)庫的穩(wěn)定性和速度要求較高。因此選擇使用SQL SERVER數(shù)據(jù)庫來存儲網(wǎng)絡(luò)流量信息。
功能說明:存儲網(wǎng)絡(luò)流量數(shù)據(jù)信息,將流量數(shù)據(jù)采集模塊采集到的數(shù)據(jù)存儲起來,供當(dāng)Web模塊顯示之用和供日后進(jìn)行網(wǎng)絡(luò)流量分析所用。Winsnmp-collection及表中各個表項介紹如下:
2.3.2 數(shù)據(jù)流量采集模塊簡介
開發(fā)環(huán)境:WINDOWS 2000 SP3 + VISUAL C++ MG-SOFT WINSNMP。
功能說明:數(shù)據(jù)流量采集模塊的任務(wù)是監(jiān)視目標(biāo)IP地址的網(wǎng)絡(luò)流量吞吐情況,并將這些信息存儲在數(shù)據(jù)庫中。
該模塊是在VC++環(huán)境下調(diào)用WinSNMP的相關(guān)函數(shù)來采集網(wǎng)絡(luò)流量信息,并利用ADO實(shí)現(xiàn)數(shù)據(jù)庫接口。采集到的數(shù)據(jù)根據(jù)MIB庫對數(shù)據(jù)進(jìn)行分析然后分類存儲進(jìn)數(shù)據(jù)庫。
對信息進(jìn)行分析,包括遠(yuǎn)端路由器接收/發(fā)送的IP包,TCP包,UDP包,和路由器的信息等。將分析的數(shù)據(jù)插入數(shù)據(jù)庫。
2.3.3 Web模塊簡介
開發(fā)環(huán)境:WINDOWS 2000 SP3 +ASP.NET(C#) +DUNDAS CHART。
功能說明:Web塊的主要任務(wù)是將服務(wù)器A上的SQL SERVER數(shù)據(jù)庫中的內(nèi)容讀出來,然后在Web上以圖片的形式顯示出來。利用ADO在ASP.NET環(huán)境下實(shí)現(xiàn)數(shù)據(jù)庫接口,連上數(shù)據(jù)庫后可以使用SQL語句來檢索更新刪除數(shù)據(jù)庫中的數(shù)據(jù)信息。在ASP.NET以圖表的形式將數(shù)據(jù)表現(xiàn)。
實(shí)際意義:能夠很好地解決分布式服務(wù)器的網(wǎng)絡(luò)管理,方便網(wǎng)絡(luò)管理者在異地維護(hù)網(wǎng)絡(luò)和查看網(wǎng)絡(luò)流量等信息。
3. 網(wǎng)絡(luò)監(jiān)視系統(tǒng)三大模塊的具體實(shí)現(xiàn)
3.1 數(shù)據(jù)庫模塊實(shí)現(xiàn)
建立SQL SERVER數(shù)據(jù)庫的實(shí)現(xiàn)具體步驟如下:
(1) 啟動“SQL SERVER服務(wù)管理器”;
(2) 打開“企業(yè)管理器”;
(3) 點(diǎn)開本地數(shù)據(jù)庫,并且新建立一個名為symptom的數(shù)據(jù)庫;
(4) 在symptom數(shù)據(jù)庫中添加名為winsnmp_collection的表,將表的操作權(quán)限設(shè)置為可SELECT,UPDATE,DELECT數(shù)據(jù)庫至此搭建完畢,啟動SQL SERVER服務(wù)管理器,數(shù)據(jù)庫即開始運(yùn)行。

Web模塊實(shí)現(xiàn)的第一步即連接SQL SERVER數(shù)據(jù)庫,然后利用ADO連接SQL SERVER數(shù)據(jù)庫:在圖象顯示功能方面,以線形圖來顯示流量變化。
結(jié)束語
本文主要采用了WinSNMPAPI實(shí)現(xiàn)了一個簡單的基于SNMP的網(wǎng)絡(luò)監(jiān)視系統(tǒng),網(wǎng)絡(luò)數(shù)據(jù)庫和一個NET環(huán)境下的Web顯示程序,并實(shí)現(xiàn)了 SNMP協(xié)議中的 Get、Set 、Get next操作。
參考文獻(xiàn):
[1]IETE.RFC1905 Protocol Operations for Version 2 of the Simple Network Management Protocol(SNMPv2)[S].1996年1月.
[2]http://www.8181.net.cn/magazine/html/214/214764.htm.
[3]黃基前.理解SNMP、SNMP++及用VC++6.0實(shí)現(xiàn)Window SNMP編程[J].程序員,2001年,第一期.
[4]吳剛,白英彩.基于Web的網(wǎng)絡(luò)管理技術(shù)研究和設(shè)計[J].計算機(jī)工程,1999年9月,第22卷,第9期:22-24.