国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法研究

2014-11-10 14:59:13焦彥平李唱陳東寧
科技創(chuàng)新導(dǎo)報 2014年20期

焦彥平++李唱++陳東寧

摘 要:隨著網(wǎng)絡(luò)的不斷發(fā)展,其拓?fù)浣Y(jié)構(gòu)變得越來越復(fù)雜,其獲取也變得越來越困難,該文介紹分析了網(wǎng)絡(luò)拓?fù)浼夹g(shù)的發(fā)展現(xiàn)狀,分析了現(xiàn)有網(wǎng)絡(luò)拓?fù)浼夹g(shù)的不足,并且提出了基于STP、SNMP和ICMP三種常見協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法。

關(guān)鍵詞:網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn) STP SNMP ICMP

中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2014)07(b)-0046-05

隨著網(wǎng)絡(luò)的不斷發(fā)展與普及,網(wǎng)絡(luò)的規(guī)模變得越來越大,網(wǎng)絡(luò)的結(jié)構(gòu)變得越來越復(fù)雜,對網(wǎng)絡(luò)進(jìn)行有效的管理和控制是保證網(wǎng)絡(luò)處在正常高效運(yùn)轉(zhuǎn)的關(guān)鍵。但對網(wǎng)絡(luò)進(jìn)行有效的管理首先要獲得網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),而網(wǎng)絡(luò)的結(jié)構(gòu)復(fù)雜、節(jié)點(diǎn)數(shù)目繁多,靠人工統(tǒng)計往往是行不通的,而目前的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)技術(shù)又存在著一定的不足,所以研究更加有效的手段來得到網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)具有重大的意義。

1 網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法研究

在網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)技術(shù)方面,美國康奈爾大學(xué)的CNRG網(wǎng)絡(luò)研究組、CAIDA組織的Skitter [1]和貝爾實驗室在這方面都有了深入的研究,他們設(shè)計的算法及其技術(shù)都已經(jīng)具有較好的應(yīng)用,并且已經(jīng)進(jìn)行了商用。

在物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法中,由于交換機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)具有透明性的特點(diǎn),這就給物理層的拓?fù)浣Y(jié)構(gòu)發(fā)現(xiàn)帶來了很大的困難。針對物理網(wǎng)絡(luò)中的拓?fù)浒l(fā)現(xiàn)問題,中科院計算所的鄭海提出了能依賴不完整的交換機(jī)AFT來發(fā)現(xiàn)物理網(wǎng)絡(luò)拓?fù)涞乃惴╗2],隨后他們在此基礎(chǔ)上進(jìn)一步解決了子網(wǎng)中存在Hub的判定情況[3],但存在的不足在于它們都不能準(zhǔn)確判定鏈路是否為冗余鏈路。文獻(xiàn)[4]和[5]給出了基于端口流量的拓?fù)浒l(fā)現(xiàn)算法,通過對端口流量數(shù)據(jù)的分析進(jìn)而實現(xiàn)了網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn),但是該方法的實際數(shù)據(jù)無法準(zhǔn)確獲得,并且獲得的數(shù)據(jù)可能存在很大的誤差,不具有實際的應(yīng)用性。文獻(xiàn)[6]和[7]中利用交換機(jī)地址轉(zhuǎn)發(fā)表的數(shù)據(jù)構(gòu)建了網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),是一種數(shù)據(jù)鏈路層的拓?fù)浣Y(jié)構(gòu)發(fā)現(xiàn)方法,但是這種方法無法對啞交換機(jī)(不能通過SNMP協(xié)議訪問的交換機(jī))進(jìn)行有效的發(fā)現(xiàn)。文獻(xiàn)[8]和[9]同樣給出了一種基于生成樹協(xié)議(Spanning Tree Protocol,STP)的數(shù)據(jù)鏈路層網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,這種算法具有分析得到啞交換機(jī)的連接關(guān)系的能力,但是其缺點(diǎn)是無法發(fā)現(xiàn)交換機(jī)與主機(jī)的關(guān)系,并且要求交換機(jī)支持STP協(xié)議才能有效。

IETF于2000年推出物理拓?fù)銶IB (Management Information Base)[10],它IP網(wǎng)絡(luò)的相關(guān)對象如圖1所示。IETF試圖去解決網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)現(xiàn)的問題,但是IETF并沒有具體給出如何獲取MIB的具體方法,只能通過一些通用的協(xié)議來獲取MIB。

2 基于STP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法

生成樹協(xié)議(Spanning Tree Protocol,STP)的主要功能有兩個:一是創(chuàng)建以某臺交換機(jī)為跟的網(wǎng)絡(luò)拓?fù)渖蓸?,同時能夠避免環(huán)路的產(chǎn)生。二是在網(wǎng)絡(luò)拓?fù)浒l(fā)生改變時,能夠達(dá)到收斂保護(hù)的目的。算法能夠?qū)崿F(xiàn)的基礎(chǔ)在于網(wǎng)絡(luò)中每臺交換機(jī)都在Bridge MIB中保存了其交換域生成樹的一部分,利用SNMP協(xié)議來獲取MIB中的這些信息,再根據(jù)STP協(xié)議的特征,通過比較就可以得到整個網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。根據(jù)STP協(xié)議我們可以推導(dǎo)出以下八條結(jié)論[11-12],這幾條結(jié)論可以幫助我們判斷各個端口的關(guān)系。

