基于SNMP的網(wǎng)絡(luò)監(jiān)控系統(tǒng)研究與設(shè)計
4 系統(tǒng)實現(xiàn)
4.1 環(huán)狀權(quán)值分布
拓撲圖的排序算法被叫“環(huán)狀權(quán)值分布”,主要是因為引入了設(shè)備在網(wǎng)絡(luò)中 “權(quán)重”的概念。由于布局的主要目的是讓主要設(shè)備能夠分布且合理定位在屏幕上,所以拓撲布局的算法首先是找出那些“權(quán)重”最高的設(shè)備,并依此排序進行設(shè)備定位。算法主要的步驟有:
(1)設(shè)備按“權(quán)重”排序。系統(tǒng)主要面向的是路由及交換設(shè)備,所以對拓撲圖最為敏感的信息就是“路由”信息。如果一個設(shè)備核心的路由數(shù)量高于其他的設(shè)備,則該設(shè)備就是所謂的“核心設(shè)備”。
(2)最高權(quán)重優(yōu)先定位。步驟(1)已經(jīng)確定了最為核心的設(shè)備以及按“權(quán)值”排序后的設(shè)備分組。最為核心的設(shè)備是第一組,它們將以屏幕正中央為圓心,均勻分布在某個半徑的圓圈上。半徑的確定取決于要定位的設(shè)備數(shù)量,數(shù)量越多半徑值越大。當這些設(shè)備定位結(jié)束時,也就確定了此設(shè)備在屏幕中心點的角度(∠θ),此角度將作為下個步驟定位的依據(jù)。
(3)“衛(wèi)星”設(shè)備布局。與核心設(shè)備相聯(lián)接的設(shè)備都歸類為該核心設(shè)備的衛(wèi)星設(shè)備, “衛(wèi)星”設(shè)備的具體分布算法如下:
假定有n個核心設(shè)備,那么每個核心設(shè)備的衛(wèi)星設(shè)備只可以分布在360/n的扇形范圍內(nèi),如圖3所示。
圖3中有3個核心設(shè)備,被分為A、B、C三個扇形區(qū)域,以R2為例,它的3個衛(wèi)星設(shè)備就分布在B區(qū)域,且在B扇形內(nèi)根據(jù)∠θ均勻分布,半徑會以衛(wèi)星設(shè)備的數(shù)量作相應(yīng)的修正。
(4)繪制鏈路連線。核心設(shè)備區(qū)域的連線允許交錯,因為這部分的連線幾乎不太可能做到不交叉。由于分布是基于環(huán)的,所以連線即便有交錯,問題也不會很嚴重。衛(wèi)星設(shè)備的連線主要是對上一個設(shè)備的,這種情況下可以直連,如果衛(wèi)星設(shè)備之間有連線,則可對衛(wèi)星設(shè)備的布局會做一些小調(diào)整,盡量不出現(xiàn)連線的過度交叉。
此時如果發(fā)現(xiàn)x設(shè)備與z設(shè)備間有連線,就會根據(jù)屏幕上的空間對x或z的位置做一些小的調(diào)整,以讓x與z的連線分布得更為合理。
4.2 MIB模塊的實現(xiàn)
為命名方便,基于簡單網(wǎng)絡(luò)管理協(xié)議的網(wǎng)絡(luò)監(jiān)控系統(tǒng)簡稱為SNMS。根據(jù)MIB的命名方式,在1.3.6.1.4.1節(jié)點下自定義了一個名為Tute(888)的節(jié)點,在該節(jié)點下定義SNMS(1)節(jié)點。
定義了MIB中的對象標識符以后,就需要對軟件只能夠涉及到的、需要管理的對象進行劃分,在此,將SNMS這個系統(tǒng)分為system、user和file三部分,分別定義為system(1)、user(2)和file(3),如圖4所示。
4.3 Trap模塊的實現(xiàn)
為了使軟件在設(shè)備出現(xiàn)事件時能得到通知,在SNMP這個背景下就意味著需要一種能夠接收Trap的機制。設(shè)備在自己所能夠支持的事件范圍內(nèi),通過定義不同含義的Trap報文,按照設(shè)備自身所配置的接收對象將Trap發(fā)送出去。
4.3.1 統(tǒng)一偵聽Trap版本
SNMP協(xié)議不同的版本對應(yīng)著不同的Trap格式。然而對SNMS自身來說,這些Trap的版本并沒有什么意義,軟件所需要的僅僅是必要的標識和對應(yīng)標識的意義。所以需要一種機制將這些版本的Trap進行統(tǒng)一。
軟件采用的方式是使用中間層來代理。使用TrapMonitor來偵聽所有版本的Trap,通過不同的處理最終觸
發(fā)TrapComing事件,并將處理之后生成的TrapInfoEventArgs傳入,供訂閱者使用。
4.3.2 Trap信息翻譯
Trap包含的信息成百上千,若都由軟件來解析其信息將是一件非常耗時且龐大的工程。況且由于SNMP自身的可擴展性,軟件無法預測其后出現(xiàn)的新Trap定義,所以考慮這樣一種機制:對Trap進行建模,將其核心抽象為一種可擴展可配置的模式。
這種機制使得軟件可以輕松適應(yīng)不同的場景,而且部署起來也很方便。軟件自身也集成了Trap信息的配置功能,可以避免手動接觸XML文件。
4.3.3 Trap過濾
如何過濾出有用的Trap信息非常關(guān)鍵,這是由系統(tǒng)的“管理”性質(zhì)決定的。系統(tǒng)決定采用一種類似于網(wǎng)絡(luò)ACL的做法,提出了白名單和黑名單的過濾模式。類似于Trap信息翻譯,系統(tǒng)也采用了基于XML的做法,將過濾規(guī)則保存在更加靈活部署的XML文件中。這里白名單是指所有Trap到達后只顯示名單中規(guī)則匹配的Trap;黑名單是指所有Trap到達后不顯示規(guī)則匹配的Trap。
5 測試及部署
最終的測試環(huán)境選用了最為常用的網(wǎng)絡(luò)設(shè)備——中型路由式數(shù)據(jù)交換網(wǎng)絡(luò)。環(huán)境使用5臺Cisco 7200路由器與7臺Cisco 3640交換機搭建,并配置了相關(guān)的路由協(xié)議,最后開啟SNMP功能和Trap功能。
系統(tǒng)對“中型路由式數(shù)據(jù)交換網(wǎng)絡(luò)”環(huán)境進行拓撲發(fā)現(xiàn),測試效果如圖5所示。
圖6是在一個真實網(wǎng)絡(luò)環(huán)境中進行系統(tǒng)測試得到的網(wǎng)絡(luò)拓撲。
作為基于SNMP的上層應(yīng)用軟件系統(tǒng),軟件除了實現(xiàn)核心的拓撲發(fā)現(xiàn)機制與拓撲布局外,還不斷地完善軟件框架,使其能適應(yīng)不同的上層開發(fā)。軟件理想的演進路線是做成一個基于SNMP的基礎(chǔ)框架,在此框架之上可以不斷地擴充應(yīng)用。由于SNMP協(xié)議本身的成熟性,這種需求的框架有著很大的潛力。
評論