專利名稱:IPv6網(wǎng)絡(luò)路由器級拓撲發(fā)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)管理技術(shù)領(lǐng)域,尤其涉及一種IPv6網(wǎng)絡(luò)路由器級拓撲發(fā)現(xiàn)方法。
背景技術(shù):
拓撲發(fā)現(xiàn)是IP網(wǎng)絡(luò)管理的一項基本功能,主要實現(xiàn)網(wǎng)絡(luò)節(jié)點存在性、連接性信息的自動發(fā)現(xiàn)及更新。隨著IPv6協(xié)議的廣泛推行,網(wǎng)絡(luò)路由器級拓撲發(fā)現(xiàn)方法面臨全新的挑戰(zhàn)。地址結(jié)構(gòu)、相關(guān)協(xié)議以及設(shè)備支持情況的變化使得原有面向IPv4的拓撲發(fā)現(xiàn)方法不再適用。對于節(jié)點規(guī)模龐大的IPv6網(wǎng)絡(luò)設(shè)計有效的拓撲發(fā)現(xiàn)算法是下一代計算機網(wǎng)絡(luò)管理的切實需求。域內(nèi)的IPv6網(wǎng)絡(luò)拓撲發(fā)現(xiàn)主要有以下三種思路。第一,基于SNMP協(xié)議的拓撲發(fā)現(xiàn)算法?;赟NMP的拓撲發(fā)現(xiàn)技術(shù)在IPv4網(wǎng)絡(luò)拓撲發(fā)現(xiàn)中相對成熟。然而,IPv6網(wǎng)絡(luò)巨大的地址空間使得基于SNMP發(fā)現(xiàn)方法的性能較差,而且目前各個網(wǎng)絡(luò)設(shè)備對于SNMPv3查詢所需的MIB支持情況不好。第二,基于traCer0ute6的主動測量方法。利用ICMP消息獲取探測源節(jié)點與探測目標節(jié)點之間的拓撲關(guān)系,適用范圍較廣。許多研究者在進行骨干IPv6網(wǎng)拓撲測量采用了這種方法。然而,對被管網(wǎng)絡(luò)進行單點的traceroute測量會使得測量的拓撲結(jié)果呈現(xiàn)樹狀特征,部分鏈路信息無法準確發(fā)現(xiàn);而多點部署,一方面在路由器對源路由機制支持不好的情況下會非常繁瑣,另一方面會帶來路由器別名問題,同一臺路由器由于在拓撲發(fā)現(xiàn)過程中被不同的接口地址標識,會被誤認為多臺不同的路由器。第三,基于開放式最短路徑優(yōu)先(OSPF)協(xié)議的拓撲發(fā)現(xiàn)方法。OSPF協(xié)議是當前使用范圍最廣的域內(nèi)路由協(xié)議,屬于鏈路狀態(tài)協(xié)議。同一區(qū)域內(nèi)的路由器通過交換鏈路狀態(tài)信息進行鏈路狀態(tài)數(shù)據(jù)庫的同步,以實現(xiàn)路由計算。通過與網(wǎng)絡(luò)中路由器建立鄰居關(guān)系,獲取鏈路狀態(tài)信息,就可以進一步分析出網(wǎng)絡(luò)的拓撲。這種方法發(fā)現(xiàn)速度快、發(fā)現(xiàn)信息準確、效率很高,在IPv4拓撲發(fā)現(xiàn)場景下令人滿意。然而,在IPv6的網(wǎng)絡(luò)環(huán)境中,0SPFv3協(xié)議將地址語義分離,采用32位id標識路由器。雖然不影響路由的計算,但是基于OSPF的拓撲發(fā)現(xiàn)方法卻因此無法準確標識路由器節(jié)點。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何在IPv6網(wǎng)絡(luò)環(huán)境下進行路由器級拓撲發(fā)現(xiàn),使得在保證發(fā)現(xiàn)結(jié)果完整、準確率高的同時性能開銷盡可能低。(二)技術(shù)方案為了解決上述技術(shù)問題,本發(fā)明提供一種IPv6網(wǎng)絡(luò)路由器級拓撲發(fā)現(xiàn)方法,包括以下步驟Al、基于OSPF協(xié)議進行拓撲發(fā)現(xiàn);A2、基于traceroute6進行拓撲發(fā)現(xiàn);
A3、以O(shè)SPF協(xié)議信息作為啟發(fā)式條件,根據(jù)步驟Al與A2結(jié)果中的拓撲圖特征,將步驟Al與A2的結(jié)果進行整合。 優(yōu)選地,步驟Al具體包括步驟I. I.在服務(wù)器上實現(xiàn)OSPF協(xié)議,并使所述服務(wù)器與一臺被管網(wǎng)絡(luò)路由器建立緊鄰關(guān)系,監(jiān)聽網(wǎng)絡(luò)中洪泛的LSA報文;步驟I. 2.根據(jù)監(jiān)聽得到的LSA報文,獲得網(wǎng)絡(luò)中各路由器節(jié)點之間的連接關(guān)系,將得到的拓撲連接圖記為Ga,其中的路由器節(jié)點用id標識;步驟I. 3.由步驟I. I中的LSA報文中提取出的配置了 Loopback state接口的路由器的id與其ip的匹配關(guān)系以及配置基于OSPF協(xié)議拓撲發(fā)現(xiàn)所需的路由器id與其ip的匹配關(guān)系構(gòu)成集合Mapped,以及id與集合Mapped對應(yīng)的子網(wǎng)前綴的匹配集合N ;若集合
Mapped覆蓋了全部id,則將id替換為IPv6地址,拓撲發(fā)現(xiàn)結(jié)束;若集合Mapped未覆蓋全部id,則繼續(xù)執(zhí)行步驟A2 ;SMapped集合為空集,將與所述服務(wù)器緊鄰的路由器的id與ip的對應(yīng)關(guān)系加入集合Mapped。優(yōu)選地,步驟A2具體為以所述服務(wù)器為源點進行單點的traceroute拓撲測量,將得到的拓撲連接圖記為Gb,測量的目標地址集通過人工配置或者利用步驟SI的拓撲發(fā)現(xiàn)結(jié)果中集合N中的子網(wǎng)前綴自動生成。優(yōu)選地,步驟A3具體包括步驟3. I.參數(shù)初始化步驟3. I. I.對于集合Mapped,從中取出已經(jīng)完成匹配的ip加入集合SI,并從中取出其中已經(jīng)完成匹配的id加入集合S2 ;步驟3. I. 2.對照集合SI,將未完成匹配的ip加入集合IPList ;步驟3. I. 3.對于Ga中的每個節(jié)點,計算其連接度數(shù),加入集合DegreeId ;對于Gb當中的每個節(jié)點,統(tǒng)計其連接度數(shù),加入集合DegreeIp ;步驟3. I. 4.對于Ga中的每個節(jié)點inode,依次執(zhí)行步驟3. I. 4. 1^3. I. 4. 2 步驟3. I. 4. I.將節(jié)點inode加入隊列nodelist,并將inode標記為已訪問,并且在inode之后加入一個標志節(jié)點tnode用于計算節(jié)點之間的距離,初始化s為0, s表示節(jié)點之間的距離;步驟3. I. 4. 2.如果nodelist不為空,則循環(huán)執(zhí)行步驟3. I. 4. 2. I 3. I. 4. 2. 3 步驟3. I. 4. 2. I.按照先入先出的順序從nodelist取出一個節(jié)點jnode ;步驟3. I. 4. 2. 2.如果jnode是Ga中的節(jié)點,則節(jié)點inode與節(jié)點jnode之間的最短距離為s,將此最短距離信息加入集合DistanceId,并將jnode的所有未被訪問過的鄰居節(jié)點加入nodelist,然后標記這些未被訪問過的鄰居節(jié)點為已訪問;步驟3. I. 4. 2. 3.如果jnode是標記節(jié)點tnode,且此時nodelist隊列為空,則結(jié)束步驟3. I. 4 ;如果此時隊列不為空,則將標記節(jié)點tnode放回序列nodelist,并且將s加I ;步驟3. I. 5.對于Gb中的每個節(jié)點tnode,做與步驟3. I. 4中相同的操作,將各個節(jié)點之間的距離存入集合DistanceIp ;步驟3. I. 6.將循環(huán)標記變量Flag置為I ;步驟3. 2.當Flag為I時,循環(huán)執(zhí)行步驟3. 2. I 3. 2. 2
步驟3. 2. I.將 Flag 置為 0 ;步驟3. 2. 2.對于集合SI中的每一個元素IPi, i為集合中元素的序號,依次執(zhí)行步驟 3. 2. 2. I 3. 2. 2. 3 步驟3. 2. 2. I.從集合Mapped中取出IPi對應(yīng)的IDi, IDi表示與IPi對應(yīng)的路由器的id信息;步驟3. 2. 2. 2.對于步驟Al的拓撲發(fā)現(xiàn)結(jié)果中每一個不屬于集合S2的路由器標識IDk,執(zhí)行步驟3. 2. 2. 2. I 步驟3. 2. 2. 2. I.對于集合IPList中的每一個元素IP。,執(zhí)行步驟3. 2. 2. 2. I. I 步驟3. 2. 2. 2. I. I.如果集合DistanceIp中IPi與IP。之間的距離Distf:大于或等于集合DistanceId中IDi與IDk之間的距離/,并且度數(shù)集合DegreeId中節(jié)點k的度數(shù)大于或等于DegreeIp中節(jié)點c的度數(shù)/)電< Depf *則將IDk作為一個IP。可能的匹配加入IP。的序列MapListB ;步驟3. 2. 2. 3.對于每一個IPList中的元素IPh,依次執(zhí)行步驟3. 2. 2. 3. I 3. 2. 2. 3. 2 步驟3. 2. 2. 3. I.合并 IPh 的 MapListA 與 MapListB,若其 MapListA 不為空,使MapListA取MapListA與MapListB元素的交集,同時將MapListB置為空集;如果MapListA為空集,則將MapListB所有元素加入MapListA,同時將MapListB置為空集;步驟3. 2. 2. 3. 2.如果IPh的MapLi stA所含元素個數(shù)為I,則依次執(zhí)行步驟3. 2. 2. 3. 2. 1 3. 2. 2. 3. 2. 5 步驟3. 2. 2. 3. 2. I.將 IPh 加入集合 SI ;步驟3. 2. 2. 3. 2. 2.將IPh的MapListA所含的唯一元素IDh加入集合S2 ;步驟3. 2. 2. 3. 2. 3.將 IPh 從 IPList 中刪除;步驟3. 2. 2. 3. 2. 4.將IPh與IDh的對應(yīng)信息加入集合Mapped ;步驟3. 2. 2. 3. 2. 5.將 Flag 置為 I ;步驟3. 3.對于SI中所有元素IPi,依次執(zhí)行步驟3. 3. f 3. 3. 2 步驟3. 3. I.從集合Mapped中,取出與IPi對應(yīng)的id信息IDi ;步驟3. 3. 2.將Ga中對應(yīng)的IDi用IPi代替;步驟3. 4.輸出經(jīng)過處理的Ga。優(yōu)選地,步驟SI與S2的執(zhí)行順序可互換或步驟SI與S2同時執(zhí)行。(三)有益效果上述技術(shù)方案具有如下優(yōu)點本發(fā)明綜合了基于OSPF協(xié)議的拓撲發(fā)現(xiàn)方法與基于traceroutee的拓撲發(fā)現(xiàn)方法進行設(shè)計。實驗表明,使用該方法發(fā)現(xiàn)結(jié)果準確率、節(jié)點、鏈路覆蓋率均為100%。對于基于OSPF協(xié)議獲取的拓撲圖節(jié)點的IPv6地址信息進行了有效的補充,整合地址信息的準確率為100%,整合時間〈Is。
圖I是本發(fā)明的方法流程圖;圖2是某大學校園網(wǎng)核心路由器拓撲關(guān)系以及拓撲發(fā)現(xiàn)系統(tǒng)的部署圖;圖3是基于OSPF協(xié)議拓撲發(fā)現(xiàn)結(jié)果;
圖4基于tracerout6的拓撲發(fā)現(xiàn)結(jié)果;圖5基于OSPF協(xié)議拓撲ip-id對照圖;圖6a 圖6c是5個節(jié)點的三種可能的拓撲連接關(guān)系圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。本發(fā)明的目的在于如何在IPv6網(wǎng)絡(luò)環(huán)境下,進行路由器級拓撲發(fā)現(xiàn),使得在保證發(fā)現(xiàn)結(jié)果完整、準確率高的同時性能開銷盡可能低。本發(fā)明綜合了基于OSPF協(xié)議的拓撲發(fā)現(xiàn)方法與基于traceroutee的拓撲發(fā)現(xiàn)方法,本發(fā)明應(yīng)對了 IPv6網(wǎng)絡(luò)的三種不同的場景網(wǎng)絡(luò)中全部路由器配置了 loopback IP、部分路由器配置了 loopback IP以及全部路由
器都沒有配置loopback IP。實驗表明,使用該方法發(fā)現(xiàn)結(jié)果準確率、節(jié)點、鏈路覆蓋率均為100%。對于基于OSPF協(xié)議獲取的拓撲圖節(jié)點的IPv6地址信息進行了有效的補充,整合地址信息的準確率為100%,整合時間〈Is。該方法的實際測試環(huán)境為一個真實的高校校園網(wǎng)。一、IPv6拓撲發(fā)現(xiàn)方法思想應(yīng)用場景分為三類所有被管網(wǎng)絡(luò)路由器配置了 loopback IP (環(huán)回IP),部分路由器配置了 loopback IP以及所有路由器都沒有配置loopback IP。根據(jù)RFC 2740,如果路由器某個接口被配置為Loopback接口,那么該路由器會在Intra-prefix LSA中發(fā)布其id與該Loopback地址的對應(yīng)關(guān)系。這樣,對于“所有被管網(wǎng)絡(luò)路由器配置了 loopback IP”的場景,本發(fā)明通過基于OSPF協(xié)議的拓撲發(fā)現(xiàn)算法獲得被管網(wǎng)絡(luò)的拓撲連接關(guān)系之后,可以在Intra-prefix LSA中將id與其Loopback IP地址的匹配找出,并在拓撲鏈接關(guān)系中將id替換為Loopback IP地址,完成拓撲發(fā)現(xiàn)。對于“部分路由器配置了 loopback IP”這種情況,本發(fā)明的IPv6拓撲發(fā)現(xiàn)方法分為三個階段進行。首先與第一種場景相同,采用基于OSPF協(xié)議的拓撲發(fā)現(xiàn)方法,獲得被管網(wǎng)絡(luò)的拓撲連接關(guān)系。并從Intra-prefix LSA中獲取部分id與Loopback IP地址的匹配。第二步,采用基于traceroute6的單點拓撲發(fā)現(xiàn)方法對被管網(wǎng)絡(luò)進行拓撲探測。通過ICMP消息返回的路由器地址信息,構(gòu)造網(wǎng)絡(luò)拓撲。由于采用單點測量,此時的拓撲鏈接關(guān)系并不完整。第三個階段,整合前兩個階段的結(jié)果,利用traceroutee發(fā)現(xiàn)的路由器地址信息將基于OSPF協(xié)議方法發(fā)現(xiàn)的拓撲結(jié)果補全。此階段,利用第一步得到的部分id-ip匹配關(guān)系,結(jié)合第一步與第二步得到的兩張拓撲圖的圖特性,如節(jié)點之間的跳數(shù)、節(jié)點度等信息,將兩張圖進行對應(yīng)起來。對于“所有路由器都沒有配置loopback IP”的情況,需要啟發(fā)式條件,比如由管理人員手動給出一些id與IP的匹配關(guān)系,至少可以獲得測量點的IP與id的一對對應(yīng)關(guān)系。這樣,這種情況就自然轉(zhuǎn)化到了第二種情況。接下來,給出綜合考慮各種情況的完整的IPv6拓撲發(fā)現(xiàn)算法。二、IPv6拓撲發(fā)現(xiàn)方法步驟參數(shù)說明SI:已完成id-ip匹配的IPv6地址集合
S2:已完成id-ip匹配的路由器id集合Mapped:已完成id_ip匹配的id, ip對應(yīng)關(guān)系集合IPList ;未完成匹配的IPv6地址列表MapListA :對于每個IP地址而言,可能與其匹配的id列表AMapListB :對于每個IP地址而言,可能與其匹配的id列表BDegreeId :步驟I得到的OSPF拓撲連接關(guān)系圖Ga中各節(jié)點度數(shù)序列DegreeIp :步驟2得到的traceroute6拓撲連接關(guān)系圖Gb中各節(jié)點度數(shù)序列DistanceId :步驟I得到的OSPF拓撲連接關(guān)系圖Ga中各節(jié)點對之間的距離集合DistanceIp :步驟2得到的traceroute6拓撲連接關(guān)系圖Gb中各節(jié)點對之間的距離集合Flag :循環(huán)標記變量nodelist:計算圖上各節(jié)點之間最短路徑的過程中,用于存放圖中節(jié)點的隊列inode, jnode:表示圖中的節(jié)點tnode:標記節(jié)點,與數(shù)據(jù)結(jié)構(gòu)圖中節(jié)點inode, jnode相同s:單變量,表示節(jié)點之間的距離對于每個IP地址而言,設(shè)置兩個MapList用作候選id列表求交。對于每一輪迭代,求交的結(jié)果放入MapListA,新的候選id放入MapListB。以下參考圖I進行說明。步驟Al.基于OSPF協(xié)議的拓撲發(fā)現(xiàn)步驟I. I.在服務(wù)器上實現(xiàn)OSPF協(xié)議,并使所述服務(wù)器與一臺被管網(wǎng)絡(luò)路由器建立緊鄰關(guān)系,監(jiān)聽網(wǎng)絡(luò)中洪泛的LSA報文;步驟I. 2.根據(jù)監(jiān)聽得到的LSA報文,獲得網(wǎng)絡(luò)中各路由器節(jié)點之間的連接關(guān)系,將得到的拓撲連接圖記為Ga,其中的路由器節(jié)點用id標識;步驟I. 3.由步驟I. I中的Intra-prefix LSA報文中提取出的配置了 Loopbackstate接口的路由器的id與其ip的匹配關(guān)系以及配置基于OSPF協(xié)議拓撲發(fā)現(xiàn)所需的路由器id與其ip的匹配關(guān)系構(gòu)成集合Mapped,以及id與集合Mapped對應(yīng)的子網(wǎng)前綴的匹配集合N ;若集合Mapped覆蓋了全部id,則將id替換為IPv6地址,拓撲發(fā)現(xiàn)結(jié)束;若集合Mapped未覆蓋全部id,則繼續(xù)執(zhí)行步驟A2 ;若Mapped集合為空集,將與所述服務(wù)器緊鄰的路由器的id與ip的對應(yīng)關(guān)系加入集合Mapped。步驟A2.基于traceroute6的拓撲發(fā)現(xiàn)步驟A2具體為以所述服務(wù)器為源點進行單點的traceroute拓撲測量,將得到的拓撲連接圖記為Gb,測量的目標地址集通過人工配置或者利用步驟SI的拓撲發(fā)現(xiàn)結(jié)果中集合N中的子網(wǎng)前綴自動生成。步驟A3.以被動測量得到的OSPF協(xié)議信息作為啟發(fā)式條件,根據(jù)步驟Al與A2結(jié)果中的拓撲圖特征,整合拓撲發(fā)現(xiàn)結(jié)果步驟3. I.參數(shù)初始化步驟3. I. I.對于集合Mapped,從中取出已經(jīng)完成匹配的ip加入集合SI,并從中取出其中已經(jīng)完成匹配的id加入集合S2 ;步驟3. I. 2.對照集合SI,將未完成匹配的ip加入集合IPList ;
步驟3. I. 3.對于Ga中的每個節(jié)點,計算其連接度數(shù),加入集合DegreeId ;對于Gb當中的每個節(jié)點,統(tǒng)計其連接度數(shù),加入集合DegreeIp ;步驟3. I. 4.對于Ga中的每個節(jié)點inode,依次執(zhí)行步驟3. I. 4. I 3. I. 4. 2 步驟3. I. 4. I.將節(jié)點inode加入隊列nodelist,并將inode標記為已訪問,并且在inode之后加入一個標志節(jié)點tnode用于計算節(jié)點之間的距離,初始化s為0, s表示節(jié)點之間的距離;步驟3. I. 4. 2.如果nodelist不為空,則循環(huán)執(zhí)行步驟3. I. 4. 2. I 3. I. 4. 2. 3 步驟3. I. 4. 2. I.按照先入先出的順序從nodelist取出一個節(jié)點jnode ;步驟3. I. 4. 2. 2.如果jnode是Ga中節(jié)點(即非標記節(jié)點),則節(jié)點inode與節(jié)點jnode之間的最短距離為s,將此最短距離信息加入集合DistanceId,并將jnode的所有未被訪問過的鄰居節(jié)點加入nodelist,然后標記這些未被訪問過的鄰居節(jié)點為已訪問;步驟3. I. 4. 2. 3.如果jnode是標記節(jié)點tnode,且此時nodelist隊列為空,則結(jié)束步驟3. I. 4 ;如果此時隊列不為空,則將標記節(jié)點tnode放回序列nodelist,并且將s加I ;步驟3. I. 5.對于Gb中的每個節(jié)點tnode,做與步驟3. I. 4中相同的操作,將各個節(jié)點之間的距離存入集合DistanceIp ;步驟3. I. 6.將循環(huán)標記變量Flag置為I ;步驟3. 2.當Flag為I時,循環(huán)執(zhí)行步驟3. 2. I 3. 2. 2 步驟3. 2. I.將 Flag 置為 0 ;步驟3. 2. 2.對于集合SI中的每一個元素IPi, i為集合中元素的序號,依次執(zhí)行步驟 3. 2. 2. I 3. 2. 2. 3 步驟3. 2. 2. I.從集合Mapped中取出IPi對應(yīng)的IDi, IDi表示與IPi對應(yīng)的路由器的id信息;步驟3. 2. 2. 2.對于步驟Al的拓撲發(fā)現(xiàn)結(jié)果中每一個不屬于集合S2的路由器標識IDk,執(zhí)行步驟3. 2. 2. 2. I 步驟3. 2. 2. 2. I.對于集合IPList中的每一個元素IP。,執(zhí)行步驟3. 2. 2. 2. I. I 步驟3. 2. 2. 2. I. I.如果集合DistanceIp中IPi與IPc之間的距離大于或等于集合DistanceId中IDi與IDk之間的距離/) /^,并且度數(shù)集合DegreeId中節(jié)點k的度數(shù)大于或等于DegreeIp中節(jié)點c的度數(shù),則將IDk作為一個IP??赡艿钠ヅ浼尤隝P。的序列MapListB ;步驟3. 2. 2. 3.對于每一個IPList中的元素IPh,依次執(zhí)行步驟3. 2. 2. 3. I 3. 2. 2.3.2步驟3. 2. 2. 3. I.合并 IPh 的 MapListA 與 MapListB,若其 MapListA 不為空,使MapListA取MapListA與MapListB元素的交集,同時將MapListB置為空集;如果MapListA為空集,則將MapListB所有元素加入MapListA,同時將MapListB置為空集;步驟3. 2. 2. 3. 2.如果IPh的MapListA所含元素個數(shù)為1,則依次執(zhí)行步驟3. 2. 2. 3. 2. 1 3. 2. 2. 3. 2. 5 步驟3. 2. 2. 3. 2. I.將 IPh 加入集合 SI;步驟3. 2. 2. 3. 2. 2.將IPh的MapListA所含的唯一元素IDh加入集合S2 ;
步驟3. 2. 2. 3. 2. 3.將 IPh 從 IPList 中刪除;步驟3. 2. 2. 3. 2. 4.將IPh與IDh的對應(yīng)信息加入集合Mapped ;步驟3. 2. 2. 3. 2. 5 將 Flag 置為 I ;步驟3. 3.對于SI中所有元素IPi,依次執(zhí)行步驟3. 3. r3. 3. 2 步驟3. 3. I.從集合Mapped中,取出與IPi對應(yīng)的id信息IDi ;步驟3. 3. 2.將Ga中對應(yīng)的IDi用IPi代替;步驟3. 4.輸出經(jīng)過處理的Ga。四、IPv6拓撲發(fā)現(xiàn)方法實驗評估基于上述IPv6拓撲發(fā)現(xiàn)方法,利用C語言在Iinux環(huán)境下設(shè)計并實現(xiàn)了一套IPv6拓撲發(fā)現(xiàn)系統(tǒng)。系統(tǒng)由三部分組成基于OSPF協(xié)議的拓撲發(fā)現(xiàn)模塊、基于traceroutee的拓撲發(fā)現(xiàn)模塊以及拓撲整合模塊。首先啟動基于OSPF協(xié)議的拓撲發(fā)現(xiàn)模塊與基于traceroute6的拓撲發(fā)現(xiàn)模塊。兩個模塊的發(fā)現(xiàn)結(jié)果送入拓撲整合模塊,得出最終的拓撲結(jié)果。為了對本發(fā)明進行評估,在某大學校園網(wǎng)部署了 IPv6拓撲發(fā)現(xiàn)系統(tǒng)。該大學校園網(wǎng)原始拓撲以及拓撲發(fā)現(xiàn)系統(tǒng)部署情況如圖2所示,其中真實的IP地址用隨機化的IP地址替代。該大學校園網(wǎng)共有核心路由器21臺,部署拓撲發(fā)現(xiàn)系統(tǒng)的服務(wù)器與校園網(wǎng)一臺核心路由器建立緊鄰關(guān)系。通過基于OSPF協(xié)議的拓撲發(fā)現(xiàn)模塊得到的拓撲結(jié)果如圖3所示??梢钥吹桨l(fā)現(xiàn)結(jié)果中路由器均以32位id標識,管理員按照路由器的IPv4地址配置了 id。但基于OSPF協(xié)議的拓撲結(jié)果鏈路與節(jié)點發(fā)現(xiàn)率均為100%。通過基于traceroute6的拓撲發(fā)現(xiàn)方法發(fā)現(xiàn)結(jié)果如圖4所示,其中traceroutee的目標地址由OSPF模塊得到的子網(wǎng)前綴信息生成。圖4節(jié)點覆蓋率為100%,而且IP地址均為IPv6地址,但鏈路覆蓋率不高,節(jié)點呈現(xiàn)樹狀分布。這是由于測量單點部署造成的?;贠SPF協(xié)議的拓撲發(fā)現(xiàn)模塊得到的id-ip對應(yīng)關(guān)系如圖5所示。其中,其中12個節(jié)點處標記了通過分析Intra-prefix LSA可以直接得到的id-ip對照關(guān)系,即該節(jié)點配置了 Loopback地址。而未標記的幾點則需要拓撲整合模塊進行地址信息補全。經(jīng)過整合的拓撲發(fā)現(xiàn)結(jié)果與基于OSPF協(xié)議的拓撲發(fā)現(xiàn)結(jié)果以及基于traceroute6的拓撲發(fā)現(xiàn)結(jié)果的對比如表I所示。表I三種拓撲發(fā)現(xiàn)結(jié)果對比
拓撲發(fā)現(xiàn)方法0SPFv3 Traceroute6 本發(fā)明
核心路由器(個)212121
路由器連接關(guān)系(條)302030
路由器IPv6地址信息(個)0TlTl通過表I的結(jié)果對比可以發(fā)現(xiàn),經(jīng)過整合的結(jié)果具有基于OSPF協(xié)議方法發(fā)現(xiàn)拓撲連接關(guān)系準確的優(yōu)勢,同時利用traceroute6結(jié)果補全了 IPv6地址信息。結(jié)果與真實拓撲圖完全吻合,證明了該發(fā)現(xiàn)方法的準確性;在性能方面,在網(wǎng)絡(luò)使用高峰期,內(nèi)存為4G的服務(wù)器上進行試驗用時為秒級,整個發(fā)現(xiàn)用時在IOs之內(nèi),其中,主要用時在traceroutee探測上,OSPF發(fā)現(xiàn)以及整合地址信息均在Is之內(nèi)完成。整合地址信息模塊無需發(fā)送探針,需發(fā)送的traceroute6探針也由于整合算法的存在而大大減少。因此本發(fā)明方法盡可能的減小了測量對于網(wǎng)絡(luò)運行的影響;另外,本發(fā)明方法只需單點進行探測,具有很強的可操作性及可部署性。該大學校園網(wǎng)規(guī)模較大,核心路由器連接關(guān)系較為復(fù)雜。以該大學校園網(wǎng)進行試驗具有代表性。通過實驗說明了本發(fā)明的方法具有很好的準確率、節(jié)點鏈路覆蓋率以及良好的性能和可部署性。當然,在極個別情況下,本發(fā)明的方法在地址信息補全方面需要網(wǎng)絡(luò)管理人員的少量參與,補充進一步的啟發(fā)式條件。對于traceroute6獲取的拓撲圖而言,只需獲取被管網(wǎng)絡(luò)一個樹狀的連通圖。同時,由OSPF發(fā)現(xiàn)模塊分析得出的id-ip匹配關(guān)系以及拓撲發(fā)現(xiàn)系統(tǒng)緊鄰路由器的id-ip匹配關(guān)系作為整合地址信息的啟發(fā)式條件。從圖的角度而言,每一對已知的id-ip匹配相當于為traceroute6得到的樹狀結(jié)構(gòu)圖中該ip對應(yīng)的節(jié)點進行不同顏色的染色。在染色結(jié)果中,軸對稱的子圖所包含的節(jié)點有可能無法進行地址信息的補充。而這部分節(jié)點往往占比非常小。對于樹狀連通圖而言,本發(fā)明定義拓撲地址信息整合成功率期望為E'。E'是一個關(guān)于節(jié)點數(shù)n,已知id-ip匹配數(shù)m的函數(shù),記作E' (n,m)。具有n個節(jié)點的樹結(jié)構(gòu)、進行m個節(jié)點染色對應(yīng)的圖為GpG2. . .Gg,其中g(shù)為關(guān)于n與m的函數(shù),記作g(n,m),表示經(jīng)過染色的圖的種類,其值由n與m共同確定。在各個染色圖中可以完成地址匹配的節(jié)點數(shù)記作Si,則E %(nr m) =(I)進而,對于每一個由n個節(jié)點構(gòu)成的拓撲而言,拓撲地址信息整合成功率記作E(n)
權(quán)利要求
1.一種IPv6網(wǎng)絡(luò)路由器級拓撲發(fā)現(xiàn)方法,其特征在于,包括以下步驟 Al、基于OSPF協(xié)議進行拓撲發(fā)現(xiàn); A2、基于traceroute6進行拓撲發(fā)現(xiàn); A3、以O(shè)SPF協(xié)議信息作為啟發(fā)式條件,根據(jù)步驟Al與A2結(jié)果中的拓撲圖特征將步驟Al與A2的結(jié)果進行整合。
2.如權(quán)利要求I所述的方法,其特征在于,步驟Al具體包括 步驟I. I.在服務(wù)器上實現(xiàn)OSPF協(xié)議,并使所述服務(wù)器與一臺被管網(wǎng)絡(luò)路由器建立緊鄰關(guān)系,監(jiān)聽網(wǎng)絡(luò)中洪泛的LSA報文; 步驟I. 2.根據(jù)監(jiān)聽得到的LSA報文,獲得網(wǎng)絡(luò)中各路由器節(jié)點之間的連接關(guān)系,將得到的拓撲連接圖記為Ga,其中的路由器節(jié)點用id標識; 步驟I. 3.由步驟I. I中的LSA報文中提取出的配置了 Loopback state接口的路由器的id與其ip的匹配關(guān)系以及配置基于OSPF協(xié)議拓撲發(fā)現(xiàn)所需的路由器id與其ip的匹配關(guān)系構(gòu)成集合Mapped,以及id與集合Mapped對應(yīng)的子網(wǎng)前綴的匹配集合N ;若集合Mapped覆蓋了全部id,則將id替換為IPv6地址,拓撲發(fā)現(xiàn)結(jié)束;若集合Mapped未覆蓋全部id,則繼續(xù)執(zhí)行步驟A2 ;若Mapped集合為空集,將與所述服務(wù)器緊鄰的路由器的id與ip的對應(yīng)關(guān)系加入集合Mapped。
3.如權(quán)利要求2所述的方法,其特征在于,步驟A2具體為以所述服務(wù)器為源點進行單點的traceroute拓撲測量,將得到的拓撲連接圖記為Gb,測量的目標地址集通過人工配置或者利用步驟SI的拓撲發(fā)現(xiàn)結(jié)果中集合N中的子網(wǎng)前綴自動生成。
4.如權(quán)利要求3所述的方法,其特征在于,步驟A3具體包括 步驟3. I.參數(shù)初始化 步驟3. I. I.對于集合Mapped,從中取出已經(jīng)完成匹配的ip加入集合SI,并從中取出其中已經(jīng)完成匹配的id加入集合S2 ; 步驟3. I. 2.對照集合SI,將未完成匹配的ip加入集合IPList ; 步驟3. 1.3.對于Ga中的每個節(jié)點,計算其連接度數(shù),加入集合DegreeId ;對于Gb當中的每個節(jié)點,統(tǒng)計其連接度數(shù),加入集合DegreeIp ; 步驟3. I. 4.對于Ga中的每個節(jié)點inode,依次執(zhí)行步驟3. I. 4. Γ3. I. 4. 2 步驟3. I. 4. I.將節(jié)點inode加入隊列nodelist,并將inode標記為已訪問,并且在inode之后加入一個標志節(jié)點tnode用于計算節(jié)點之間的距離,初始化s為O, s表示節(jié)點之間的距離; 步驟3. I. 4. 2.如果nodelist不為空,則循環(huán)執(zhí)行步驟3. I. 4. 2. Γ3. I. 4. 2. 3 步驟3. I. 4. 2. I.按照先入先出的順序從nodelist取出一個節(jié)點jnode ; 步驟3. I. 4. 2. 2.如果jnode是Ga中的節(jié)點,則節(jié)點inode與節(jié)點jnode之間的最短距離為s,將此最短距離信息加入集合DistanceId,并將jnode的所有未被訪問過的鄰居節(jié)點加入nodelist,然后標記這些未被訪問過的鄰居節(jié)點為已訪問; 步驟3. I. 4. 2. 3.如果jnode是標記節(jié)點tnode,且此時nodelist隊列為空,則結(jié)束步驟3. I. 4 ;如果此時隊列不為空,則將標記節(jié)點tnode放回序列nodelist,并且將s加I ; 步驟3. I. 5.對于Gb中的每個節(jié)點tnode,做與步驟3. I. 4中相同的操作,將各個節(jié)點之間的距離存入集合DistanceIp ;步驟3. I. 6.將循環(huán)標記變量Flag置為I ; 步驟3. 2.當Flag為I時,循環(huán)執(zhí)行步驟3. 2. 1^3. 2. 2 步驟3. 2. I.將Flag置為O ; 步驟3. 2. 2.對于集合SI中的每一個元素IPi, i為集合中元素的序號,依次執(zhí)行步驟.3.2. 2. I 3. 2. 2. 3 步驟3. 2. 2. I.從集合Mapped中取出IPi對應(yīng)的IDi, IDi表示與IPi對應(yīng)的路由器的id信息; 步驟3. 2. 2. 2.對于步驟Al的拓撲發(fā)現(xiàn)結(jié)果中每一個不屬于集合S2的路由器標識IDk,執(zhí)行步驟3. 2. 2. 2. I 步驟3. 2. 2. 2. I.對于集合IPList中的每一個元素IP。,執(zhí)行步驟3. 2. 2. 2. I. I 步驟3. 2. 2. 2. I. I.如果集合DistanceIp中IPi與IP。之間的距離大于或等于集合DistanceId中IDi與IDk之間的距離,并且度數(shù)集合DegreeId中節(jié)點k的度數(shù)大于或等于DegreeIp中節(jié)點c的度數(shù)Degf加#,則將IDk作為一個IP??赡艿钠ヅ浼尤隝Pc 的序列 MapListB ; 步驟3. 2. 2. 3.對于每一個IPList中的元素IPh,依次執(zhí)行步驟.3.2. 2. 3. I 3. 2. 2.3.2 步驟 3. 2. 2. 3. I.合并 IPh 的MapListA 與MapListB,若其MapListA不為空,使MapListA取MapListA與MapListB元素的交集,同時將MapListB置為空集;如果MapListA為空集,則將MapListB所有元素加入MapListA,同時將MapListB置為空集; 步驟3. 2. 2. 3. 2.如果IPh的MapListA所含元素個數(shù)為1,則依次執(zhí)行步驟.3.2. 2. 3. 2. 1 3. 2. 2. 3. 2. 5 步驟3. 2. 2. 3. 2. I.將IPh加入集合SI ; 步驟3. 2. 2. 3. 2. 2.將IPh的MapListA所含的唯一元素IDh加入集合S2 ;步驟 3. 2. 2. 3. 2. 3.將 IPh 從 IPList 中刪除; 步驟3. 2. 2. 3. 2. 4.將IPh與IDh的對應(yīng)信息加入集合Mapped ;步驟 3. 2. 2. 3. 2. 5.將 Flag 置為 I ; 步驟3. 3.對于SI中所有元素IPi,依次執(zhí)行步驟3. 3. r3. 3. 2 步驟3. 3. I.從集合Mapped中,取出與IPi對應(yīng)的id信息IDi ; 步驟3. 3. 2.將Ga中對應(yīng)的IDi用IPi代替; 步驟3. 4.輸出經(jīng)過處理的Ga。
5.如權(quán)利要求f 4中任一項所述的方法,其特征在于,步驟SI與S2的執(zhí)行順序可互換或步驟SI與S2同時執(zhí)行。
全文摘要
本發(fā)明涉及計算機網(wǎng)絡(luò)管理技術(shù)領(lǐng)域,公開了一種IPv6網(wǎng)絡(luò)路由器級拓撲發(fā)現(xiàn)方法,包括以下步驟A1、基于OSPF協(xié)議進行拓撲發(fā)現(xiàn);A2、基于traceroute6進行拓撲發(fā)現(xiàn);A3、將步驟A1與A2的結(jié)果進行整合。本發(fā)明綜合了基于OSPF協(xié)議的拓撲發(fā)現(xiàn)方法與基于traceroute6的拓撲發(fā)現(xiàn)方法進行設(shè)計。實驗表明,使用該方法發(fā)現(xiàn)結(jié)果準確率、節(jié)點、鏈路覆蓋率均為100%。對于基于OSPF協(xié)議獲取的拓撲圖節(jié)點的IPv6地址信息進行了有效的補充,整合地址信息的準確率為100%,整合時間<1s。
文檔編號H04L12/24GK102790697SQ20121027632
公開日2012年11月21日 申請日期2012年8月3日 優(yōu)先權(quán)日2012年8月3日
發(fā)明者安常青, 李淼, 楊家海 申請人:清華大學