結(jié)論一:設(shè)交換機(jī)的根接口指定網(wǎng)橋為,指定接口為,由于能運(yùn)行生成樹協(xié)議的必須是交換機(jī),所以必為交換機(jī),且、通過接口、直連或通過集線器互連(設(shè)備級直連)。

結(jié)論二:處于轉(zhuǎn)發(fā)狀態(tài)的接口為所在網(wǎng)段內(nèi)的其他網(wǎng)橋傳播信息,所以必須存在連接。若無連接,它不會參與生成樹算法,也就不可能有轉(zhuǎn)發(fā)狀態(tài)。

結(jié)論三:阻塞接口若無連接存在,則生成樹協(xié)議不會令其阻塞,它一定是進(jìn)行冗余備份的線路。所以若阻塞接口的指定網(wǎng)橋非本交換機(jī),其上一定有連接存在。

結(jié)論四:對于設(shè)備級直連交換機(jī)、的兩接口、,若,則、通過集線器連接,反之,接口、直連。其中表示交換機(jī)通過接口收到數(shù)據(jù)包的源MAC地址集,表示交換機(jī)通過接口收到數(shù)據(jù)包的源MAC地址集。

結(jié)論五:假設(shè)交換機(jī)接口的地址轉(zhuǎn)發(fā)表中僅包含主機(jī)設(shè)備,若主機(jī)數(shù)目為1,則該接口與主機(jī)直連;若主機(jī)數(shù)目大于l,則該接口通過集線器連接主機(jī)群。

結(jié)論六:若交換機(jī)接口的地址轉(zhuǎn)發(fā)表中無其他交換機(jī)的地址信息但包含路由器地址,則該接口與路由器直連。若交換機(jī)接口的地址轉(zhuǎn)發(fā)表中無其他交換機(jī)和路由器的地址信息,則它與轉(zhuǎn)發(fā)表中的主機(jī)設(shè)各級直連,通過結(jié)論五進(jìn)行連接確認(rèn)。

結(jié)論七:若的非根端口的指派網(wǎng)橋為(),且端口的狀態(tài)是阻塞的,且的非根端口的指派端口與的指派端口相等,那么與直連,且該鏈路是備份鏈路。

結(jié)論八:滿足規(guī)則1的2個端口與,不妨假定是根端口,是非根端口,若存在其他端口()與滿足規(guī)則1,那么、與之間必定存在集線器或啞交換機(jī)等不支持SNMP 的設(shè)備。

利用上述的八條結(jié)論,可以得出基于STP協(xié)議的拓?fù)浒l(fā)現(xiàn)算法:根據(jù)結(jié)論一,當(dāng)發(fā)現(xiàn)未知的網(wǎng)橋時,它一定是啞交換機(jī)。以根交換機(jī)為源地址Ping啞交換機(jī),利用結(jié)論二查找拓?fù)浣Y(jié)構(gòu)生成樹的內(nèi)容,如果其中包含啞交換機(jī)的MAC地址,則認(rèn)為它們之間存在直接相連的關(guān)系。其中偽造根交換機(jī)為源地址的Ping數(shù)據(jù)包是為了滿足生成樹轉(zhuǎn)發(fā)下行接口的完備性。STP發(fā)現(xiàn)算法利用網(wǎng)絡(luò)OSI第二層連接信息生成網(wǎng)絡(luò)拓?fù)鋱D,按廣度優(yōu)先遍歷、先主干后備份的順序進(jìn)行,算法流程如圖2所示。

詳細(xì)描述如下:

(1)對網(wǎng)絡(luò)中所有的設(shè)備進(jìn)行訪問,對交換機(jī)進(jìn)行識別并且存入臨時鏈表A中。

(2)將鏈表A中的所有交換機(jī)IP逐個取出來,并通過SNMP協(xié)議訪問同時記錄根網(wǎng)橋MAC地址、本機(jī)的根接口、處于轉(zhuǎn)發(fā)和阻塞接口的指定網(wǎng)橋MAC及其指定接口。endprint

(3)對網(wǎng)絡(luò)拓?fù)渖蓸溥M(jìn)行廣度優(yōu)先遍歷。根據(jù)STP協(xié)議可以得到交換區(qū)域的根網(wǎng)橋,而后將根網(wǎng)橋加入到FIFO(先進(jìn)先出隊列)的等待進(jìn)一步檢測的隊列B中。

(4)從隊列B中取出一個交換機(jī)放入鏈表C中。在臨時鏈表A中找出根接口的指定交換機(jī)為的交換機(jī)信息逐一添入待檢測隊列B中。由結(jié)論一、三可知它們屬于設(shè)備級直連,并從臨時鏈表A中去除該交換機(jī)信息。

