摘 要:本文首先介紹了網(wǎng)絡(luò)管理中網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)現(xiàn)技術(shù)的研究現(xiàn)狀,并分析了現(xiàn)有的各種方法的優(yōu)點和不足,然后提出了一種發(fā)現(xiàn)網(wǎng)絡(luò)層的拓?fù)浣Y(jié)構(gòu)的改進(jìn)的算法,并對基于Web的網(wǎng)絡(luò)管理中的拓?fù)浣Y(jié)構(gòu)的拓?fù)鋱D的構(gòu)造和顯示問題進(jìn)行了研究,提出了一種方法。實驗結(jié)果表明,該方法具有一定的可行性和有效性。
關(guān)鍵詞:基于Web的網(wǎng)絡(luò)管理;SNMP協(xié)議;拓?fù)浣Y(jié)構(gòu);拓?fù)鋱D構(gòu)造與顯示
中圖分類號:TP393.07
隨著網(wǎng)絡(luò)技術(shù)和互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)的網(wǎng)絡(luò)連接結(jié)構(gòu)變得日益復(fù)雜。那么就需要有能夠?qū)W(wǎng)絡(luò)進(jìn)行配置、監(jiān)控網(wǎng)絡(luò)性能的良好的網(wǎng)絡(luò)管理系統(tǒng)來管理網(wǎng)絡(luò),從而使得互聯(lián)網(wǎng)絡(luò)能夠安全、可靠、穩(wěn)定地運(yùn)行。
1 主要的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法
1.1 基于ICMP協(xié)議的網(wǎng)絡(luò)拓?fù)涮綔y方法
ICMP(Internet Control Message Protocol)協(xié)議作為IP協(xié)議的一部分,它是一種差錯報告機(jī)制,可以用來向目標(biāo)主機(jī)或設(shè)備請求或者報告各種網(wǎng)絡(luò)信息。在基于ICMP協(xié)議的拓?fù)浒l(fā)現(xiàn)中,用到回送請求(Echo Request)和回送應(yīng)答(Echo Reply)這兩種報文。該種方法主要是利用ICMP協(xié)議原理,結(jié)合使用ping命令和traceroute命令來實現(xiàn)。通過ping目標(biāo)主機(jī)或設(shè)備進(jìn)行探測,如果能夠收到目標(biāo)的回送應(yīng)答報文,則可以判斷目標(biāo)存在且是活動的,并記錄其IP地址和子網(wǎng)掩碼。通過traceroute命令向目標(biāo)主機(jī)或設(shè)備發(fā)送不同TTL值的ICMP報文,根據(jù)報文所經(jīng)過的路由器發(fā)回的回送應(yīng)答報文,可以確定出從源主機(jī)到目標(biāo)的路由信息。根據(jù)得到的這些信息,并使用發(fā)現(xiàn)算法和拓?fù)浣Y(jié)構(gòu)的構(gòu)造方法得到拓?fù)鋱D。
該種基于ICMP協(xié)議的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的發(fā)現(xiàn)方法可以應(yīng)用在幾乎所有的網(wǎng)絡(luò)中,因為使用TCP/lP協(xié)議的網(wǎng)絡(luò)主機(jī)和設(shè)備都支持ICMP協(xié)議,這種方法的優(yōu)點是檢測簡單、快速和可靠。但是這種方法向網(wǎng)絡(luò)中的設(shè)備發(fā)出了大量的探測報文,這樣會給網(wǎng)絡(luò)增加負(fù)載,并且也不是所有的目標(biāo)設(shè)備都會回送應(yīng)答報文,因此發(fā)現(xiàn)的效率也并不高。這種方法適用于局域網(wǎng)內(nèi)的拓?fù)浒l(fā)現(xiàn)。
1.2 基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)
SNMP網(wǎng)絡(luò)管理體系結(jié)構(gòu)主要由三部分組成:管理信息結(jié)構(gòu)、SNMP協(xié)議和管理信息庫MIB。其中MIB定義了可以通過網(wǎng)絡(luò)管理協(xié)議訪問的被管理對象的集合,它描述了網(wǎng)絡(luò)主機(jī)或設(shè)備的重要信息。簡單網(wǎng)絡(luò)管理協(xié)議SNMP(Simple Network Management Protocol)是由Internet體系結(jié)構(gòu)委員會所制定的,是因特網(wǎng)中應(yīng)用最廣泛的網(wǎng)絡(luò)管理協(xié)議,目前大多數(shù)網(wǎng)絡(luò)設(shè)備如交換機(jī)、路由器等都支持該協(xié)議,它使用的傳輸層協(xié)議是面向無連接的UDP協(xié)議,無需建立專門的連接,因此這樣就會降低網(wǎng)絡(luò)通信的開銷和負(fù)載。
基于SNMP協(xié)議的拓?fù)浒l(fā)現(xiàn)方法的思想就是通過SNMP協(xié)議從網(wǎng)絡(luò)主機(jī)、交換機(jī)、網(wǎng)橋、路由器等網(wǎng)絡(luò)設(shè)備中的MIB信息庫中獲取設(shè)備和路由信息,其中主要用到的對象有組對象system、interfaces、ip組和兩個表對象ipAddrTable、ipRouteTable。從指定的網(wǎng)關(guān)路由器開始,采用深度或廣度遍歷對網(wǎng)絡(luò)中的設(shè)備進(jìn)行逐個遍歷,通過讀取其MIB庫中的信息,確定其設(shè)備類型及連接關(guān)系。具體來說就是,如果發(fā)現(xiàn)的目標(biāo)設(shè)備中的簡單對象ipForwarding=1且system組中的字段sysService=7,則可判斷該目標(biāo)是路由器;如果ipForwarding=2且sysService=3,則可判斷該目標(biāo)是交換機(jī)或網(wǎng)橋;如果兩者都不是則可判斷目標(biāo)是主機(jī)。如果是路由器,繼續(xù)查詢其MIB中的interfaces組和表ipAddrTable可以獲得路由器的接口信息,然后查詢表ipRouteTable中的變量ipRouteType,若ipRouteType=4,則判斷該端口相連接的是路由器,并根據(jù)其中的ipRouteNextHop來確定下一個發(fā)現(xiàn)的路由設(shè)備;若ipRouteType=3,則判斷該端口相連接的是子網(wǎng)。
綜上所述,該算法的優(yōu)點是系統(tǒng)和網(wǎng)絡(luò)的開銷少、搜索過程和算法簡單,發(fā)現(xiàn)效率高。雖然現(xiàn)在的大多數(shù)主機(jī)和設(shè)備都支持這個協(xié)議,但是也有設(shè)備并未啟動SNMP服務(wù),另外,有的網(wǎng)絡(luò)設(shè)備中的MIB信息庫并不可以隨意訪問的。因此該方法也有一定的局限性。
2 網(wǎng)絡(luò)層的拓?fù)浣Y(jié)構(gòu)發(fā)現(xiàn)算法的改進(jìn)
2.1 算法的改進(jìn)思想
本算法綜合了上述兩種方法的優(yōu)缺點,對使用SNMP協(xié)議的設(shè)備的發(fā)現(xiàn)進(jìn)行了規(guī)模限制,設(shè)置了一個待訪問的路由器總數(shù)的閾值,遍歷每一個路由器時,判斷一下已遍歷的路由器數(shù)目是否小于此閾值,如果是則繼續(xù)訪問下一個路由器,否則算法退出。對于基于ICMP協(xié)議的拓?fù)浒l(fā)現(xiàn)中,防火墻或者網(wǎng)絡(luò)設(shè)備可能會丟棄收到的報文,所以發(fā)送方可能會接收不到被探測設(shè)備的響應(yīng)報文,因此就不能保證發(fā)現(xiàn)的絕對準(zhǔn)確性。通過分析TCP/IP協(xié)議可知,可以采用向被探測設(shè)備發(fā)送錯誤報文的方法來解決這個問題,但是也并不是所有的錯誤報文目標(biāo)設(shè)備都會響應(yīng)。
2.2 算法的描述
具體算法描述如下:
(1)初始化待搜索路由器隊列、待搜素的IP地址隊列、支持SNMP協(xié)議的路由器隊列、不支持SNMP協(xié)議的路由器隊列、子網(wǎng)地址隊列、連接關(guān)系隊列。并設(shè)置要訪問的路由器總數(shù)的閾值為N,初始化計數(shù)變量n=0。
(2)從待搜素的IP地址隊列中取出一個地址,若n++<=N,向該IP地址發(fā)送一個只有IP頭的數(shù)據(jù)包,若有響應(yīng),則執(zhí)行步驟(3)。若n++>N,則算法結(jié)束。
(3)取得該IP地址所屬的子網(wǎng)地址及其缺省路由器地址,將其加入待搜索的路由器隊列。
(4)若待訪問的路由器隊列不為空,從待訪問的路由器隊列中取出一個地址探測,若其支持SNMP協(xié)議,將該路由器添加到支持SNMP路由器隊列,執(zhí)行步驟(5)。若其不支持SNMP協(xié)議,將該路由器加入到不支持SNMP隊列,采用通用協(xié)議算法進(jìn)行發(fā)現(xiàn)。
(5)對其包含的IP地址進(jìn)行SNMP探測。訪問其MIB信息庫,使用前面所講述的方法來判斷出設(shè)備的類型及連接關(guān)系,將發(fā)現(xiàn)的路由器、子網(wǎng)及其連接關(guān)系添加到相應(yīng)的隊列。
(6)重復(fù)步驟(4),直到待搜索的路由器隊列為空,重復(fù)步驟(2),若待搜素IP地址隊列為空,則算法結(jié)束。
3 拓?fù)鋱D的構(gòu)造與顯示
通過網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法確定了網(wǎng)絡(luò)設(shè)備的分布及其連接關(guān)系之后,就要構(gòu)造出拓?fù)鋱D以直觀的方式將網(wǎng)絡(luò)設(shè)備的位置分布以及它們之間的連接關(guān)系顯示出來。在顯示頁面上,按照一定的規(guī)律來分布顯示出拓?fù)浣Y(jié)構(gòu),其中使用不同的結(jié)點來分別表示不同的網(wǎng)絡(luò)設(shè)備,以結(jié)點間的連線來表示設(shè)備之間的連接關(guān)系。
要確定網(wǎng)絡(luò)設(shè)備在拓?fù)浣Y(jié)構(gòu)圖中的位置,就要計算出路由器、子網(wǎng)在圖形界面中的顯示位置的信息,即結(jié)點的坐標(biāo)(x,y)。對于網(wǎng)絡(luò)層拓?fù)鋱D的構(gòu)造,首先將指定的網(wǎng)關(guān)路由器(記為R)放置在顯示頁面的某一個固定位置,可以選擇正中心的位置點,坐標(biāo)記為(x0、y0),將在一定范圍內(nèi)發(fā)現(xiàn)的與該路由器相連的所有的路由器和子網(wǎng)的總數(shù)記為n。而后將其中與之相連的子網(wǎng)分布在以(x0,y0)為圓心,r=(n×c)÷2π(其中c為常數(shù),其中c的取值可以根據(jù)網(wǎng)絡(luò)的規(guī)模來設(shè)定)為半徑的圓周上;將與之相連的路由器分布在以(x0,y0)為圓心,2r為半徑的圓周上,這些路由器和子網(wǎng)交叉均勻分布,并記錄下每個路由器所處的象限。從這里可以看出當(dāng)n值增大時,r值也會增大,這樣取半徑的目的是在路由器數(shù)量較多時,讓圓的半徑大一些,便于結(jié)點圖標(biāo)布局合理,盡量避免重疊。那么這種情況下,與路由器R相連的子網(wǎng)結(jié)點在界面上的顯示位置的坐標(biāo)就可以通過如下的公式計算出來:x=r×cos((2π÷n)×i)+x0,y=r×sin((2π÷n)×i)+y0;路由器結(jié)點的坐標(biāo)可以通過如下公式得出:x=2r×cos((2π÷n)×i)+x0,y=2r×sin((2π÷n)×i)+y0。
然后再采用廣度優(yōu)先的方式將與路由器R相連的所有路由器(記為R1、R2、…Rn)的連接拓?fù)鋱D分別構(gòu)造與顯示出來,以R1為例來說,將與之相連的所有路由器和子網(wǎng)的個數(shù)記為n,R1的坐標(biāo)記為(x0,y0),r=(n×c)÷(2π)(其中c為常數(shù)),分以下三種情況討論:
(1)如果R1在以路由器R為圓心的圓周的第一象限時,將與之相連的子網(wǎng)均勻分布在以(x0,y0)為圓心,r為半徑的圓周的二、三、四象限內(nèi),各個子網(wǎng)結(jié)點在頁面上的位置的坐標(biāo)(x,y)可以通過如下公式計算出來:x=r×cos((3π÷2n1)×i+π/2)+x0,y=r×sin((3π÷2n1)×i+π/2)+y0,其中n1為子網(wǎng)總數(shù);將與之相連的所有路由器均勻分布在以(x0,y0)為圓心,2r為半徑的圓周的第一象限內(nèi),各個路由器結(jié)點的坐標(biāo)可以通過如下公式計算出來:x=2r×cos((π÷2n2)×i)+x0,y=2r×sin((π÷2n2)×i)+y0(n2為路由器總數(shù))。
(2)如果R1在以路由器R為圓心的圓周的第三象限時,將與之相連的子網(wǎng)均勻分布在以(x0,y0)為圓心,r為半徑的圓周的一、二、四象限內(nèi),各個子網(wǎng)結(jié)點在頁面上的顯示位置的坐標(biāo)(x,y)可以通過如下公式計算出來:x=r×cosθ+x0,y=r×sinθ+y0,θ=(3π÷2n1)×i(n1為子網(wǎng)總數(shù)),其中當(dāng)π≤θ≤3π/2時,θ=(3π÷2n1)×i+π/2;將與之相連的路由器分布在以(x0,y0)為圓心,2r為半徑的圓周的第三象限內(nèi),各個路由器結(jié)點的坐標(biāo)可以通過如下公式計算出來:x=2r×cos((π÷2n2)×i+π)+x0,y=2r×sin((π÷2n2)×i+π)+y0(n2為路由器總數(shù))。
(3)如果R1在以路由器R為圓心的圓周的第四象限時,將與之相連的子網(wǎng)均勻分布在以(x0,y0)為圓心,r為半徑的圓周的一、二、三象限內(nèi),各個子網(wǎng)結(jié)點在界面上的顯示位置的坐標(biāo)(x,y)可以通過如下公式計算出來:x=r×cos((3π÷2n1)×i)+x0,y=r×sin((3π÷2n1)×i)+y0(n1為子網(wǎng)總數(shù));將與之相連的路由器分布在以(x0,y0)為圓心,2r為半徑的圓周的第四象限內(nèi),各個路由器結(jié)點的坐標(biāo)可以通過如下公式計算出來:x=2r×cos((π÷2n2)×i+3π/2)+x0,y=2r×sin((π÷2n2)×i+3π/2)+y0(n2為路由器總數(shù))。
用同樣的方法將其它路由器的拓?fù)鋱D分別構(gòu)造出來,然后再采用廣度優(yōu)先的策略將下一層路由器的拓?fù)浣Y(jié)構(gòu)給構(gòu)造出來,其它的以此類推,重復(fù)此工程即可。通過實驗表明,對于一個園區(qū)網(wǎng)內(nèi)部的網(wǎng)絡(luò)管理系統(tǒng)來說,這種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖形構(gòu)造和顯示方法,具有一定的可行性和有效性。
4 結(jié)束語
計算機(jī)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)對網(wǎng)絡(luò)管理是非常重要的,準(zhǔn)確的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息對于網(wǎng)絡(luò)的管理和監(jiān)控及診斷網(wǎng)絡(luò)故障具有重要意義。本文對現(xiàn)在主要的網(wǎng)絡(luò)邏輯拓?fù)浒l(fā)現(xiàn)算法進(jìn)行了比較分析,對于存在的問題提出了改進(jìn)的辦法。實驗結(jié)果表明,該改進(jìn)算法能夠比較準(zhǔn)確地發(fā)現(xiàn)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的信息,提出的拓?fù)鋱D構(gòu)造和顯示方法也具有一定的可行性和現(xiàn)實意義。
參考文獻(xiàn):
[1]謝希仁.計算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2008.
[2]夏海濤,詹志強(qiáng).新一代網(wǎng)絡(luò)管理技術(shù)[M].北京:北京郵電大學(xué)出版社,2010.
[3]李文璟,王智立.網(wǎng)絡(luò)管理原理與技術(shù)[M].北京:人民郵電出版社,2008.
[4]楊立波.網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)技術(shù)研究[J].科技探索,2011(09):90.
作者簡介:馮松軍(1983-),男,河南鄭州人,碩士研究生,主要研究方向:軟件工程及其應(yīng)用、軟件系統(tǒng)形式化、計算機(jī)網(wǎng)絡(luò)。
作者單位:內(nèi)江師范學(xué)院,四川內(nèi)江 641112