專利名稱:基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)及實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)管理技術(shù)領(lǐng)域,特別涉及一種基于IPv6的下一代互聯(lián)網(wǎng) 拓?fù)浒l(fā)現(xiàn)系統(tǒng)及其實(shí)現(xiàn)方法。
背景技術(shù):
過(guò)去的20多年里,IPv4作為互聯(lián)網(wǎng)的標(biāo)準(zhǔn)取得了輝煌的業(yè)績(jī)。但隨著Internet 的飛速發(fā)展,IPv4網(wǎng)絡(luò)的缺陷已變得愈加明顯。如地址空間的不足,端到端通信質(zhì)量得不 到保障,網(wǎng)絡(luò)配置管理困難以及與移動(dòng)網(wǎng)絡(luò)難以互通等。相比于IPv4,IPv6具有如下優(yōu)越 性良好的可擴(kuò)展性、可靠的安全性、多樣化的服務(wù)質(zhì)量、易管理性、移動(dòng)性,另外,還能很好 地支持多播業(yè)務(wù),提高網(wǎng)絡(luò)的整體吞吐量。使用IPv6后,大量非計(jì)算機(jī)終端將有機(jī)會(huì)獨(dú)立 連接到互聯(lián)網(wǎng)上,人們將生活在一個(gè)真正的網(wǎng)絡(luò)世界中。IPv6協(xié)議作為下一代網(wǎng)絡(luò)協(xié)議,正在得到越來(lái)越多的國(guó)家和研究單位的關(guān)注。中 國(guó)、日本、韓國(guó)和歐洲以及美國(guó)都在IPv6研發(fā)中投入了巨大的精力和時(shí)間。2008年12月3 日,歷時(shí)五年的CNGI (China Next Generation Internet,中國(guó)下一代互聯(lián)網(wǎng))項(xiàng)目取得階 段性的成果,在下一代互聯(lián)網(wǎng)基礎(chǔ)設(shè)施建設(shè)、技術(shù)研發(fā)及產(chǎn)業(yè)化、技術(shù)試驗(yàn)與應(yīng)用示范等方 面取得了一系列重大成果,建成并穩(wěn)定運(yùn)行全球第一個(gè)、也是規(guī)模最大的純IPv6互聯(lián)網(wǎng)主 干網(wǎng)。中國(guó)下一代互聯(lián)網(wǎng)研究與產(chǎn)業(yè)化獲得重大突破,現(xiàn)已建成包括6個(gè)核心網(wǎng)絡(luò)、22個(gè) 城市59個(gè)節(jié)點(diǎn)以及北京和上海兩個(gè)國(guó)際交換中心、273個(gè)駐地網(wǎng)的IPv6示范網(wǎng)絡(luò)。據(jù)不 完全統(tǒng)計(jì),截至目前國(guó)家發(fā)展改革委累計(jì)安排投資超過(guò)11億元,帶動(dòng)社會(huì)投資約40億元。 從2003年至今,CNGI先后支持建設(shè)了骨干網(wǎng)、駐地網(wǎng),103個(gè)研究開發(fā)、產(chǎn)業(yè)化及應(yīng)用示范 項(xiàng)目以及教育網(wǎng)IPv6技術(shù)升級(jí)項(xiàng)目,全國(guó)超過(guò)100所高校和100家研究單位、幾十家企業(yè) 的上萬(wàn)名科研生產(chǎn)一線工作者參加了項(xiàng)目建設(shè)。以此為基礎(chǔ),國(guó)家發(fā)改委、科技部等部委在2008年年底組織實(shí)施了的下一代互聯(lián) 網(wǎng)業(yè)務(wù)試商用及設(shè)備產(chǎn)業(yè)化專項(xiàng),在不久的將來(lái),基于IPv6的下一代互聯(lián)網(wǎng)必將大規(guī)模在 國(guó)內(nèi)乃至世界范圍內(nèi)得到廣泛應(yīng)用。網(wǎng)絡(luò)管理是網(wǎng)絡(luò)的重要支撐系統(tǒng),當(dāng)新一代網(wǎng)絡(luò)實(shí)施成功時(shí),下一代網(wǎng)絡(luò)管理也 要應(yīng)時(shí)而生,否則網(wǎng)絡(luò)的運(yùn)營(yíng)、業(yè)務(wù)的管理會(huì)受到極大的負(fù)面拖動(dòng)。而網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)是自動(dòng) 發(fā)現(xiàn)網(wǎng)絡(luò)中的各種設(shè)備及網(wǎng)絡(luò)設(shè)備之間的連接關(guān)系,是網(wǎng)絡(luò)管理的基礎(chǔ)。由于IPv6協(xié)議和 IPv4協(xié)議不兼容,以往適用于IPv4網(wǎng)絡(luò)的拓?fù)浒l(fā)現(xiàn)工具、方法不能直接移植到IPv6的網(wǎng) 絡(luò),同時(shí)IPv6協(xié)議的許多新特征,如地址結(jié)構(gòu)的變化以及IPv6 over IPv4隧道的存在,也 對(duì)IPv6下的拓?fù)浒l(fā)現(xiàn)提出了全新的挑戰(zhàn)。目前,IPv6拓?fù)渥詣?dòng)發(fā)現(xiàn)主要存在以下三個(gè)困難第一,目前探測(cè)子網(wǎng)內(nèi)部設(shè)備 的活動(dòng)性方法幾乎用的都是Ping窮舉方法,對(duì)于IPv6的子網(wǎng)來(lái)說(shuō),窮舉法探測(cè)主機(jī)需要264 個(gè)(約2千億億個(gè))ICMP(Internet Control Message Protocol,互聯(lián)網(wǎng)控制報(bào)文協(xié)議)回 射請(qǐng)求。這對(duì)于任何網(wǎng)絡(luò)都是不可接受的。比較而言,對(duì)一個(gè)IPv4的C類子網(wǎng)256位地址 的探測(cè),如果采用異步方式只需要幾秒鐘,因而不會(huì)給網(wǎng)絡(luò)帶來(lái)太大負(fù)擔(dān)。所以IPv4的局域網(wǎng)拓?fù)涮綔y(cè)方法顯然不適用于IPv6。第二,在IPv6中地址按照范圍被劃分為全球地址, 本地站點(diǎn)地址和本地鏈路地址三類。目前有許多路由協(xié)議使用本地的鏈路地址來(lái)定義路由 表中的ipv6RouteNextHop對(duì)象,而不是用全球地址定義,因此IPv4中的基于SNMP (Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)搜索算法的拓?fù)浒l(fā)現(xiàn)機(jī)制在IPv6情 況下無(wú)法直接使用。第三,標(biāo)準(zhǔn)化組織雖然已經(jīng)定義了 IPv6管理相關(guān)的MIB (Management Information Base,管理信息庫(kù)),但目前大部分網(wǎng)絡(luò)設(shè)備對(duì)這些MIB標(biāo)準(zhǔn)不支持或者不完 全支持,SNMP協(xié)議還無(wú)法在IPv6拓?fù)浒l(fā)現(xiàn)中發(fā)揮作用。以上這些問(wèn)題都給目前的IPv6的 網(wǎng)絡(luò)進(jìn)行拓?fù)浒l(fā)現(xiàn)造成了極大的困難,迫切需要進(jìn)行深入的研究。由于基于通用協(xié)議的探測(cè)方法獨(dú)立于IP的特性,目前許多研究組織往往采用 Traceroute探測(cè)方法對(duì)IPv6的骨干網(wǎng)路由器級(jí)的拓?fù)溥M(jìn)行研究,但利用Traceroute進(jìn)行 探測(cè),雖然具有適用性好、容易實(shí)現(xiàn)等優(yōu)點(diǎn),但是存在路由別名的問(wèn)題,如圖1(a)和圖1(b) 所示,其中圖1(a)為實(shí)際的網(wǎng)絡(luò)連接,圖1(b)為通過(guò)Traceroute探測(cè)得到的拓?fù)渚W(wǎng)絡(luò),在 Traceroute探測(cè)過(guò)程中,除了目標(biāo)節(jié)點(diǎn)是探測(cè)報(bào)文的真正目的地,其它發(fā)送ICMP消息的都 是中間節(jié)點(diǎn),在收到的所有ICMP響應(yīng)消息中,除了目標(biāo)節(jié)點(diǎn)發(fā)送的消息外,其它消息的源 IP地址只代表路由器的一個(gè)接口,并不代表路由節(jié)點(diǎn)。由于探測(cè)點(diǎn)可能會(huì)收到來(lái)自同一節(jié) 點(diǎn)的不同接口發(fā)來(lái)的ICMP響應(yīng),所以在構(gòu)造拓?fù)鋾r(shí),若把所有地址視為節(jié)點(diǎn)對(duì)待,將會(huì)和 實(shí)際拓?fù)湎嗖詈艽?。從路由器B發(fā)現(xiàn)路由器D的過(guò)程中,獲得了路由器D的接口 1的IP地 址,從路由器C發(fā)現(xiàn)路由器D的過(guò)程中,獲得了路由器D的的接口 2的IP地址,如果不能分 辨出接口 1和接口 2是同一個(gè)路由器的兩個(gè)接口,就會(huì)得到錯(cuò)誤的拓?fù)鋱D,見圖1(b),這就 是路由別名的問(wèn)題。此外,Traceroute探測(cè)方法不能發(fā)現(xiàn)網(wǎng)段信息,而且發(fā)現(xiàn)的信息不完 整,即節(jié)點(diǎn)和鏈路的覆蓋率不高。而覆蓋率依賴于探測(cè)節(jié)點(diǎn)的數(shù)目,若增加探測(cè)節(jié)點(diǎn)來(lái)提升 覆蓋率,則會(huì)增加探測(cè)時(shí)間以及會(huì)出現(xiàn)更多的路由別名問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的之一在于克服上述現(xiàn)有技術(shù)的缺點(diǎn)和不足,提供一種基于IPv6的 下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng),其可以實(shí)現(xiàn)IPv6下一代互聯(lián)網(wǎng)網(wǎng)絡(luò)層拓?fù)渥詣?dòng)發(fā)現(xiàn),具有穩(wěn) 定性加強(qiáng)、性能更好、消除別名,以及有效提升拓?fù)浒l(fā)現(xiàn)的準(zhǔn)確性和完整性等優(yōu)點(diǎn)。本發(fā)明的目的之二在于克服上述現(xiàn)有技術(shù)的缺點(diǎn)和不足,提供一種基于IPv6的 下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法。本發(fā)明的目的之一是通過(guò)下述技術(shù)方案實(shí)現(xiàn)的一種基于IPv6的下一代互聯(lián)網(wǎng) 拓?fù)浒l(fā)現(xiàn)系統(tǒng),包括探測(cè)列表輸入模塊,用于接收用戶輸入的探測(cè)節(jié)點(diǎn)信息,形成探測(cè)節(jié)點(diǎn)列表并發(fā) 送到設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊;設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊,用于接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù) 探測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相 連關(guān)系,并把獲取的信息發(fā)送至分析整合模塊;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊,用于將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換 網(wǎng)絡(luò)拓?fù)湫畔?,得到完整的網(wǎng)絡(luò)拓?fù)湫畔ⅲ丫W(wǎng)絡(luò)拓?fù)湫畔l(fā)送分析整合模塊;分析整合模塊,用于接收設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的信息并進(jìn)行分析,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊;拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊,用于將完整的拓?fù)浣Y(jié)構(gòu)圖存入數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù),用于存儲(chǔ)拓?fù)浣Y(jié)構(gòu)信息;拓?fù)浣Y(jié)構(gòu)信息顯示模塊,用于顯示數(shù)據(jù)庫(kù)中完整的拓?fù)浣Y(jié)構(gòu)圖。為更好的實(shí)現(xiàn)本發(fā)明,所述系統(tǒng)采用對(duì)象的形式來(lái)組織數(shù)據(jù)結(jié)構(gòu),對(duì)于系統(tǒng)中涉 及到的每一種拓?fù)鋵?duì)象均定義了一個(gè)類,具體包括設(shè)備類、子網(wǎng)類、連接類、接口類和路由 器直連子網(wǎng)類。優(yōu)選的,所述系統(tǒng)采用鏈表的形式來(lái)組織拓?fù)鋵?duì)象,具體包括用于保存所發(fā)現(xiàn)路由器的路由器列表1、路由器列表2和設(shè)備表;用于保存所發(fā)現(xiàn)子網(wǎng)的子網(wǎng)列表;用于保存所發(fā)現(xiàn)路由器之間連接關(guān)系的連接列表1、連接列表2和連接列表;用于保存所發(fā)現(xiàn)路由器與子網(wǎng)連接關(guān)系的路由器直連子網(wǎng)列表;和用于保存路由別名的別名列表和接口表。本發(fā)明的目的之二是通過(guò)下述技術(shù)方案實(shí)現(xiàn)的一種基于IPv6的下一代互聯(lián)網(wǎng) 拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,包括以下步驟Si、探測(cè)列表輸入模塊接收用戶輸入的探測(cè)節(jié)點(diǎn)信息,形成探測(cè)節(jié)點(diǎn)列表并發(fā)送 到設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊,進(jìn)入步驟S2 ;S2、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù)探 測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相連 關(guān)系,并把獲取的信息發(fā)送至分析整合模塊;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換網(wǎng)絡(luò)拓 撲信息,得到完整的網(wǎng)絡(luò)拓?fù)湫畔?,并把網(wǎng)絡(luò)拓?fù)湫畔l(fā)送至分析整合模塊,進(jìn)入步驟S3;S3、分析整合模塊接收設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的信 息并進(jìn)行分析,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊,進(jìn)入S4 ;S4、拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊將完整的拓?fù)浣Y(jié)構(gòu)圖存入數(shù)據(jù)庫(kù),進(jìn)入步驟S5 ;S5、拓?fù)浣Y(jié)構(gòu)信息顯示模塊顯示數(shù)據(jù)庫(kù)中完整的拓?fù)浣Y(jié)構(gòu)圖。為更好的實(shí)現(xiàn)本發(fā)明,所述步驟S2中設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸 入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù)探測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以 IPv6地址標(biāo)識(shí)的路由器及其相連關(guān)系,并把獲取的信息發(fā)送至分析整合模塊,具體包括以 下步驟S2. 1、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并進(jìn)入
下一步驟;S2. 2、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊判斷探測(cè)節(jié)點(diǎn)列表中的地址是否都進(jìn)行了普通路 由探測(cè),若是,則跳轉(zhuǎn)至S2. 4 ;若不是,則在探測(cè)節(jié)點(diǎn)列表中選擇一個(gè)沒(méi)有進(jìn)行普通路由探 測(cè)的地址進(jìn)行普通路由探測(cè),即設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以選擇的地址為目標(biāo)地址發(fā)送路 由路徑探測(cè)包,等待并接收路由路徑探測(cè)包的返回結(jié)果,進(jìn)入下一步驟;S2. 3、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊分析路由路徑探測(cè)包的返回結(jié)果,依次獲取設(shè)備 的IPv6地址、該設(shè)備的跳數(shù)、設(shè)備間連接信息,并將設(shè)備IPv6地址和該設(shè)備的跳數(shù)保存到 路由器列表1,把設(shè)備間連接信息保存到連接列表1中;若路由路徑探測(cè)包的返回結(jié)果中最后一跳的地址和探測(cè)的目標(biāo)地址不一樣,那么這兩個(gè)地址是路由別名,把路由別名保存到 別名列表中,返回步驟S2. 2;S2. 4、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊發(fā)送一個(gè)路由路徑探測(cè)包到一個(gè)可以到達(dá)的地 址,根據(jù)探測(cè)包返回結(jié)果中第一跳的地址來(lái)獲取網(wǎng)關(guān)地址,進(jìn)入下一步驟;S2. 5、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以網(wǎng)關(guān)地址為目標(biāo)地址,路由器列表1中沒(méi)有進(jìn) 行過(guò)源路由測(cè)試的的路由器為中間節(jié)點(diǎn),進(jìn)行源路由測(cè)試,將支持源路由探測(cè)的節(jié)點(diǎn)放到 源路由器列表中;S2. 6、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以路由器列表1中的節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn),源路由器 列表中節(jié)點(diǎn)為中間節(jié)點(diǎn),進(jìn)行源路由探測(cè),并進(jìn)入一下步驟;S2. 7、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊分析步驟S2. 6中源路由探測(cè)的結(jié)果,將新發(fā)現(xiàn)的 連接信息存入連接列表1 ;若在源路由測(cè)試和源路由探測(cè)中,發(fā)現(xiàn)一些新的節(jié)點(diǎn),則把這些 新的節(jié)點(diǎn)寫入路由器列表1 ;設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊進(jìn)行別名判斷,即當(dāng)對(duì)同一地址進(jìn)行源路由探測(cè)時(shí),若 返回報(bào)文的源地址與探測(cè)的地址不同,則返回報(bào)文的源地址與探測(cè)地址是路由別名,把路 由別名保存到別名列表,進(jìn)入下一步驟;S2. 8、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊判斷在進(jìn)行步驟S2. 5的源路由測(cè)試及步驟S2. 6 的源路由探測(cè)時(shí),是否發(fā)現(xiàn)一些新的節(jié)點(diǎn),若有,則返回至步驟S2. 5 ;若否,則把路由器列 表1、連接列表1和別名列表傳送給分析整合模塊,結(jié)束操作。優(yōu)選的,在步驟S2. 5中,下述節(jié)點(diǎn)無(wú)需進(jìn)行源路由測(cè)試(1)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)該節(jié)點(diǎn)進(jìn)行過(guò)源路由測(cè)試;(2)該節(jié)點(diǎn)位于網(wǎng)關(guān)上;(3)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)該節(jié)點(diǎn)所在路由器上的其他地址進(jìn)行過(guò) 源路由測(cè)試。優(yōu)選的,在步驟S2. 6中,下述節(jié)點(diǎn)無(wú)需進(jìn)行源路由探測(cè)(1)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)此節(jié)點(diǎn)進(jìn)行過(guò)源路由探測(cè);(2)目標(biāo)地址位于網(wǎng)關(guān)上;(3)中間節(jié)點(diǎn)位于網(wǎng)關(guān)上;(4)中間節(jié)點(diǎn)和目標(biāo)地址是路由別名;(5)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊曾經(jīng)把目標(biāo)地址作為中間節(jié)點(diǎn)探測(cè)過(guò),而且探測(cè)包 不能到達(dá)目標(biāo)地址。優(yōu)選的,所述步驟S2設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上 的路由器交換網(wǎng)絡(luò)拓?fù)湫畔?,得到完整的拓?fù)浣Y(jié)構(gòu)信息,并把拓?fù)浣Y(jié)構(gòu)信息發(fā)送至分析整 合模塊,具體包括以下步驟Q2. 1、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊通過(guò)計(jì)算機(jī)系統(tǒng),創(chuàng)建一個(gè)套接字到一個(gè)端口上 進(jìn)行監(jiān)聽,若收到客戶端的結(jié)束命令時(shí),則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊結(jié)束操作;若收到客戶 端的開始命令時(shí),則進(jìn)入下一步驟;Q2. 2、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊獲取自己計(jì)算機(jī)的網(wǎng)卡地址,然后進(jìn)入下一步 驟;Q2. 3、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊初始化組播包,然后進(jìn)入下一步驟;
9
Q2. 4、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將步驟Q2. 3中構(gòu)建的組播包發(fā)送到網(wǎng)絡(luò)中,進(jìn)入
下一步驟;Q2. 5、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器對(duì)組播包的回應(yīng)包,若 是,則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析對(duì)端路由器的回應(yīng)包,獲取對(duì)端路由器的本地鏈路地 址,并進(jìn)入下一步驟;若不是,則跳轉(zhuǎn)至步驟Q2. 7 ;Q2. 6、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)庫(kù)描述包給對(duì)端路由器,并進(jìn) 入下一步驟;Q2. 7、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器對(duì)請(qǐng)求數(shù)據(jù)庫(kù)描述包的 回應(yīng)包,若是,則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊再發(fā)一次請(qǐng)求數(shù)據(jù)庫(kù)描述包給對(duì)端路由器,以完 成與對(duì)端路由器的協(xié)商,進(jìn)入下一步驟;若不是,則跳轉(zhuǎn)至步驟Q2. 9 ;Q2. 8、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文,向?qū)Χ寺酚善魃暾?qǐng)獲取 鏈路狀態(tài)數(shù)據(jù),進(jìn)入下一步驟;Q2. 9、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器回應(yīng)的鏈路狀態(tài)數(shù)據(jù) 包,若是,則將鏈路狀態(tài)數(shù)據(jù)保存在緩存中,進(jìn)入下一步驟;若不是,則返回至步驟Q2. 5 ;Q2. 10、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否與對(duì)端路由器交換完所有鏈路狀態(tài)數(shù) 據(jù),若是,則進(jìn)入下一步驟;若否,則返回至步驟Q2. 8 ;Q2. 11、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析獲取的鏈路狀態(tài)數(shù)據(jù)信息,形成網(wǎng)絡(luò)拓?fù)湫?息,包括以路由器編號(hào)標(biāo)識(shí)的路由器列表2、連接列表2、子網(wǎng)列表以及路由器直連子網(wǎng)列 表,最后將網(wǎng)絡(luò)拓?fù)湫畔l(fā)送至分析整合模塊。優(yōu)選的,所述步驟Q2. 3中設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊初始化組播包,具體是指設(shè)備 及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊在組播包中填充自己的地址、組播地址、校驗(yàn)碼,以及組播包的類型與 長(zhǎng)度;其中組播包的類型用于說(shuō)明這是一個(gè)與鄰居打招呼的包,主要是用來(lái)發(fā)現(xiàn)鄰居的,以 便獲取鄰近路由器的本地鏈路地址,所述校驗(yàn)碼用于標(biāo)記組播包在傳遞時(shí)有無(wú)誤碼。優(yōu)選的,所述步驟S3具體包括以下步驟S3. 1、分析整合模塊計(jì)算以路由器編號(hào)標(biāo)識(shí)的路由器列表2中的每個(gè)節(jié)點(diǎn)的跳 數(shù),進(jìn)入下一步驟;S3. 2、分析整合模塊從具有IPv6地址的路由器列表1中讀出一個(gè)還沒(méi)有進(jìn)行分析 的節(jié)點(diǎn)信息,包括該路由器的IPv6地址和跳數(shù)信息,進(jìn)入下一步驟;S3. 3、設(shè)該節(jié)點(diǎn)表示為IPA,計(jì)算IPA的IP地址前綴,進(jìn)入下一步驟;S3. 4、分析整合模塊判斷IPA的IP地址前綴是否等于子網(wǎng)列表中的某個(gè)子網(wǎng),若 是,則IPA屬于該子網(wǎng),進(jìn)入下一步驟;若否,則IPA屬于域外設(shè)備節(jié)點(diǎn),跳轉(zhuǎn)至S3. 14 ;S3. 5、分析整合模塊讀出路由器列表2中屬于IPA所在的子網(wǎng)的節(jié)點(diǎn)Rl的跳數(shù), 進(jìn)入下一步驟;S3. 6、分析整合模塊在以路由器編號(hào)標(biāo)識(shí)的路由器列表2中查找IPA所屬的子網(wǎng) 是否還有節(jié)點(diǎn)R2,如果有,分析整合模塊讀出路由器列表2中屬于該子網(wǎng)的節(jié)點(diǎn)R2的跳數(shù), 進(jìn)入下一步驟;如果沒(méi)有,則跳轉(zhuǎn)至S3. 9 ;S3. 7、分析整合模塊判斷IPA的跳數(shù)是否等于節(jié)點(diǎn)Rl的跳數(shù)且不等于節(jié)點(diǎn)R2的 跳數(shù),若IPA的跳數(shù)等于節(jié)點(diǎn)Rl的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn)R2的跳數(shù),則IPA屬于Rl 節(jié)點(diǎn),跳轉(zhuǎn)至步驟S3. 14 ;若不是,則進(jìn)入下一步驟;
10
S3. 8、分析整合模塊判斷IPA的跳數(shù)是否等于節(jié)點(diǎn)R2的跳數(shù)且IPA的跳數(shù)不等于 節(jié)點(diǎn)Rl的跳數(shù),若IPA的跳數(shù)等于節(jié)點(diǎn)R2的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn)Rl的跳數(shù),則 IPA屬于R2節(jié)點(diǎn),跳轉(zhuǎn)至步驟S3. 14 ;若不是,則進(jìn)入下一步驟;S3. 9、分析整合模塊判斷IPA是否存在已經(jīng)進(jìn)行分析的別名IPB,若有,并且IPB屬 于路由器R,則IPA也屬于路由器R,將IPA的IPv6地址存入接口表,跳轉(zhuǎn)至步驟S3. 14 ;若 沒(méi)有,則進(jìn)入下一步驟;S3. 10、分析整合模塊判斷IPA是否存在沒(méi)有進(jìn)行分析的別名,若有,則讀取該別 名節(jié)點(diǎn)信息,返回至步驟S3. 3 ;若沒(méi)有,則進(jìn)入下一步驟;S3. 11、分析整合模塊判斷IPA所屬子網(wǎng)是否存在其他已經(jīng)進(jìn)行過(guò)分析的節(jié)點(diǎn) IPC,若沒(méi)有,則跳轉(zhuǎn)至步驟S3. 13 ;若有,則進(jìn)入下一步驟;S3. 12、分析整合模塊判斷,若節(jié)點(diǎn)IPC屬于路由器R1,則IPA屬于路由器Rl的同 網(wǎng)段路由器R2 ;若節(jié)點(diǎn)IPC屬于路由器R2,則IPA屬于路由器R2的同網(wǎng)段路由器Rl ;分析 整合模塊將IPA的地址存入接口表,跳轉(zhuǎn)至步驟S3. 14 ;S3. 13、分析整合模塊判斷IPA所屬子網(wǎng)是否存在其他沒(méi)有進(jìn)行分析的節(jié)點(diǎn),若存 在,則讀取該節(jié)點(diǎn)信息,包括該路由器的IPv6地址和跳數(shù)信息,返回至步驟S3. 3 ;若不存 在,則進(jìn)入下一步驟;S3. 14、分析整合模塊判斷具有IPv6地址的路由器列表1所有節(jié)點(diǎn)是否已完成分 析,若不是,則返回至步驟S3. 2 ;若是,則進(jìn)入下一步驟;S3. 15、分析整合模塊將分析出的節(jié)點(diǎn)IPv6地址保存在接口表中,如果一臺(tái)路由 器有多個(gè)IP,將最小的IPv6地址保存到新整理的設(shè)備表中,將域外設(shè)備節(jié)點(diǎn)的IPv6地址保 存在設(shè)備表中,將路由器之間連接關(guān)系保存在連接列表,路由器與子網(wǎng)連接關(guān)系保存在路 由器直連子網(wǎng)列表,子網(wǎng)信息保存在子網(wǎng)列表,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu) 信息存儲(chǔ)模塊。本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)和有益效果第一、系統(tǒng)更加穩(wěn)定函數(shù)放在線程里運(yùn)行,給線程定義一個(gè)超時(shí)時(shí)間,每100毫 秒判斷1次,超過(guò)超時(shí)時(shí)間則強(qiáng)制停止線程后重啟,提高了程序的穩(wěn)定性。第二、性能更好通過(guò)分析節(jié)點(diǎn)和相關(guān)接口的測(cè)試歷史,避免對(duì)同一節(jié)點(diǎn)的多次重 復(fù)探測(cè),有效提高了系統(tǒng)的性能。第三、本發(fā)明系統(tǒng)發(fā)現(xiàn)的拓?fù)浣Y(jié)構(gòu)更加完整,并且可以得到子網(wǎng)信息。通過(guò)將計(jì)算 機(jī)模擬成路由器,與路由器交換網(wǎng)絡(luò)拓?fù)湫畔?,可以得到完整和正確的拓?fù)浣Y(jié)構(gòu)信息,這個(gè) 拓?fù)湫畔⒖梢园酚善餍畔?以路由器編號(hào)RouterID標(biāo)識(shí))、路由器之間的連接信息、子 網(wǎng)信息和路由器與子網(wǎng)之間的連接信息。第四、有效消除路由別名,獲取IPv6路由器接口信息,有效提高拓?fù)浒l(fā)現(xiàn)的準(zhǔn)確 性。分析整合模塊通過(guò)綜合分析設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的結(jié) 果,將以IPv6地址標(biāo)識(shí)的路由器和以路由器標(biāo)識(shí)符標(biāo)識(shí)的路由器進(jìn)行對(duì)應(yīng),可以有效消除路 由別名而且可以發(fā)現(xiàn)大量的子網(wǎng)信息和IPv6路由器接口信息,有效提高拓?fù)浒l(fā)現(xiàn)的準(zhǔn)確性。
圖1 (a)是實(shí)際的網(wǎng)絡(luò)連接示意圖1 (b)是通過(guò)Traceroute探測(cè)得到的拓?fù)渚W(wǎng)絡(luò)示意圖;圖2是實(shí)施例一中基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖;圖3是圖2中設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的工作流程圖;圖4是圖2中設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊的工作流程圖;圖5是圖2中分析整合模塊的工作流程圖;圖6是實(shí)施例一中進(jìn)行IPv6拓?fù)渥詣?dòng)發(fā)現(xiàn)得到的拓?fù)浣Y(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合實(shí)施例及附圖,對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說(shuō)明,但本發(fā)明的實(shí)施方式不 限于此。實(shí)施例如圖2所示,一種基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng),包括探測(cè)列表輸入模 塊、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊、分析整合模塊、拓?fù)浣Y(jié)構(gòu)信息存 儲(chǔ)模塊、數(shù)據(jù)庫(kù)和拓?fù)浣Y(jié)構(gòu)信息顯示模塊,其中探測(cè)列表輸入模塊,用于通過(guò)客戶端的用戶界面接收用戶輸入的探測(cè)節(jié)點(diǎn)信息, 形成探測(cè)節(jié)點(diǎn)列表并發(fā)送到設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊;設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊,用于接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù) 探測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相 連關(guān)系,并把獲取的信息發(fā)送至分析整合模塊;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊,用于將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換 網(wǎng)絡(luò)拓?fù)湫畔?,得到完整的網(wǎng)絡(luò)拓?fù)湫畔ⅲ丫W(wǎng)絡(luò)拓?fù)湫畔l(fā)送分析整合模塊;分析整合模塊接收設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的信息 并進(jìn)行分析,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊;拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊,用于將完整的拓?fù)浣Y(jié)構(gòu)圖存入數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù),用于存儲(chǔ)拓?fù)浣Y(jié)構(gòu)信息;拓?fù)浣Y(jié)構(gòu)信息顯示模塊,用于顯示數(shù)據(jù)庫(kù)中完整的拓?fù)浣Y(jié)構(gòu)圖。一種基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,包括以下步驟Si、探測(cè)列表輸入模塊通過(guò)客戶端的用戶界面接收用戶輸入的探測(cè)節(jié)點(diǎn)信息,形 成探測(cè)節(jié)點(diǎn)列表并發(fā)送到設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊,進(jìn)入步驟S2 ;S2、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù)探 測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相連 關(guān)系,并把獲取的信息發(fā)送至分析整合模塊;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換網(wǎng)絡(luò)拓 撲信息,得到完整的網(wǎng)絡(luò)拓?fù)湫畔?,并把網(wǎng)絡(luò)拓?fù)湫畔l(fā)送至分析整合模塊,進(jìn)入步驟S3;S3、分析整合模塊接收設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的信 息并進(jìn)行分析,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊,進(jìn)入S4 ;S4、拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊將完整的拓?fù)浣Y(jié)構(gòu)圖存入數(shù)據(jù)庫(kù),進(jìn)入步驟S5 ;S5、拓?fù)浣Y(jié)構(gòu)信息顯示模塊顯示數(shù)據(jù)庫(kù)中完整的拓?fù)浣Y(jié)構(gòu)圖。所述拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊將分析得到的完整的拓?fù)浣Y(jié)構(gòu)信息存入數(shù)據(jù)庫(kù)。系
12統(tǒng)中采用了面向?qū)ο蟮乃枷雭?lái)組織數(shù)據(jù)結(jié)構(gòu),對(duì)于系統(tǒng)中涉及到的每一種拓?fù)鋵?duì)象均定 義了一個(gè)類,其中包括設(shè)備類(Device)、子網(wǎng)類(Subnet)、連接類(Connection)、接口類 (Interface)、路由器直連子網(wǎng)類(RouterSubnet)等。每一種類都定義了相關(guān)的屬性和操 作,比如路由器類定義了設(shè)備類型,設(shè)備名稱、設(shè)備描述、設(shè)備標(biāo)識(shí)IP等屬性;子網(wǎng)類定義 了子網(wǎng)IP地址、子網(wǎng)掩碼等屬性。系統(tǒng)采用鏈表的形式來(lái)組織拓?fù)鋵?duì)象,具體包括用于保存所發(fā)現(xiàn)路由器的路由器列表1、路由器列表2和設(shè)備表;用于保存所發(fā)現(xiàn)子網(wǎng)的子網(wǎng)列表;用于保存所發(fā)現(xiàn)路由器之間連接關(guān)系的連接列表1、連接列表2和連接列表;用于保存所發(fā)現(xiàn)路由器與子網(wǎng)連接關(guān)系的路由器直連子網(wǎng)列表;和用于保存路由別名的別名列表和接口表。在拓?fù)浒l(fā)現(xiàn)中系統(tǒng)每發(fā)現(xiàn)一個(gè)拓?fù)鋵?duì)象均生成相應(yīng)類的一個(gè)對(duì)象,并將該對(duì)象插 入到對(duì)應(yīng)的列表中。發(fā)現(xiàn)結(jié)束后所得到的拓?fù)浣Y(jié)構(gòu)信息就完全保存在這幾個(gè)鏈表結(jié)構(gòu)中。所述設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊,接收探測(cè)節(jié)點(diǎn)列表,并對(duì)列表中的所有探測(cè)節(jié)點(diǎn) 進(jìn)行網(wǎng)絡(luò)路徑的探測(cè),把探測(cè)得到的節(jié)點(diǎn)存入路由器列表1,路由器之間連接信息存入連接 列表1 ;對(duì)路由器列表1中的所有節(jié)點(diǎn)進(jìn)行源路由測(cè)試,目的是測(cè)試哪些節(jié)點(diǎn)支持源路由探 測(cè),然后將支持源路由探測(cè)的節(jié)點(diǎn)存入源路由器列表(SourceRouteList)中;把源路由器 列表中的節(jié)點(diǎn)作為中間節(jié)點(diǎn),把路由器列表1中的節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn)進(jìn)行源路由探測(cè),將 新發(fā)現(xiàn)的路由器之間連接信息存入連接列表1 ;若在源路由探測(cè)中,發(fā)現(xiàn)一些新的節(jié)點(diǎn),則 把這些新的節(jié)點(diǎn)寫入路由器列表1中并進(jìn)行源路由探測(cè);若設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊在探 測(cè)過(guò)程中發(fā)現(xiàn)路由別名,則把路由別名保存到別名列表中。設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的工作流程,如圖3所示,具體包括以下步驟S2. 1、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并進(jìn)入 下一步驟;S2. 2、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊判斷探測(cè)節(jié)點(diǎn)列表中的地址是否都進(jìn)行了普通路 由探測(cè),若是,則跳轉(zhuǎn)至S2. 4 ;若不是,則在探測(cè)節(jié)點(diǎn)列表中選擇一個(gè)沒(méi)有進(jìn)行普通路由探 測(cè)的地址進(jìn)行普通路由探測(cè),即設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以選擇的地址為目標(biāo)地址發(fā)送路 由路徑探測(cè)包,等待并接收路由路徑探測(cè)包的返回結(jié)果,進(jìn)入下一步驟;S2. 3、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊分析路由路徑探測(cè)包的返回結(jié)果,依次獲取設(shè)備 的IPv6地址、該設(shè)備的跳數(shù)、設(shè)備間連接信息,并將設(shè)備IPv6地址和該設(shè)備的跳數(shù)保存到 路由器列表1,把設(shè)備間連接信息保存到連接列表1中;若路由路徑探測(cè)包的返回結(jié)果中最 后一跳的地址和探測(cè)的目標(biāo)地址不一樣,那么這兩個(gè)地址是路由別名,把路由別名保存到 別名列表中,返回步驟S2. 2;S2. 4、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊發(fā)送一個(gè)路由路徑探測(cè)包到一個(gè)可以到達(dá)的地 址,根據(jù)探測(cè)包返回結(jié)果中第一跳的地址來(lái)獲取網(wǎng)關(guān)地址,進(jìn)入下一步驟;S2. 5、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以網(wǎng)關(guān)地址為目標(biāo)地址,路由器列表1中沒(méi)有進(jìn) 行過(guò)源路由測(cè)試的的路由器為中間節(jié)點(diǎn),進(jìn)行源路由測(cè)試,將支持源路由探測(cè)的節(jié)點(diǎn)放到 源路由器列表中;S2. 6、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以路由器列表1中的節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn),源路由器列表中節(jié)點(diǎn)為中間節(jié)點(diǎn),進(jìn)行源路由探測(cè),并進(jìn)入一下步驟;S2. 7、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊分析步驟S2. 6中源路由探測(cè)的結(jié)果,將新發(fā)現(xiàn)的 路由器之間的連接信息存入連接列表1 ;若在源路由測(cè)試和源路由探測(cè)中,發(fā)現(xiàn)一些新的 節(jié)點(diǎn),則把這些新的節(jié)點(diǎn)寫入路由器列表1 ;設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊進(jìn)行別名判斷,即當(dāng)對(duì)同一地址進(jìn)行源路由探測(cè)時(shí),若 返回報(bào)文的源地址與探測(cè)的地址不同,則返回報(bào)文的源地址與探測(cè)地址是路由別名,把路 由別名保存到別名列表,進(jìn)入下一步驟;S2. 8、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊判斷在進(jìn)行步驟S2. 5的源路由測(cè)試及步驟S2. 6 的源路由探測(cè)時(shí),是否發(fā)現(xiàn)一些新的節(jié)點(diǎn),若有,則返回至步驟S2. 5 ;若否,則把路由器列 表1、連接列表1和別名列表傳送給分析整合模塊,結(jié)束操作。所述S2. 5中,設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊在進(jìn)行源路由測(cè)試前,判斷某節(jié)點(diǎn)是否需 要進(jìn)行源路由測(cè)試,有幾種情況無(wú)需進(jìn)行源路由測(cè)試1.設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)此地址進(jìn)行過(guò)源路由測(cè)試;2.此地址位于網(wǎng)關(guān)上;3.之前設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊已經(jīng)對(duì)此地址所在路由器上的其他地址進(jìn)行過(guò) 源路由測(cè)試。所述步驟S2. 6、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊在進(jìn)行源路由探測(cè)前,判斷某節(jié)點(diǎn)是否 需要進(jìn)行源路由探測(cè),有幾種情況無(wú)需測(cè)試1.設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)此地址進(jìn)行過(guò)源路由探測(cè);2.目標(biāo)地址位于網(wǎng)關(guān)上;3.中間節(jié)點(diǎn)位于網(wǎng)關(guān)上;4.中間節(jié)點(diǎn)和目標(biāo)地址是路由別名;5.設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊曾經(jīng)把目標(biāo)地址作為中間節(jié)點(diǎn)探測(cè)過(guò),而且探測(cè)包不 能到達(dá)目標(biāo)地址。所述設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送一個(gè)組播包,計(jì)算機(jī)的對(duì)端路由器收到該組播 包后發(fā)一個(gè)回應(yīng)包,設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析對(duì)端路由器的回應(yīng)包,得到對(duì)端路由器 的本地鏈路地址;然后設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊向?qū)Χ寺酚善靼l(fā)一個(gè)請(qǐng)求數(shù)據(jù)庫(kù)描述包, 得到對(duì)端路由器返回的回應(yīng)包,設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊再次向?qū)Χ寺酚善靼l(fā)一個(gè)請(qǐng)求數(shù) 據(jù)庫(kù)描述包,完成與對(duì)端路由器的協(xié)商;然后設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊通過(guò)發(fā)送鏈路狀態(tài) 請(qǐng)求報(bào)文向?qū)Χ寺酚善魃暾?qǐng)獲取鏈路狀態(tài)數(shù)據(jù),對(duì)端路由器收到請(qǐng)求后就會(huì)回應(yīng)若干個(gè)鏈 路狀態(tài)數(shù)據(jù)包,設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊獲得鏈路狀態(tài)數(shù)據(jù)包中的鏈路狀態(tài)數(shù)據(jù),分析整 理鏈路狀態(tài)數(shù)據(jù)形成網(wǎng)絡(luò)拓?fù)湫畔ⅲㄒ月酚善骶幪?hào)(RouterID)標(biāo)識(shí)的路由器信息、路 由器之間的連接信息、子網(wǎng)信息以及路由器與子網(wǎng)之間的連接信息等,最后將網(wǎng)絡(luò)拓?fù)湫?息發(fā)送至分析整合模塊。設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊的工作流程,如圖4所示,具體包括以下步驟Q2. 1、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊通過(guò)計(jì)算機(jī)系統(tǒng),創(chuàng)建一個(gè)套接字到一個(gè)端口 (本實(shí)施例中端口默認(rèn)為1234,用戶可以修改)上進(jìn)行監(jiān)聽,若收到客戶端的結(jié)束命令時(shí), 則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊結(jié)束操作;若收到客戶端的開始命令時(shí),則進(jìn)入下一步驟;Q2. 2、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊獲取自己計(jì)算機(jī)的網(wǎng)卡地址,然后進(jìn)入下一步驟;Q2. 3、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊初始化組播包,在組播包中填充自己的地址、組播 地址、校驗(yàn)碼,以及組播包的類型與長(zhǎng)度;其中組播包的類型用于說(shuō)明這是一個(gè)與鄰居打招 呼的包,主要是用來(lái)發(fā)現(xiàn)鄰居的,以便獲取鄰近路由器(或稱為對(duì)端路由器)的本地鏈路地 址,所述校驗(yàn)碼用于標(biāo)記組播包在傳遞時(shí)有無(wú)誤碼,然后進(jìn)入下一步驟;Q2. 4、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將步驟Q2. 3中構(gòu)建的組播包發(fā)送到網(wǎng)絡(luò)中,進(jìn)入 下一步驟;Q2. 5、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器對(duì)組播包的回應(yīng)包,若 是,則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析對(duì)端路由器的回應(yīng)包,獲取對(duì)端路由器的本地鏈路地 址,并進(jìn)入下一步驟;若不是,則跳轉(zhuǎn)至步驟Q2. 7 ;Q2. 6、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)庫(kù)描述包給對(duì)端路由器,并進(jìn) 入下一步驟;Q2. 7、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器對(duì)請(qǐng)求數(shù)據(jù)庫(kù)描述包的 回應(yīng)包,若是,則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊再發(fā)一次請(qǐng)求數(shù)據(jù)庫(kù)描述包給對(duì)端路由器,以完 成與對(duì)端路由器的協(xié)商,同時(shí)進(jìn)入拓?fù)湫畔⒔粨Q階段,即進(jìn)入下一步驟;若不是,則跳轉(zhuǎn)至 步驟Q2. 9 ;Q2. 8、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文,向?qū)Χ寺酚善魃暾?qǐng)獲取 鏈路狀態(tài)數(shù)據(jù),進(jìn)入下一步驟;Q2. 9、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器回應(yīng)的鏈路狀態(tài)數(shù)據(jù) 包,若是,則將鏈路狀態(tài)數(shù)據(jù)保存在緩存中,進(jìn)入下一步驟;若不是,則返回至步驟Q2. 5 ;Q2. 10、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否與對(duì)端路由器交換完所有鏈路狀態(tài)數(shù) 據(jù),若是,則進(jìn)入下一步驟;若否,則返回至步驟Q2. 8 ;Q2. 11、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析獲取的鏈路狀態(tài)數(shù)據(jù)信息,形成網(wǎng)絡(luò)拓?fù)湫?息,包括以路由器編號(hào)標(biāo)識(shí)的路由器列表2、連接列表2、子網(wǎng)列表以及路由器直連子網(wǎng)列 表,最后將網(wǎng)絡(luò)拓?fù)湫畔l(fā)送至分析整合模塊。所述分析整合模塊是利用跳數(shù)來(lái)將設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系 發(fā)現(xiàn)模塊的信息有機(jī)結(jié)合。所述設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送的網(wǎng)絡(luò)拓?fù)湫畔⑹怯寐酚善?編號(hào)(RouterID)來(lái)標(biāo)識(shí)路由器的,而在設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊輸出的拓?fù)湎嚓P(guān)信息(包 括路由器列表1、連接列表1和別名列表)是用IPv6地址來(lái)標(biāo)識(shí)路由器的。首先利用設(shè) 備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)中發(fā)現(xiàn)的子網(wǎng)信息確定設(shè)備及相連關(guān)系發(fā)現(xiàn)的IPv6地址是在哪個(gè)網(wǎng)段 中,然后利用到同一路由器的不同地址跳數(shù)相等的原理,計(jì)算網(wǎng)段內(nèi)的路由器的跳數(shù),然后 將網(wǎng)段內(nèi)的路由器的跳數(shù)和IPv6地址標(biāo)識(shí)的路由器的跳數(shù)進(jìn)行比較,若相等,則確定了對(duì) 應(yīng)關(guān)系。分析整合模塊的工作流程,如圖5所示,具體包括以下步驟S3. 1、分析整合模塊計(jì)算以路由器編號(hào)標(biāo)識(shí)的路由器列表2中的每個(gè)節(jié)點(diǎn)的跳 數(shù),進(jìn)入下一步驟;S3. 2、分析整合模塊從具有IPv6地址的路由器列表1中讀出一個(gè)還沒(méi)有進(jìn)行分析 的節(jié)點(diǎn)信息,包括該路由器的IPv6地址和跳數(shù)信息,進(jìn)入下一步驟;S3. 3、設(shè)該節(jié)點(diǎn)表示為IPA,計(jì)算IPA的IP地址前綴,進(jìn)入下一步驟;
S3. 4、分析整合模塊判斷IPA的IP地址前綴是否等于子網(wǎng)列表中的某個(gè)子網(wǎng),若 是,則IPA屬于該子網(wǎng),進(jìn)入下一步驟;若否,則IPA屬于域外設(shè)備節(jié)點(diǎn),跳轉(zhuǎn)至S3. 14 ;S3. 5、分析整合模塊讀出路由器列表2中屬于IPA所在的子網(wǎng)的節(jié)點(diǎn)Rl的跳數(shù), 進(jìn)入下一步驟;S3. 6、分析整合模塊在以路由器編號(hào)標(biāo)識(shí)的路由器列表2中查找IPA所屬的子網(wǎng) 是否還有節(jié)點(diǎn)R2,如果有,分析整合模塊讀出路由器列表2中屬于該子網(wǎng)的節(jié)點(diǎn)R2的跳數(shù), 進(jìn)入下一步驟;如果沒(méi)有,則跳轉(zhuǎn)至S3. 9 ;S3. 7、分析整合模塊判斷IPA的跳數(shù)是否等于節(jié)點(diǎn)Rl的跳數(shù)且不等于節(jié)點(diǎn)R2的 跳數(shù),若IPA的跳數(shù)等于節(jié)點(diǎn)Rl的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn)R2的跳數(shù),則IPA屬于Rl 節(jié)點(diǎn),跳轉(zhuǎn)至步驟S3. 14 ;若不是,則進(jìn)入下一步驟;S3. 8、分析整合模塊判斷IPA的跳數(shù)是否等于節(jié)點(diǎn)R2的跳數(shù)且IPA的跳數(shù)不等于 節(jié)點(diǎn)Rl的跳數(shù),若IPA的跳數(shù)等于節(jié)點(diǎn)R2的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn)Rl的跳數(shù),則 IPA屬于R2節(jié)點(diǎn),跳轉(zhuǎn)至步驟S3. 14 ;若不是,則進(jìn)入下一步驟;S3. 9、分析整合模塊判斷IPA是否存在已經(jīng)進(jìn)行分析的別名IPB,若有,并且IPB屬 于路由器R,則IPA也屬于路由器R,將IPA的IPv6地址存入接口表(接口表中含有接口所 屬的路由器R信息),跳轉(zhuǎn)至步驟S3. 14 ;若沒(méi)有,則進(jìn)入下一步驟;S3. 10、分析整合模塊判斷IPA是否存在沒(méi)有進(jìn)行分析的別名,若有,則讀取該別 名節(jié)點(diǎn)信息(包括該路由器的IPv6地址和跳數(shù)信息),返回至步驟S3. 3 ;若沒(méi)有,則進(jìn)入下 一步驟;S3. 11、分析整合模塊判斷IPA所屬子網(wǎng)是否存在其他已經(jīng)進(jìn)行過(guò)分析的節(jié)點(diǎn) IPC,若沒(méi)有,則跳轉(zhuǎn)至步驟S3. 13 ;若有,則進(jìn)入下一步驟;S3. 12、分析整合模塊判斷,若節(jié)點(diǎn)IPC屬于路由器R1,則IPA屬于路由器Rl的同 網(wǎng)段路由器R2 ;若節(jié)點(diǎn)IPC屬于路由器R2,則IPA屬于路由器R2的同網(wǎng)段路由器Rl ;分析 整合模塊將IPA的地址存入接口表(接口表中含有接口所屬的路由器R2或Rl信息),跳轉(zhuǎn) 至步驟S3. 14 ;S3. 13、分析整合模塊判斷IPA所屬子網(wǎng)是否存在其他沒(méi)有進(jìn)行分析的節(jié)點(diǎn),若存 在,則讀取該節(jié)點(diǎn)信息,包括該路由器的IPv6地址和跳數(shù)信息,返回至步驟S3. 3 ;若不存 在,則進(jìn)入下一步驟;S3. 14、分析整合模塊判斷具有IPv6地址的路由器列表1所有節(jié)點(diǎn)是否已完成分 析,若不是,則返回至步驟S3. 2 ;若是,則進(jìn)入下一步驟;S3. 15、分析整合模塊將分析出的節(jié)點(diǎn)IPv6地址保存在接口表中,如果一臺(tái)路由 器有多個(gè)IP,將最小的IPv6地址保存到新整理的設(shè)備表中,將域外設(shè)備節(jié)點(diǎn)的IPv6地址保 存在設(shè)備表中,將路由器之間的連接關(guān)系保存在連接列表,路由器與子網(wǎng)連接關(guān)系保存在 路由器直連子網(wǎng)列表,子網(wǎng)信息保存在子網(wǎng)列表,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié) 構(gòu)信息存儲(chǔ)模塊。圖6是應(yīng)用本系統(tǒng)在華南理工大學(xué)的網(wǎng)絡(luò)進(jìn)行IPv6拓?fù)渥詣?dòng)發(fā)現(xiàn)的拓?fù)浣Y(jié)構(gòu)示 意圖,出于安全的考慮,這里隱藏了詳細(xì)的IPv6地址信息,其中以R0uterl、R0uter2,……, Routerl8表示路由器。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受所述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化, 均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng),其特征在于,包括探測(cè)列表輸入模塊,用于接收用戶輸入的探測(cè)節(jié)點(diǎn)信息,形成探測(cè)節(jié)點(diǎn)列表并發(fā)送到設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊;設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊,用于接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù)探測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相連關(guān)系,并把獲取的信息發(fā)送至分析整合模塊;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊,用于將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換網(wǎng)絡(luò)拓?fù)湫畔?,得到完整的網(wǎng)絡(luò)拓?fù)湫畔?,并把網(wǎng)絡(luò)拓?fù)湫畔l(fā)送給分析整合模塊;分析整合模塊,用于接收設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的信息并進(jìn)行分析,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊;拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊,用于將完整的拓?fù)浣Y(jié)構(gòu)圖存入數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù),用于存儲(chǔ)拓?fù)浣Y(jié)構(gòu)信息;拓?fù)浣Y(jié)構(gòu)信息顯示模塊,用于顯示數(shù)據(jù)庫(kù)中完整的拓?fù)浣Y(jié)構(gòu)圖。
2.根據(jù)權(quán)利要求1所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng),其特征在于,所述 系統(tǒng)采用對(duì)象的形式來(lái)組織數(shù)據(jù)結(jié)構(gòu),對(duì)于系統(tǒng)中涉及到的每一種拓?fù)鋵?duì)象均定義了一個(gè) 類,具體包括設(shè)備類、子網(wǎng)類、連接類、接口類和路由器直連子網(wǎng)類。
3.根據(jù)權(quán)利要求1所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng),其特征在于,所述系 統(tǒng)采用鏈表的形式來(lái)組織拓?fù)鋵?duì)象,具體包括用于保存所發(fā)現(xiàn)路由器的路由器列表1、路由器列表2和設(shè)備表; 用于保存所發(fā)現(xiàn)子網(wǎng)的子網(wǎng)列表;用于保存所發(fā)現(xiàn)路由器之間連接關(guān)系的連接列表1、連接列表2和連接列表; 用于保存所發(fā)現(xiàn)路由器與子網(wǎng)連接關(guān)系的路由器直連子網(wǎng)列表; 和用于保存路由別名的別名列表和接口表。
4.一種基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征在于,包括以下步驟51、探測(cè)列表輸入模塊接收用戶輸入的探測(cè)節(jié)點(diǎn)信息,形成探測(cè)節(jié)點(diǎn)列表并發(fā)送到設(shè) 備及相連關(guān)系發(fā)現(xiàn)模塊,進(jìn)入步驟S2 ;52、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù)探測(cè)節(jié) 點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相連關(guān)系, 并把獲取的信息發(fā)送至分析整合模塊;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換網(wǎng)絡(luò)拓?fù)湫?息,得到完整的網(wǎng)絡(luò)拓?fù)湫畔?,并把網(wǎng)絡(luò)拓?fù)湫畔l(fā)送至分析整合模塊,進(jìn)入步驟S3 ;53、分析整合模塊接收設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊和設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊的信息并 進(jìn)行分析,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊,進(jìn)入S4 ;54、拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊將完整的拓?fù)浣Y(jié)構(gòu)圖存入數(shù)據(jù)庫(kù),進(jìn)入步驟S5;55、拓?fù)浣Y(jié)構(gòu)信息顯示模塊顯示數(shù)據(jù)庫(kù)中完整的拓?fù)浣Y(jié)構(gòu)圖。
5.根據(jù)權(quán)利要求4所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征在 于,所述步驟S2設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并根據(jù) 探測(cè)節(jié)點(diǎn)列表中的每個(gè)地址發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相連關(guān)系,并把獲取的信息發(fā)送至分析整合模塊,具體包括以下步驟S2. 1、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊接收探測(cè)列表輸入模塊的探測(cè)節(jié)點(diǎn)列表,并進(jìn)入下一 步驟;S2. 2、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊判斷探測(cè)節(jié)點(diǎn)列表中的地址是否都進(jìn)行了普通路由測(cè) 試,若是,則跳轉(zhuǎn)至S2. 4 ;若不是,則在探測(cè)節(jié)點(diǎn)列表中選擇一個(gè)沒(méi)有進(jìn)行普通路由探測(cè)的 地址進(jìn)行普通路由探測(cè),即設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以選擇的地址為目標(biāo)地址發(fā)送路由路 徑探測(cè)包,等待并接收路由路徑探測(cè)包的返回結(jié)果,進(jìn)入下一步驟;S2. 3、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊分析路由路徑探測(cè)包的返回結(jié)果,依次獲取設(shè)備的 IPv6地址、該設(shè)備的跳數(shù)、設(shè)備間連接信息,并將設(shè)備IPv6地址和該設(shè)備的跳數(shù)保存到路 由器列表1,把設(shè)備間連接信息保存到連接列表1中;若路由路徑探測(cè)包的返回結(jié)果中最后 一跳的地址和探測(cè)的目標(biāo)地址不一樣,那么這兩個(gè)地址是路由別名,把路由別名保存到別 名列表中,返回步驟S2. 2 ;S2. 4、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊發(fā)送一個(gè)路由路徑探測(cè)包到一個(gè)可以到達(dá)的地址,根 據(jù)探測(cè)包返回結(jié)果中第一跳的地址來(lái)獲取網(wǎng)關(guān)地址,進(jìn)入下一步驟;S2. 5、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以網(wǎng)關(guān)地址為目標(biāo)地址,路由器列表1中沒(méi)有進(jìn)行過(guò) 源路由測(cè)試的路由器為中間節(jié)點(diǎn),進(jìn)行源路由測(cè)試,將支持源路由探測(cè)的節(jié)點(diǎn)放到源路由 器列表中;S2. 6、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊以路由器列表1中的節(jié)點(diǎn)為目標(biāo)節(jié)點(diǎn),源路由器列表 中節(jié)點(diǎn)為中間節(jié)點(diǎn),進(jìn)行源路由探測(cè),并進(jìn)入一下步驟;S2. 7、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊分析步驟S2. 6中源路由探測(cè)的結(jié)果,將新發(fā)現(xiàn)的連接 信息存入連接列表1 ;若在源路由測(cè)試和源路由探測(cè)中,發(fā)現(xiàn)一些新的節(jié)點(diǎn),則把這些新的 節(jié)點(diǎn)寫入路由器列表1 ;設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊進(jìn)行別名判斷,即當(dāng)對(duì)同一地址進(jìn)行源路由探測(cè)時(shí),若返回 報(bào)文的源地址與探測(cè)的地址不同,則返回報(bào)文的源地址與探測(cè)地址是路由別名,把路由別 名保存到別名列表,進(jìn)入下一步驟;S2. 8、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊判斷在進(jìn)行步驟S2. 5的源路由測(cè)試及步驟S2. 6的源 路由探測(cè)時(shí),是否發(fā)現(xiàn)一些新的節(jié)點(diǎn),若有,則返回至步驟S2. 5 ;若否,則把路由器列表1、 連接列表1和別名列表傳送給分析整合模塊,結(jié)束操作。
6.根據(jù)權(quán)利要求5所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征在 于,在步驟S2. 5中,下述節(jié)點(diǎn)無(wú)需進(jìn)行源路由測(cè)試(1)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)該節(jié)點(diǎn)進(jìn)行過(guò)源路由測(cè)試;(2)該節(jié)點(diǎn)位于網(wǎng)關(guān)上;(3)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)該節(jié)點(diǎn)所在路由器上的其他地址進(jìn)行過(guò)源路 由測(cè)試。
7.根據(jù)權(quán)利要求5所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征在 于,在步驟S2. 6中,下述節(jié)點(diǎn)無(wú)需進(jìn)行源路由探測(cè)(1)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊之前已經(jīng)對(duì)此節(jié)點(diǎn)進(jìn)行過(guò)源路由探測(cè);(2)目標(biāo)地址位于網(wǎng)關(guān)上;(3)中間節(jié)點(diǎn)位于網(wǎng)關(guān)上;(4)中間節(jié)點(diǎn)和目標(biāo)地址是路由別名;(5)設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊曾經(jīng)把目標(biāo)地址作為中間節(jié)點(diǎn)探測(cè)過(guò),而且探測(cè)包不能 到達(dá)目標(biāo)地址。
8.根據(jù)權(quán)利要求5所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征在 于,所述步驟S2設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將計(jì)算機(jī)模擬成路由器,與網(wǎng)絡(luò)上的路由器交換 網(wǎng)絡(luò)拓?fù)湫畔ⅲ玫酵暾耐負(fù)浣Y(jié)構(gòu)信息,并把拓?fù)浣Y(jié)構(gòu)信息發(fā)送至分析整合模塊,具體包 括以下步驟Q2. 1、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊通過(guò)計(jì)算機(jī)系統(tǒng),創(chuàng)建一個(gè)套接字到一個(gè)端口上進(jìn)行 監(jiān)聽,若收到客戶端的結(jié)束命令時(shí),則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊結(jié)束操作;若收到客戶端的 開始命令時(shí),則進(jìn)入下一步驟;Q2. 2、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊獲取自己計(jì)算機(jī)的網(wǎng)卡地址,然后進(jìn)入下一步驟; Q2. 3、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊初始化組播包,然后進(jìn)入下一步驟; Q2. 4、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊將步驟Q2. 3中構(gòu)建的組播包發(fā)送到網(wǎng)絡(luò)中,進(jìn)入下一 步驟;Q2. 5、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器對(duì)組播包的回應(yīng)包,若是,則 設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析對(duì)端路由器的回應(yīng)包,獲取對(duì)端路由器的本地鏈路地址,并 進(jìn)入下一步驟;若不是,則跳轉(zhuǎn)至步驟Q2. 7 ;Q2. 6、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送一個(gè)請(qǐng)求數(shù)據(jù)庫(kù)描述包給對(duì)端路由器,并進(jìn)入下一步驟;Q2. 7、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器對(duì)請(qǐng)求數(shù)據(jù)庫(kù)描述包的回應(yīng) 包,若是,則設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊再發(fā)一次請(qǐng)求數(shù)據(jù)庫(kù)描述包給對(duì)端路由器,以完成與 對(duì)端路由器的協(xié)商,進(jìn)入下一步驟;若不是,則跳轉(zhuǎn)至步驟Q2. 9 ;Q2. 8、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊發(fā)送鏈路狀態(tài)請(qǐng)求報(bào)文,向?qū)Χ寺酚善魃暾?qǐng)獲取鏈路 狀態(tài)數(shù)據(jù),進(jìn)入下一步驟;Q2. 9、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否收到對(duì)端路由器回應(yīng)的鏈路狀態(tài)數(shù)據(jù)包,若 是,則將鏈路狀態(tài)數(shù)據(jù)保存在緩存中,進(jìn)入下一步驟;若不是,則返回至步驟Q2. 5 ;Q2. 10、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊判斷是否與對(duì)端路由器交換完所有鏈路狀態(tài)數(shù)據(jù),若 是,則進(jìn)入下一步驟;若否,則返回至步驟Q2. 8 ;Q2. 11、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊分析獲取的鏈路狀態(tài)數(shù)據(jù)信息,形成網(wǎng)絡(luò)拓?fù)湫畔ⅲ?包括以路由器編號(hào)標(biāo)識(shí)的路由器列表2、連接列表2、子網(wǎng)列表以及路由器直連子網(wǎng)列表, 最后將網(wǎng)絡(luò)拓?fù)湫畔l(fā)送至分析整合模塊。
9.根據(jù)權(quán)利要求8所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征在 于,所述步驟Q2. 3中設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊初始化組播包,具體是指設(shè)備及子網(wǎng)拓?fù)浒l(fā) 現(xiàn)模塊在組播包中填充自己的地址、組播地址、校驗(yàn)碼,以及組播包的類型與長(zhǎng)度;其中組 播包的類型用于說(shuō)明這是一個(gè)與鄰居打招呼的包,主要是用來(lái)發(fā)現(xiàn)鄰居的,以便獲取鄰近 路由器的本地鏈路地址,所述校驗(yàn)碼用于標(biāo)記組播包在傳遞時(shí)有無(wú)誤碼。
10.根據(jù)權(quán)利要求8所述基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng)的實(shí)現(xiàn)方法,其特征 在于,所述步驟S3具體包括以下步驟S3. 1、分析整合模塊計(jì)算以路由器編號(hào)標(biāo)識(shí)的路由器列表2中的每個(gè)節(jié)點(diǎn)的跳數(shù),進(jìn)入下一步驟;S3. 2、分析整合模塊從具有IPv6地址的路由器列表1中讀出一個(gè)還沒(méi)有進(jìn)行分析的節(jié) 點(diǎn)信息,包括該路由器的IPv6地址和跳數(shù)信息,進(jìn)入下一步驟;S3. 3、設(shè)該節(jié)點(diǎn)表示為IPA,計(jì)算IPA的IP地址前綴,進(jìn)入下一步驟; S3. 4、分析整合模塊判斷IPA的IP地址前綴是否等于子網(wǎng)列表中的某個(gè)子網(wǎng),若是,則 IPA屬于該子網(wǎng),進(jìn)入下一步驟;若否,則IPA屬于域外設(shè)備節(jié)點(diǎn),跳轉(zhuǎn)至S3. 14 ;S3. 5、分析整合模塊讀出路由器列表2中屬于IPA所在的子網(wǎng)的節(jié)點(diǎn)Rl的跳數(shù),進(jìn)入 下一步驟;S3. 6、分析整合模塊在以路由器編號(hào)標(biāo)識(shí)的路由器列表2中查找IPA所屬的子網(wǎng)是否 還有節(jié)點(diǎn)R2,如果有,分析整合模塊讀出路由器列表2中屬于該子網(wǎng)的節(jié)點(diǎn)R2的跳數(shù),進(jìn)入 下一步驟;如果沒(méi)有,則跳轉(zhuǎn)至S3. 9 ;S3. 7、分析整合模塊判斷IPA的跳數(shù)是否等于節(jié)點(diǎn)Rl的跳數(shù)且不等于節(jié)點(diǎn)R2的跳數(shù), 若IPA的跳數(shù)等于節(jié)點(diǎn)Rl的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn)R2的跳數(shù),則IPA屬于Rl節(jié)點(diǎn), 跳轉(zhuǎn)至步驟S3. 14 ;若不是,則進(jìn)入下一步驟;S3. 8、分析整合模塊判斷IPA的跳數(shù)是否等于節(jié)點(diǎn)R2的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn) Rl的跳數(shù),若IPA的跳數(shù)等于節(jié)點(diǎn)R2的跳數(shù)且IPA的跳數(shù)不等于節(jié)點(diǎn)Rl的跳數(shù),則IPA屬 于R2節(jié)點(diǎn),跳轉(zhuǎn)至步驟S3. 14 ;若不是,則進(jìn)入下一步驟;S3. 9、分析整合模塊判斷IPA是否存在已經(jīng)進(jìn)行分析的別名IPB,若有,并且IPB屬于 路由器R,則IPA也屬于路由器R,將IPA的IPv6地址存入接口表,跳轉(zhuǎn)至步驟S3. 14 ;若沒(méi) 有,則進(jìn)入下一步驟;S3. 10、分析整合模塊判斷IPA是否存在沒(méi)有進(jìn)行分析的別名,若有,則讀取該別名節(jié) 點(diǎn)信息,返回至步驟S3. 3 ;若沒(méi)有,則進(jìn)入下一步驟;S3. 11、分析整合模塊判斷IPA所屬子網(wǎng)是否存在其他已經(jīng)進(jìn)行過(guò)分析的節(jié)點(diǎn)IPC,若 沒(méi)有,則跳轉(zhuǎn)至步驟S3. 13 ;若有,則進(jìn)入下一步驟;S3. 12、分析整合模塊判斷,若節(jié)點(diǎn)IPC屬于路由器R1,則IPA屬于路由器Rl的同網(wǎng)段 路由器R2;若節(jié)點(diǎn)IPC屬于路由器R2,則IPA屬于路由器R2的同網(wǎng)段路由器Rl ;分析整合 模塊將IPA的地址存入接口表,跳轉(zhuǎn)至步驟S3. 14 ;S3. 13、分析整合模塊判斷IPA所屬子網(wǎng)是否存在其他沒(méi)有進(jìn)行分析的節(jié)點(diǎn),若存在, 則讀取該節(jié)點(diǎn)信息,包括該路由器的IPv6地址和跳數(shù)信息,返回至步驟S3. 3 ;若不存在,則 進(jìn)入下一步驟;S3. 14、分析整合模塊判斷具有IPv6地址的路由器列表1所有節(jié)點(diǎn)是否已完成分析,若 不是,則返回至步驟S3. 2 ;若是,則進(jìn)入下一步驟;S3. 15、分析整合模塊將分析出的節(jié)點(diǎn)IPv6地址保存在接口表中,如果一臺(tái)路由器有 多個(gè)IP,將最小的IPv6地址保存到新整理的設(shè)備表中,將域外設(shè)備節(jié)點(diǎn)的IPv6地址保存在 設(shè)備表中,將路由器之間的連接關(guān)系保存在連接列表,路由器與子網(wǎng)連接關(guān)系保存在路由 器直連子網(wǎng)列表,子網(wǎng)信息保存在子網(wǎng)列表,形成完整的拓?fù)浣Y(jié)構(gòu)圖,并發(fā)送至拓?fù)浣Y(jié)構(gòu)信 息存儲(chǔ)模塊。
全文摘要
本發(fā)明公開了一種基于IPv6的下一代互聯(lián)網(wǎng)拓?fù)浒l(fā)現(xiàn)系統(tǒng),包括探測(cè)列表輸入模塊、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊、設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊、分析整合模塊、拓?fù)浣Y(jié)構(gòu)信息存儲(chǔ)模塊、數(shù)據(jù)庫(kù)和拓?fù)浣Y(jié)構(gòu)信息顯示模塊。本發(fā)明還公開上述系統(tǒng)的實(shí)現(xiàn)方法,包括以下步驟S1、探測(cè)列表輸入模塊形成探測(cè)節(jié)點(diǎn)列表;S2、設(shè)備及相連關(guān)系發(fā)現(xiàn)模塊發(fā)送網(wǎng)絡(luò)路徑探測(cè)包,獲取以IPv6地址標(biāo)識(shí)的路由器及其相連關(guān)系;設(shè)備及子網(wǎng)拓?fù)浒l(fā)現(xiàn)模塊與網(wǎng)絡(luò)上的路由器交換網(wǎng)絡(luò)拓?fù)湫畔?,得到網(wǎng)絡(luò)拓?fù)湫畔?;S3、分析整合模塊進(jìn)行分析形成完整的拓?fù)浣Y(jié)構(gòu)圖。本發(fā)明具有穩(wěn)定性加強(qiáng)、性能更好、消除別名,以及有效提升拓?fù)浒l(fā)現(xiàn)的準(zhǔn)確性和完整性等優(yōu)點(diǎn)。
文檔編號(hào)H04L12/26GK101945043SQ20101027586
公開日2011年1月12日 申請(qǐng)日期2010年9月6日 優(yōu)先權(quán)日2010年9月6日
發(fā)明者張凌, 李佳, 董守斌, 董守玲, 許勇, 鄧劍峰, 陳啟愉 申請(qǐng)人:華南理工大學(xué);廣州數(shù)園網(wǎng)絡(luò)有限公司