(5)重復(fù)4,直到隊列B為空。

(6)判斷添加交換機(jī)連接:查詢鏈表C中每個交換機(jī)接口的指定網(wǎng)橋和指定接口,若存在相同的交換機(jī),則說明它們與指定的網(wǎng)橋是相互連接的,但它們是通過集線器等連接設(shè)備相連的,否則為設(shè)備直連,修改指定網(wǎng)橋的指定接口類型。

(7)若在臨時鏈表A中仍不為空,則說明存在網(wǎng)絡(luò)中存在啞交換機(jī),如果臨時鏈表A為空,則跳轉(zhuǎn)至10。

(8)在臨時鏈表A中對每個交換機(jī)根接口的指定網(wǎng)橋進(jìn)行查詢,若該網(wǎng)橋不存在于臨時鏈表A中,根據(jù)結(jié)論一,將該網(wǎng)橋加入待檢測隊列B中。并重復(fù)進(jìn)行4、5、6步驟。

(9)處理啞交換機(jī)連接:在鏈表C中逆序查找除啞交換機(jī)自身所在分枝以外其他分枝的交換機(jī)接口轉(zhuǎn)發(fā)狀態(tài),若其狀態(tài)轉(zhuǎn)發(fā)無連接并且其轉(zhuǎn)發(fā)地址中包含該啞交換機(jī)的MAC地址,則對該接口與啞交換機(jī)之間的連接信息進(jìn)行添加。

(10)處理冗余連接:判斷每個交換機(jī)的阻塞接口查詢它的指定網(wǎng)橋,將連接填入對應(yīng)的接口信息區(qū)。

(11)向全網(wǎng)主機(jī)發(fā)送廣播Ping包,對于處在設(shè)備直連狀態(tài)的兩臺交換機(jī),對直連兩接口的地址轉(zhuǎn)發(fā)表進(jìn)行訪問,并且根據(jù)結(jié)論四改寫其接口信息。

(12)根據(jù)結(jié)論六對主機(jī)之間的連接和路由器之間連接進(jìn)行添加。

STP拓?fù)浒l(fā)現(xiàn)算法具有以下四個方面的優(yōu)點(diǎn):

(1)能夠?qū)≡O(shè)備存在的情況進(jìn)行處理。

在STP發(fā)現(xiàn)算法中,根據(jù)結(jié)論六利用交換機(jī)接口的指定網(wǎng)橋來發(fā)現(xiàn)啞交換機(jī),并且利用了結(jié)論一和結(jié)論四處理接口連接集線器的情況。

(2)能夠發(fā)現(xiàn)并對冗余連接進(jìn)行處理。

在生成樹算法中,它以阻塞某些接口來實現(xiàn)無環(huán)路轉(zhuǎn)發(fā)。在STP發(fā)現(xiàn)算法中,通過查找比較接口狀態(tài),將那些處于阻塞狀態(tài)的接口取出,為其與指定網(wǎng)橋添加連接,便能發(fā)現(xiàn)冗余連接。

(3)能夠?qū)W(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的變化進(jìn)行及時反映。

在運(yùn)行STP協(xié)議的網(wǎng)絡(luò)中,如果網(wǎng)絡(luò)物理拓?fù)浒l(fā)生變化,算法會立即被觸發(fā),進(jìn)而對整個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)進(jìn)行重新的繪制,所以在STP發(fā)現(xiàn)算法得出的物理拓?fù)涫冀K是最新最完整的。但在其他算法中,對網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的繪制必須通過報文之間的交流來進(jìn)行,如果存在兩臺或者幾臺設(shè)備由于某種原因很久沒有發(fā)生通信,則會導(dǎo)致此設(shè)備不會被發(fā)現(xiàn),網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)繪制不完整。

(4)能夠?qū)Χ鄠€子網(wǎng)的復(fù)雜環(huán)境網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)進(jìn)行有效的發(fā)現(xiàn)。

不同子網(wǎng)間的交換機(jī)即使直接相連,它們也是通過各自的網(wǎng)關(guān)交換信息,但它們必定都遵循生成STP協(xié)議以構(gòu)造無環(huán)路交換域,所以利用STP發(fā)現(xiàn)算法可以發(fā)現(xiàn)這些相對比較復(fù)雜連接。

3 基于ICMP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法

在ICMP協(xié)議中有Ping命令和Traceroute命令,這兩種命令可以幫助我們獲得網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。

Ping命令往往用來檢測一個節(jié)點(diǎn)是不是處在運(yùn)行的狀態(tài)或者是檢測兩個節(jié)點(diǎn)之間的時延(RTT)。Ping向所要檢測的目的地址發(fā)送ICMP echo請求包,等待接收ICMP echo響應(yīng)包,按照成功的次數(shù)及一些其他數(shù)據(jù)對網(wǎng)絡(luò)的時延等一些性能進(jìn)行評估。一般情況下Ping只關(guān)心網(wǎng)絡(luò)上的源節(jié)點(diǎn)和目的節(jié)點(diǎn),而不考慮網(wǎng)絡(luò)的其他細(xì)節(jié),同時也可以利用Ping的廣播得到整個網(wǎng)絡(luò)的主機(jī)狀態(tài)。在文獻(xiàn)[13]中給出了Ping的三類規(guī)則,利用這三類規(guī)則可以對某個IP地址所歸屬的網(wǎng)絡(luò)或者是IP的有效性進(jìn)行判斷,具體如下:

(1)通過Ping的廣播來判定IP地址所屬子網(wǎng)。

遞減猜測子網(wǎng)掩碼的長度,對每個猜測的子網(wǎng)掩碼構(gòu)造廣播地址,進(jìn)行Ping操作,如果主機(jī)對構(gòu)造的廣播地址有回應(yīng)則說明猜測的子網(wǎng)掩碼是正確。給定一個IP地址,可利用本規(guī)則猜測該地址所屬的子網(wǎng)掩碼:

for(masklen=31; i> 7 ; i--) {

假定子網(wǎng)掩碼的長度是masklen;

為IP地址和masklen構(gòu)造主機(jī)號為全0和全1的直接廣播地址;

ping這些廣播地址;

如果多于兩個主機(jī)對這兩個ping都做出了響應(yīng),則返回masklen,否則繼續(xù);

}

(2)通過一組地址來判定該組地址所屬子網(wǎng)。

已知地址集A中的IP地址同屬于一個子網(wǎng),對地址集A進(jìn)行異或操作,找出第一個不為0的位,則該位及其后的各位都只能是主機(jī)號,而不可能是子網(wǎng)號。從而判斷出子網(wǎng)掩碼的長度(可能比實際子網(wǎng)掩碼的位數(shù)長),而子網(wǎng)地址則可通過猜測得到的子網(wǎng)掩碼做按位與運(yùn)算得出。求取子網(wǎng)掩碼的偽代碼如下:

(3)判定在某個域中的有效IP地址。

已知一個子網(wǎng)空間的地址集B,推測已知的子網(wǎng)地址空間中有效的IP地址,其算法描述如下:

for(每個ping測試成功的地址){

把此地址的后續(xù)N個地址加入到臨時集合中;

if(地址以1,63,129或者193結(jié)尾) {

可能有其他的主機(jī)在這個空間中,把N個具有相同前綴的隨機(jī)地址加入到臨時集合中;

Traceroute命令可以發(fā)現(xiàn)源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的路由器。其原理是通過Traceroute命令向目的節(jié)點(diǎn)發(fā)送端口為65535的UDP報文,它們之間的路由器在轉(zhuǎn)發(fā)該數(shù)據(jù)包之間會將其TTL值減1,如果當(dāng)TTL值變?yōu)榱?,則該路由器向源節(jié)點(diǎn)發(fā)送TTL-Expired ICMP的消息。Traceroute命令就是通過這個特性,將發(fā)送包的TTL值不斷的增大,這樣會使源節(jié)點(diǎn)到目的節(jié)點(diǎn)間這條路經(jīng)上所有的路由器均會向源節(jié)點(diǎn)發(fā)送TTL-Expired ICMP包,這樣就將此路徑上的所有路由器進(jìn)行發(fā)現(xiàn)。如圖3所示,對一個目標(biāo)設(shè)備發(fā)送的第一個數(shù)據(jù)包中TTL值為1,所以此報文在遇到兩個節(jié)點(diǎn)之間第一個路由器R1時,就會向源節(jié)點(diǎn)發(fā)送TTL-Expired ICMP包,這樣路由器R1就被發(fā)現(xiàn)了,R1就成了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中的一部分。之后就將發(fā)送報文的TTL值不斷增加1,一直加到發(fā)送的報文被目的節(jié)點(diǎn)所接收,就可以得到之間所有路由器節(jié)點(diǎn)。endprint

通過上述方式我們可以構(gòu)造出包含節(jié)點(diǎn)R1,R2,R3,…,Rn和連接關(guān)系(源主機(jī),R1),(R1,R2),(R2,R3),…,(Rn,目標(biāo)設(shè)備)拓?fù)浣Y(jié)構(gòu)來。由于基本所有的路由器都會向源節(jié)點(diǎn)發(fā)送TTL-Expired ICMP消息,所以一般情況下,通過Traceroute命令得出來的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)是比較準(zhǔn)確的。

通過ICMP中的Ping和Traceroute命令的特性可以實現(xiàn)對網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的發(fā)現(xiàn)。

算法的主要步驟如下:

(1)首先在域內(nèi)隨機(jī)選取形式為(* .1)的地址同時將它們存在臨時地址集A。

(2)然后每次從A中取出一個IP地址a通過步驟3進(jìn)行判定,直到地址集A中沒有IP地址可以取,繪制網(wǎng)絡(luò)拓?fù)鋱D。

(3)首先利用Ping命令判斷該地址是否為有效地址,如果有效則將該地址存入地址集B中并且根據(jù)規(guī)則3將更多的地址加入地址集A中。而后有效地址a進(jìn)一步執(zhí)行Traceroute命令,會得到與其相連接的所有路由器的信息,然后利用規(guī)則2猜測地址a所屬的子網(wǎng)地址。

算法流程如圖4所示。

4 基于SNMP協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法

在一般的基于SNMP協(xié)議的拓?fù)浒l(fā)現(xiàn)方法中,網(wǎng)絡(luò)中的每個設(shè)備都有路由表,路由表中的信息包含了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的信息,路由表包括路由目的網(wǎng)絡(luò)地址、網(wǎng)絡(luò)的子網(wǎng)掩碼、該路由的下一站IP地址、對應(yīng)的端口索引和路由協(xié)議類型等信息。由于路由表中下一跳的節(jié)點(diǎn)一定是具有路由功能的節(jié)點(diǎn),所以就可以在設(shè)定路由器開始,依次讀取每臺路由器的路由表,這樣就可以逐個發(fā)現(xiàn)每臺具有路由功能的節(jié)點(diǎn),進(jìn)而得出具有路由功能節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)。再根據(jù)路由表的本地接口的索引標(biāo)識項,找到接口表中所對應(yīng)的本地接口索引,由接口表的接口類型就可以判斷其所在子網(wǎng)的類型,最終構(gòu)建出整個網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)圖。這種方法的拓?fù)浒l(fā)現(xiàn)過程和算法的優(yōu)點(diǎn)在于其過程簡單,運(yùn)行速度快,發(fā)現(xiàn)效率高,對資源消耗比較小,因此,得到了大家的廣泛應(yīng)用。但是,該方法的不足也很明顯,主要表現(xiàn)在以下五個方面:

(1)由于只是根據(jù)IP地址來發(fā)現(xiàn)設(shè)備,這樣就無法發(fā)現(xiàn)網(wǎng)絡(luò)中沒有配置IP的網(wǎng)絡(luò)設(shè)備。

(2)由于目前一個路由器往往具有不止一個IP地址,而此基于路由表的發(fā)現(xiàn)方法算法實際上就是基于IP地址的,所以一個具有多個IP地址的路由器會導(dǎo)致一臺設(shè)備被算法當(dāng)成了多臺設(shè)備,與實際情況不符合。

(3)因為要對網(wǎng)絡(luò)中所有設(shè)備進(jìn)行檢測,在網(wǎng)絡(luò)規(guī)模比較大時可能導(dǎo)致算法執(zhí)行時間較長,同時由于實際網(wǎng)絡(luò)中情況比較復(fù)雜,存在網(wǎng)絡(luò)時延等情況,可能導(dǎo)致發(fā)現(xiàn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)不準(zhǔn)確。

(4)在路由表中本身存在大量的冗余信息,可能導(dǎo)致網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的不準(zhǔn)確。

(5)根據(jù)該算法進(jìn)行拓?fù)浒l(fā)現(xiàn)需要網(wǎng)絡(luò)中所有的設(shè)備都支持SNMP協(xié)議。

因此,該方法一般用于骨干網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的發(fā)現(xiàn),主要對網(wǎng)絡(luò)的路由節(jié)點(diǎn)進(jìn)行發(fā)現(xiàn),對網(wǎng)絡(luò)的整體情況進(jìn)行繪制??梢?,無論是基于STP的拓?fù)浒l(fā)現(xiàn)算法還是本節(jié)的拓?fù)浒l(fā)現(xiàn)算法都各有優(yōu)缺點(diǎn)和局限性,在實際的應(yīng)用中要根據(jù)具體的情況發(fā)揮出算法的功能。

本節(jié)在現(xiàn)有基于SNMP算法的基礎(chǔ)上研究了一種基于SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)改進(jìn)算法,經(jīng)過實際網(wǎng)絡(luò)管理系統(tǒng)的驗證,能夠有效發(fā)現(xiàn)管控網(wǎng)絡(luò)的三級拓?fù)浣Y(jié)構(gòu),即:骨干網(wǎng)路由、二級子網(wǎng)和三級子網(wǎng)拓?fù)浣Y(jié)構(gòu)。

這種算法的基本思想是在網(wǎng)絡(luò)中路由器之間的鏈路是由其兩端路由器的端口互聯(lián)構(gòu)成的,根據(jù)TCP/IP的編址原理,鏈路兩端路由器端口的IP地址必然處于同一個子網(wǎng)中。因此,通過一個子網(wǎng)中已知的IP地址和這個IP地址的子網(wǎng)掩碼即可計算出該子網(wǎng)中所有其他的IP地址。根據(jù)這種思路,從某個節(jié)點(diǎn)開始,訪問其MIB庫,得到該節(jié)點(diǎn)所有接口的IP地址和子網(wǎng)掩碼,該節(jié)點(diǎn)稱為種子節(jié)點(diǎn)。通過計算得到與每一接口在同一個子網(wǎng)內(nèi)的其他IP地址。判斷這些IP地址是否屬于路由器信息,如果是則將此路由器信息記錄到待檢測路由設(shè)備鏈表,作為下一層發(fā)現(xiàn)的種子節(jié)點(diǎn)。并同時記錄兩個路由器問的鏈路信息到拓?fù)湫畔㈡湵?。重?fù)以上步驟直到?jīng)]有種子節(jié)點(diǎn)或者達(dá)到指定的發(fā)現(xiàn)層數(shù),即可完成相應(yīng)的拓?fù)浒l(fā)現(xiàn)過程。算法流程如圖5所示。

詳細(xì)描述如下:

(1)根據(jù)網(wǎng)絡(luò)管理系統(tǒng)的IP掩碼,使用路由跟蹤的方法獲取網(wǎng)管終端所在的默認(rèn)路由器網(wǎng)關(guān)地址。訪問該路由器獲取ipAdderssTable地址表信息,將其編號加入AllRouters隊列(元素包括路由器名、接口號、接口IP、接口號和接口IP等,其中接口號與接口IP的多少依據(jù)各個不同路由器而不同)和AccessRouters隊列(待訪問路由器,結(jié)構(gòu)跟AllRouters類似)。

(2)從AccessRoutes取出一個元素設(shè)為當(dāng)前處理的路由器Rx,依次訪問Rx的路由表ipRouteTable表項,將目標(biāo)子網(wǎng)信息編號無重復(fù)地放入子網(wǎng)隊列Subnets(元素包括子網(wǎng)號,子網(wǎng)地址,掩碼等)。

(3)判斷路由器與子網(wǎng)連接關(guān)系:依次對Rx的ipRouteTable表項檢查,如果ipRouteType項不為4,表示相應(yīng)子網(wǎng)與Rx直接相連,下一跳地址ipNextHopIpAddress項為空。根據(jù)Rx的ipAddressTable信息確定Y端口與該子網(wǎng)Z相連接,將連接關(guān)系組(Rx,Y,Z)無重復(fù)地放入R-1inks-S隊列(路由器接口與子網(wǎng)相連的接配對的二元組)。

(4)判斷路由器之間的連接關(guān)系:如果ipRouteType為4,下一跳ipNextHopIpAddress地址有效,表明另一個路由器與Rx直接相連。根據(jù)ipNextHopIpAddress地址信息訪問另一個路由器的ipAddressTable,判斷AllRouters隊列中是否己經(jīng)存在該路由器信息,如不存在則把該路由器編號加入隊列AllRouters和AccessRouters中。很容易確定Rx的Y端口與另一個路由器Ru的V端口直接連接。因此把元素(Rx,Y,Ru,V)無重復(fù)地放入隊列R-links-R(路由器接口與路由器接口相連的二元組)中。endprint

(5)把隊列R-links-R進(jìn)行去冗處理。因為在以上的算法實現(xiàn)中,有可能存相同的連接信息加入到隊列中。例如:R1的2端口與R4的3端口直接相連,在算法實現(xiàn)過程中,可能同時在隊列中加入了(R1,2,R4,3)和(R4,3,R1,2)的元素組,雖然它們在形式上不一樣,但他們表示同一個連接信息。

(6)把Rx的元素組從AccessRouters中刪除,如果AccessRouters不為空,轉(zhuǎn)到(2),如果為空,程序中止。

算法運(yùn)行結(jié)束以后,AllRouters包含了所有活動的路由器,子網(wǎng)隊列Subnets包含了所有活動的子網(wǎng),隊列R-links-S和隊列R-links-R的信息表示路由器與子網(wǎng)、路由器與路由器之間連接關(guān)系,最終可以準(zhǔn)確而完整地把拓?fù)浣Y(jié)構(gòu)繪制出來。

5 結(jié)語

該文分析了網(wǎng)絡(luò)拓?fù)浼夹g(shù)的重要性,介紹了現(xiàn)有各類網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,并重點(diǎn)針對其不足進(jìn)行了分析,根據(jù)現(xiàn)有網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的不足,根據(jù)實際,選取STP、SNMP和ICMP三個常用協(xié)議做為基礎(chǔ),提出了基于這三種常見協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,同時提出了一種基于SNMP協(xié)議的拓?fù)浒l(fā)現(xiàn)改進(jìn)算法,更好的解決了網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)比較難以有效解決的問題。

參考文獻(xiàn)

[1] K.C.Claffy D.McRobb.Measurement and Visualization of Internet Connectivity and Performance[EB/OL]. http://www.caida.org/Tools/Skitter, 2001.

[2] 鄭海,張國清.物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的研究[J].計算機(jī)研究與發(fā)展,2002, 39(3):264-268.

[3] 張國強(qiáng),張國清,李仰耀.物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的研究和系統(tǒng)實現(xiàn)[J].小型微型計算機(jī)系統(tǒng),2006,27(1):12-16.

[4] 邱林,張建忠,吳功宜.基于端口流量的物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法研究[J].計算機(jī)工程與應(yīng)用,2002,38(22):171-172.

[5] 陳艷秋,宋銀瀕,刁成嘉.利用端口流量分析解決物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)問題[J].計算機(jī)工程與應(yīng)用,2007,43(5):150-152.

[6] Gobjuka.H, Breitbart.Y.Ethernet Topology Discovery for Networks with Incomplete Information[J]. IEEE INFOCOM,2007(8):631-638.

[7] Uzair.U,Ahmad.HF,AIi.A,Suguri.H.An Efficient Algorithm for Ethernet Topology Discovery inLarge Multi-subnet Networks[J]. IEEE INFOCOM, 2007(4):1-7.

[8] Farkas J,de Oliveira V.G, Salvador M.R, dos Santos G.C. Automatic Discovery of Physical Topology in Ethernet Networks [J].IEEE INFOCOM,2008,3:848-854.

[9] 曲朝陽,胡緒超.基于SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)與拓?fù)渖蓸涞睦L制[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007(3):23-27.

[10] J Case,M Fedor,M Schoffstall.Simple Network Management Protocal [S].RFC1157,1999.

[11] 石玫.網(wǎng)絡(luò)拓?fù)渥灾靼l(fā)現(xiàn)[D].中國人民解放軍信息工程大學(xué),2007.

[12] 張占國,劉淑芬,包鐵,等.基于STP協(xié)議的物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法[J].計算機(jī)工程,2008,34(6):98-100.

[13] 王婕,歐陽松.網(wǎng)絡(luò)拓?fù)渥詣影l(fā)現(xiàn)算法的研究[J].計算機(jī)測量與控制,2005, 13(9):978-980.endprint

(5)把隊列R-links-R進(jìn)行去冗處理。因為在以上的算法實現(xiàn)中,有可能存相同的連接信息加入到隊列中。例如:R1的2端口與R4的3端口直接相連,在算法實現(xiàn)過程中,可能同時在隊列中加入了(R1,2,R4,3)和(R4,3,R1,2)的元素組,雖然它們在形式上不一樣,但他們表示同一個連接信息。

(6)把Rx的元素組從AccessRouters中刪除,如果AccessRouters不為空,轉(zhuǎn)到(2),如果為空,程序中止。

算法運(yùn)行結(jié)束以后,AllRouters包含了所有活動的路由器,子網(wǎng)隊列Subnets包含了所有活動的子網(wǎng),隊列R-links-S和隊列R-links-R的信息表示路由器與子網(wǎng)、路由器與路由器之間連接關(guān)系,最終可以準(zhǔn)確而完整地把拓?fù)浣Y(jié)構(gòu)繪制出來。

5 結(jié)語

該文分析了網(wǎng)絡(luò)拓?fù)浼夹g(shù)的重要性,介紹了現(xiàn)有各類網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,并重點(diǎn)針對其不足進(jìn)行了分析,根據(jù)現(xiàn)有網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的不足,根據(jù)實際,選取STP、SNMP和ICMP三個常用協(xié)議做為基礎(chǔ),提出了基于這三種常見協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,同時提出了一種基于SNMP協(xié)議的拓?fù)浒l(fā)現(xiàn)改進(jìn)算法,更好的解決了網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)比較難以有效解決的問題。

參考文獻(xiàn)

[1] K.C.Claffy D.McRobb.Measurement and Visualization of Internet Connectivity and Performance[EB/OL]. http://www.caida.org/Tools/Skitter, 2001.

[2] 鄭海,張國清.物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的研究[J].計算機(jī)研究與發(fā)展,2002, 39(3):264-268.

[3] 張國強(qiáng),張國清,李仰耀.物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的研究和系統(tǒng)實現(xiàn)[J].小型微型計算機(jī)系統(tǒng),2006,27(1):12-16.

[4] 邱林,張建忠,吳功宜.基于端口流量的物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法研究[J].計算機(jī)工程與應(yīng)用,2002,38(22):171-172.

[5] 陳艷秋,宋銀瀕,刁成嘉.利用端口流量分析解決物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)問題[J].計算機(jī)工程與應(yīng)用,2007,43(5):150-152.

[6] Gobjuka.H, Breitbart.Y.Ethernet Topology Discovery for Networks with Incomplete Information[J]. IEEE INFOCOM,2007(8):631-638.

[7] Uzair.U,Ahmad.HF,AIi.A,Suguri.H.An Efficient Algorithm for Ethernet Topology Discovery inLarge Multi-subnet Networks[J]. IEEE INFOCOM, 2007(4):1-7.

[8] Farkas J,de Oliveira V.G, Salvador M.R, dos Santos G.C. Automatic Discovery of Physical Topology in Ethernet Networks [J].IEEE INFOCOM,2008,3:848-854.

[9] 曲朝陽,胡緒超.基于SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)與拓?fù)渖蓸涞睦L制[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007(3):23-27.

[10] J Case,M Fedor,M Schoffstall.Simple Network Management Protocal [S].RFC1157,1999.

[11] 石玫.網(wǎng)絡(luò)拓?fù)渥灾靼l(fā)現(xiàn)[D].中國人民解放軍信息工程大學(xué),2007.

[12] 張占國,劉淑芬,包鐵,等.基于STP協(xié)議的物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法[J].計算機(jī)工程,2008,34(6):98-100.

[13] 王婕,歐陽松.網(wǎng)絡(luò)拓?fù)渥詣影l(fā)現(xiàn)算法的研究[J].計算機(jī)測量與控制,2005, 13(9):978-980.endprint

(5)把隊列R-links-R進(jìn)行去冗處理。因為在以上的算法實現(xiàn)中,有可能存相同的連接信息加入到隊列中。例如:R1的2端口與R4的3端口直接相連,在算法實現(xiàn)過程中,可能同時在隊列中加入了(R1,2,R4,3)和(R4,3,R1,2)的元素組,雖然它們在形式上不一樣,但他們表示同一個連接信息。

(6)把Rx的元素組從AccessRouters中刪除,如果AccessRouters不為空,轉(zhuǎn)到(2),如果為空,程序中止。

算法運(yùn)行結(jié)束以后,AllRouters包含了所有活動的路由器,子網(wǎng)隊列Subnets包含了所有活動的子網(wǎng),隊列R-links-S和隊列R-links-R的信息表示路由器與子網(wǎng)、路由器與路由器之間連接關(guān)系,最終可以準(zhǔn)確而完整地把拓?fù)浣Y(jié)構(gòu)繪制出來。

5 結(jié)語

該文分析了網(wǎng)絡(luò)拓?fù)浼夹g(shù)的重要性,介紹了現(xiàn)有各類網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,并重點(diǎn)針對其不足進(jìn)行了分析,根據(jù)現(xiàn)有網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的不足,根據(jù)實際,選取STP、SNMP和ICMP三個常用協(xié)議做為基礎(chǔ),提出了基于這三種常見協(xié)議的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法,同時提出了一種基于SNMP協(xié)議的拓?fù)浒l(fā)現(xiàn)改進(jìn)算法,更好的解決了網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)比較難以有效解決的問題。

參考文獻(xiàn)

[1] K.C.Claffy D.McRobb.Measurement and Visualization of Internet Connectivity and Performance[EB/OL]. http://www.caida.org/Tools/Skitter, 2001.

[2] 鄭海,張國清.物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的研究[J].計算機(jī)研究與發(fā)展,2002, 39(3):264-268.

[3] 張國強(qiáng),張國清,李仰耀.物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法的研究和系統(tǒng)實現(xiàn)[J].小型微型計算機(jī)系統(tǒng),2006,27(1):12-16.

[4] 邱林,張建忠,吳功宜.基于端口流量的物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)方法研究[J].計算機(jī)工程與應(yīng)用,2002,38(22):171-172.

[5] 陳艷秋,宋銀瀕,刁成嘉.利用端口流量分析解決物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)問題[J].計算機(jī)工程與應(yīng)用,2007,43(5):150-152.

[6] Gobjuka.H, Breitbart.Y.Ethernet Topology Discovery for Networks with Incomplete Information[J]. IEEE INFOCOM,2007(8):631-638.

[7] Uzair.U,Ahmad.HF,AIi.A,Suguri.H.An Efficient Algorithm for Ethernet Topology Discovery inLarge Multi-subnet Networks[J]. IEEE INFOCOM, 2007(4):1-7.

[8] Farkas J,de Oliveira V.G, Salvador M.R, dos Santos G.C. Automatic Discovery of Physical Topology in Ethernet Networks [J].IEEE INFOCOM,2008,3:848-854.

[9] 曲朝陽,胡緒超.基于SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)與拓?fù)渖蓸涞睦L制[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007(3):23-27.

[10] J Case,M Fedor,M Schoffstall.Simple Network Management Protocal [S].RFC1157,1999.

[11] 石玫.網(wǎng)絡(luò)拓?fù)渥灾靼l(fā)現(xiàn)[D].中國人民解放軍信息工程大學(xué),2007.

[12] 張占國,劉淑芬,包鐵,等.基于STP協(xié)議的物理網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法[J].計算機(jī)工程,2008,34(6):98-100.

[13] 王婕,歐陽松.網(wǎng)絡(luò)拓?fù)渥詣影l(fā)現(xiàn)算法的研究[J].計算機(jī)測量與控制,2005, 13(9):978-980.endprint

金昌市| 桃源县| 福泉市| 大理市| 从化市| 阜阳市| 横山县| 钟山县| 清水河县| 历史| 宜阳县| 应用必备| 阿拉善左旗| 乌拉特前旗| 宜宾县| 定西市| 石景山区| 尚义县| 福建省| 上栗县| 定兴县| 巴彦淖尔市| 湖州市| 呼伦贝尔市| 门源| 景宁| 河南省| 中阳县| 定结县| 洛宁县| 海城市| 定襄县| 普宁市| 广饶县| 达孜县| 关岭| 登封市| 微山县| 灌阳县| 那坡县| 桃江县|