專利名稱:IPv6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)測(cè)量和管理范疇,特別涉及一種IPV6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法。
背景技術(shù):
目前工作在IPv4局域網(wǎng)之內(nèi)的拓?fù)浒l(fā)現(xiàn)軟件,主要借助簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP(Simple Network Management Protocol)和因特網(wǎng)消息控制協(xié)議ICMP(Internet Control Message Protocol)來(lái)實(shí)現(xiàn)的。
局域網(wǎng)的拓?fù)浒l(fā)現(xiàn)一般由網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層兩層發(fā)現(xiàn)組成。
網(wǎng)絡(luò)層的拓?fù)浒l(fā)現(xiàn)任務(wù)是發(fā)現(xiàn)節(jié)點(diǎn)網(wǎng)絡(luò)層地址、子網(wǎng)掩碼信息和子網(wǎng)間的連接關(guān)系。拓?fù)浒l(fā)現(xiàn)計(jì)算機(jī)通常向地址空間內(nèi)每個(gè)可能的IP地址發(fā)送ICMP請(qǐng)求報(bào)文,然后使用Traceroute函數(shù)找到連接到這些IP地址路徑上的所有路由器,最后發(fā)送ICMP前綴請(qǐng)求報(bào)文得到它們的網(wǎng)絡(luò)前綴地址。對(duì)于那些具有多個(gè)子網(wǎng)前綴的節(jié)點(diǎn),向它們一個(gè)未使用的端口發(fā)送UDP報(bào)文,返回的ICMP出錯(cuò)消息可能會(huì)返回節(jié)點(diǎn)另一子網(wǎng)內(nèi)的接口地址。根據(jù)收集到的這些信息來(lái)劃分子網(wǎng),路由器在節(jié)點(diǎn)和不同的網(wǎng)絡(luò)鏈路間建立聯(lián)系。
數(shù)據(jù)鏈路層的拓?fù)浒l(fā)現(xiàn)有兩大任務(wù)其一是區(qū)分主機(jī)、交換機(jī);其二是發(fā)現(xiàn)節(jié)點(diǎn)鏈路層地址和鏈路之間的連接關(guān)系。具體來(lái)說(shuō)首先,通過(guò)類似網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)的方法,以SNMP提供的MIB對(duì)象為工具,得到鏈路內(nèi)的所有可達(dá)節(jié)點(diǎn)的網(wǎng)絡(luò)層和鏈路層信息;然后通過(guò)圖論的數(shù)學(xué)方法,發(fā)現(xiàn)那些可能存在的物理連接關(guān)系。
隨著互聯(lián)網(wǎng)的發(fā)展,IPv4(Internet Protocol v4互聯(lián)網(wǎng)協(xié)議v4版本)協(xié)議地址空間逐漸耗盡,人們通過(guò)開(kāi)發(fā)大量的附加協(xié)議去充分挖掘IPv4協(xié)議的潛力,卻難以改變IPv4地址空間逐漸耗盡的現(xiàn)實(shí),在這種情況下,IPv6的部署工作已經(jīng)開(kāi)始啟動(dòng)。目前全球范圍內(nèi)已經(jīng)公布的支持IPv6的大型實(shí)驗(yàn)站點(diǎn)數(shù)目大約是800個(gè),IPv6協(xié)議提供了128位的龐大地址空間,這從根本上解決了IPv4地址枯竭的問(wèn)題;可以預(yù)見(jiàn),IPv6協(xié)議在不遠(yuǎn)的未來(lái),會(huì)被包括各種家電產(chǎn)品在內(nèi)的多種設(shè)備所支持。
這對(duì)未來(lái)的網(wǎng)絡(luò)管理工作來(lái)說(shuō),是一個(gè)巨大的考驗(yàn),IPv6協(xié)議將使得未來(lái)網(wǎng)絡(luò)管理工作的負(fù)擔(dān)增加,難度加大。由于網(wǎng)絡(luò)規(guī)模急劇擴(kuò)大,網(wǎng)絡(luò)設(shè)備類型多種多樣,網(wǎng)絡(luò)管理員已幾乎不可能手工監(jiān)測(cè)和維護(hù)網(wǎng)絡(luò)的正常運(yùn)行,迫切需要自動(dòng)網(wǎng)管軟件的協(xié)助;再加上IPv6協(xié)議對(duì)原有的IPv4協(xié)議在許多方面不具有向下兼容的特性,需要對(duì)未來(lái)的網(wǎng)絡(luò)管理和測(cè)量的理論和方法開(kāi)展新一輪的研究。
自動(dòng)拓?fù)浒l(fā)現(xiàn)技術(shù)是IPv6自動(dòng)網(wǎng)管技術(shù)的基礎(chǔ),目標(biāo)是能夠自動(dòng)得到IPv6子網(wǎng)所有活動(dòng)節(jié)點(diǎn)的屬性和性能信息,并且對(duì)網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)的連接狀況進(jìn)行測(cè)量和分析。
本地鏈路是IPv6網(wǎng)絡(luò)的最小組成單位,眾多的本地鏈路網(wǎng)通過(guò)路由器的連接組成了全球IPv6網(wǎng)絡(luò)。
同IPv4網(wǎng)絡(luò)一樣,IPv6網(wǎng)絡(luò)仍分為骨干網(wǎng)和接入網(wǎng)兩部分,邊界路由器是它們間的分界點(diǎn)。相對(duì)于接入網(wǎng),骨干網(wǎng)的升級(jí)工作相對(duì)比較簡(jiǎn)單,所做的工作主要是路由協(xié)議的升級(jí),例如將OSPFv2(OpenShortest Path Protocol)升級(jí)到OSPFv3,BGP4(Border Gateway Protocol)升級(jí)到BGP4+等。
最近,相關(guān)RFC(Recommend For Comment)規(guī)定,將接入網(wǎng)簡(jiǎn)化為由大量支持IPv6協(xié)議的節(jié)點(diǎn)組成的本地鏈路。目前骨干網(wǎng)基礎(chǔ)結(jié)構(gòu)仍是基于IPv4的;而在接入網(wǎng)部分,卻已有大量支持雙棧的終端設(shè)備接入,例如PC機(jī)和眾多手持設(shè)備,對(duì)接入網(wǎng)拓?fù)浒l(fā)現(xiàn)進(jìn)行研究的物質(zhì)條件已經(jīng)具備。
同一本地鏈路上的設(shè)備,往往處于同一個(gè)網(wǎng)絡(luò)管理員的管理職責(zé)之內(nèi)。網(wǎng)絡(luò)管理員需要了解這些設(shè)備的配置、性能和告警狀況,以及相關(guān)的鏈路、路由連接狀況。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,接入的設(shè)備種類多種多樣,數(shù)量大幅度增加,再加上移動(dòng)IP技術(shù)日漸成熟,網(wǎng)絡(luò)管理的越來(lái)越復(fù)雜。未來(lái)的互聯(lián)網(wǎng),將使用IPv6協(xié)議作為網(wǎng)絡(luò)層的基本協(xié)議,IPv6相比于目前的IPv4網(wǎng)絡(luò),具有許多全新的特點(diǎn),IPv4拓?fù)浒l(fā)現(xiàn)的某些理論和方法雖然適用,但也不可避免地會(huì)出現(xiàn)一些兼容性問(wèn)題。
首先,ICMPv6相對(duì)于ICMPv4來(lái)說(shuō)作了比較大的改動(dòng),把以往IPv4下的ICMPv4,因特網(wǎng)組消息協(xié)議IGMP(Internet Group MessageProtocol)和地址解析協(xié)議ARP(Address Resolve Protocol)的功能集成了起來(lái),原有的借助ICMPv4應(yīng)答報(bào)文所進(jìn)行的拓?fù)浒l(fā)現(xiàn)需要進(jìn)行修改。
其次,IPv6協(xié)議增強(qiáng)了對(duì)廣播和多播的支持,已作為IPv6協(xié)議本身的特性集成到IP協(xié)議中去,而無(wú)需通過(guò)IGMP等協(xié)議的配合。
最后,目前大部分操作系統(tǒng)還不提供支持IPv6配置信息的SNMP代理程序,無(wú)法通過(guò)SNMP的請(qǐng)求報(bào)文來(lái)獲得配置數(shù)據(jù),而IPv4上的SNMP代理程序已經(jīng)非常成熟。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種IPV6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,利用網(wǎng)絡(luò)管理員對(duì)于本地鏈路上的設(shè)備所具有的管理權(quán)限,通過(guò)在這些設(shè)備上部署一些定制的代理程序來(lái)彌補(bǔ)現(xiàn)階段缺乏支持IPv6的標(biāo)準(zhǔn)管理信息數(shù)據(jù)庫(kù)(MIB)的問(wèn)題,從而提供一種IPV6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,以了解網(wǎng)絡(luò)拓?fù)錉顩r,解決了分屬于大量研究機(jī)構(gòu)所有的,無(wú)法得到簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)信息的網(wǎng)絡(luò)節(jié)點(diǎn)分布和連接情況不清楚的問(wèn)題。
本發(fā)明所提供的一種IPV6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,所述客戶端中安裝有因特網(wǎng)消息控制協(xié)議ICMP6,其步驟包括客戶端利用本地鏈路節(jié)點(diǎn)的廣播地址作為目標(biāo)地址,通過(guò)任意一網(wǎng)絡(luò)節(jié)點(diǎn)向目標(biāo)地址發(fā)送回聲請(qǐng)求報(bào)文,采集網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)的IPV6地址,并根據(jù)IPv6和IPv4地址與主機(jī)名的關(guān)系,反向DNS解析出主機(jī)名,再利用IPv6本地鏈路地址和物理地址MAC地址的對(duì)應(yīng)關(guān)系,得到機(jī)器的物理地址MAC地址,完成客戶端信息采集;利用因特網(wǎng)消息控制協(xié)議提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IP路由路徑信息,并通過(guò)TCP協(xié)議的5001端口將路由路徑信息發(fā)送到服務(wù)器端口,完成客戶端與服務(wù)端之間的通信;服務(wù)器以因特網(wǎng)上公開(kāi)的可尋址IPv6主機(jī)的IPv6地址作為單條拓?fù)渎窂降淖罱K節(jié)點(diǎn),將新出現(xiàn)的地址和主機(jī)名及其鏈接節(jié)點(diǎn)寫入線狀拓?fù)鋽?shù)據(jù)中,生成網(wǎng)狀拓?fù)湫畔ⅲ⒔Y(jié)合部署在每個(gè)IPv6子網(wǎng)內(nèi)的代理發(fā)現(xiàn)程序所描述的鏈路內(nèi)拓?fù)浼?xì)節(jié)信息,完成服務(wù)器端網(wǎng)絡(luò)拓?fù)洹?br>
所述客戶端信息采集的步驟包括任意選擇一網(wǎng)絡(luò)節(jié)點(diǎn);
根據(jù)IPV6協(xié)議選擇具有廣播信息功能的該網(wǎng)絡(luò)中的節(jié)點(diǎn)作為目標(biāo)地址;通過(guò)上述任意選擇的網(wǎng)絡(luò)節(jié)點(diǎn)分別向具有廣播信息功能的網(wǎng)絡(luò)節(jié)點(diǎn)目標(biāo)分別發(fā)送回聲請(qǐng)求報(bào)文信息,根據(jù)發(fā)回的回聲應(yīng)答報(bào)文獲取全網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)的本地鏈路地址信息;通過(guò)上述任意選擇的網(wǎng)絡(luò)節(jié)點(diǎn)分別向全網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)的本地鏈路地址發(fā)送鄰居請(qǐng)求報(bào)文信息,根據(jù)發(fā)回的鄰居宣告報(bào)文獲取全網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)的物理地址MAC信息;通過(guò)上述任意選擇的網(wǎng)絡(luò)節(jié)點(diǎn)分別向目標(biāo)地址發(fā)送路由請(qǐng)求報(bào)文,根據(jù)發(fā)回的路由宣告報(bào)文獲得目標(biāo)機(jī)的路由前綴信息;通過(guò)獲得的上述物理地址MAC信息和路由前綴信息,無(wú)狀態(tài)自動(dòng)配置形成所有節(jié)點(diǎn)的IPV6地址;通過(guò)簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP和因特網(wǎng)消息控制協(xié)議ICMP來(lái)獲取本地代理的IPV4地址;依據(jù)IPV4和IPV6與MAC地址的對(duì)應(yīng)關(guān)系,獲取該網(wǎng)卡的雙棧信息并反向DNS解析主機(jī)名。
所述本地代理的IPV4地址,通過(guò)發(fā)送IPV4子網(wǎng)掩碼請(qǐng)求報(bào)文信息獲取本IPV4子網(wǎng)的子網(wǎng)掩碼信息后,在子網(wǎng)內(nèi)發(fā)送回聲報(bào)文信息獲取MAC地址和IPV4地址的對(duì)應(yīng)信息。
所述客戶端與服務(wù)端之間的通信的步驟包括利用因特網(wǎng)消息控制協(xié)議ICMP6提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IPV6路由路徑信息文件;利用因特網(wǎng)消息控制協(xié)議ICMP提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IPV4路由路徑信息文件;通過(guò)TCP協(xié)議的5001端口將上述信息文件發(fā)回服務(wù)器端。
所述服務(wù)器端網(wǎng)絡(luò)拓?fù)涞牟襟E為拓?fù)浒l(fā)現(xiàn)服務(wù)器對(duì)IPv6骨干網(wǎng)進(jìn)行拓?fù)浒l(fā)現(xiàn)的步驟,包括收集因特網(wǎng)上已公開(kāi)發(fā)表的地址信息,并對(duì)于因特網(wǎng)上已公開(kāi)IP的目標(biāo)節(jié)點(diǎn),發(fā)現(xiàn)它們與服務(wù)器間的路徑信息;對(duì)于那些已經(jīng)下載了本地代理程序的鏈路,接收本地代理發(fā)來(lái)的鏈路細(xì)節(jié)的描述;服務(wù)器端偵聽(tīng)5001端口,本地代理以此為目標(biāo)端口,向服務(wù)器發(fā)送本鏈路內(nèi)拓?fù)湫畔?,以及到服?wù)器的路徑信息;將上述所得到的線狀拓?fù)湫畔⒑喜⒎治?001端口發(fā)來(lái)的路由路徑信息,將其中所包含的新客戶端到服務(wù)器的IPV6和IPV4路由信息,寫入線狀路由數(shù)據(jù)信息文件中;將歸并得到的線狀拓?fù)湫畔⑥D(zhuǎn)換為網(wǎng)狀的結(jié)構(gòu),做圖形布局后,顯示在圖形界面上。
所述轉(zhuǎn)換的步驟包括1)將線狀路由信息初始化;以鏈表的形式保存,利用通用的ICMP報(bào)文得到兩臺(tái)機(jī)器之間路徑后生成文件格式除了第一跳以外,把前一跳和當(dāng)前一跳的信息以下面的形式寫入文件主機(jī)名1\t v6地址1\t\t主機(jī)名2\t v6地址2\n如果到達(dá)了目的地址,則把他的名字和地址單獨(dú)寫在一行主機(jī)名\t v6地址\n2)第一次掃描將數(shù)據(jù)中所有主機(jī)找出,并無(wú)重復(fù)的加以編號(hào),每一主機(jī)有自己的一個(gè)ID;對(duì)于是最后一跳的主機(jī)給以標(biāo)識(shí)1300,對(duì)應(yīng)前臺(tái)圖形顯示工具中路由器圖標(biāo),最后,將所有數(shù)據(jù)以鏈表的形式保存在內(nèi)存中;3)第二次掃描將根據(jù)第一次的結(jié)果將所述兩點(diǎn)間的鏈接找出,同樣無(wú)重復(fù)的加以編號(hào),并給出起點(diǎn)和終點(diǎn)的ID;4)將步驟2)和3)所得到的數(shù)據(jù)寫入ODF文件。
所述步驟1)中所用的鏈表型數(shù)據(jù)結(jié)構(gòu)為struct ipinfo{char ip[MAXHOSTNAMELEN];struct ipinfo *next;};用該結(jié)構(gòu)體用來(lái)存儲(chǔ)IP的信息,采用鏈表存儲(chǔ)。ip域用來(lái)存儲(chǔ)IPV6信息,next域?yàn)橹羔樣颉?br>
所述步驟2)中所用的鏈表型數(shù)據(jù)結(jié)構(gòu)為struct node{int index;char name[MAXHOSTNAMELEN];struct ipinfo iplist;int type;struct node *next;};用該結(jié)構(gòu)體存儲(chǔ)一個(gè)設(shè)備結(jié)點(diǎn)的信息。index域用來(lái)表示該結(jié)點(diǎn)的序號(hào);name域用來(lái)表示結(jié)點(diǎn)名稱;iplist域用來(lái)存儲(chǔ)該設(shè)備的一個(gè)或多個(gè)IP信息;type域用來(lái)存儲(chǔ)設(shè)備類型(1300表示主機(jī);1200表示路由器);next為指針域。
所述步驟3)中所用的鏈表型數(shù)據(jù)結(jié)構(gòu)為struct link{int index;int hnode;int enode;int linksum;struct link *next;};用該結(jié)構(gòu)體存儲(chǔ)一條鏈接的信息。Index域表示鏈接的序號(hào);hnode域用來(lái)存儲(chǔ)鏈接一端結(jié)點(diǎn)的序號(hào),enode域用來(lái)存儲(chǔ)鏈接另一端結(jié)點(diǎn)的序號(hào);linksum用來(lái)存儲(chǔ)鏈接被重復(fù)統(tǒng)計(jì)的次數(shù);next域?yàn)橹羔樣颉?br>
所述步驟4)中所述的odf文件的格式如下tnumber必須寫在文件開(kāi)頭;number為拓?fù)鋱D中所有結(jié)點(diǎn)的數(shù)量;Tnumber必須寫在文件開(kāi)頭;number為拓?fù)鋱D中所有鏈接的數(shù)量;?node_index name表示一個(gè)結(jié)點(diǎn)的信息;node_index為不分先后的結(jié)點(diǎn)序號(hào),name為結(jié)點(diǎn)名字,名字中間不能有空格;
l linkidx n_idx1 n_idx2表示一個(gè)鏈接的信息;linkidx為不分先后的鏈接序號(hào),n_idx1為鏈接出發(fā)結(jié)點(diǎn)的序號(hào),n_idx2為鏈接到達(dá)結(jié)點(diǎn)的序號(hào)。綜上所述,本發(fā)明利用本地鏈路節(jié)點(diǎn)的廣播地址作為目標(biāo)地址,采集客戶端信息,并通過(guò)TCP協(xié)議的5001端口將該信息文件發(fā)送到服務(wù)器端口,由服務(wù)器端將線狀拓?fù)鋽?shù)據(jù)信息文件轉(zhuǎn)化為網(wǎng)狀拓?fù)湫畔ⅰ?br>
本發(fā)明的優(yōu)點(diǎn)在于,本發(fā)明基于現(xiàn)有的IPv4自動(dòng)拓?fù)浒l(fā)現(xiàn)技術(shù),利用IPv6協(xié)議對(duì)廣播和多播支持功能的增強(qiáng),實(shí)現(xiàn)了IPv6協(xié)議下網(wǎng)絡(luò)拓?fù)涞淖詣?dòng)生成。
圖1本發(fā)明客戶端/服務(wù)器模式結(jié)構(gòu)2本發(fā)明客戶端總體流程3本發(fā)明客戶端信息發(fā)現(xiàn)模塊圖4本發(fā)明客戶端通信模塊圖5本發(fā)明服務(wù)器端總體流程6本發(fā)明服務(wù)器端線狀路由信息轉(zhuǎn)化為網(wǎng)狀拓?fù)淠K流程7本發(fā)明線狀路由數(shù)據(jù)第一次掃描處理流程8本發(fā)明線狀路由數(shù)據(jù)第二次掃描處理流程9本發(fā)明鏈表結(jié)構(gòu)示意10本發(fā)明網(wǎng)狀拓?fù)湫畔⒌娘@示11本發(fā)明網(wǎng)狀拓?fù)湫畔⒌挠忠伙@示圖
具體實(shí)施例方式
該發(fā)明以大致了解全球現(xiàn)有IPv6實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)錉顩r為目的,解決了分屬于大量研究機(jī)構(gòu)所有的,無(wú)法得到簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)信息的網(wǎng)絡(luò)節(jié)點(diǎn)分布和連接情況不清楚的問(wèn)題。該發(fā)明由一組分布式程序組成,如圖1所示,基于客戶機(jī)/服務(wù)器的模式,其中,1.客戶端模塊客戶端負(fù)責(zé)收集局域網(wǎng)內(nèi)的拓?fù)湫畔?,目的是為了處理那種未公開(kāi)IPv6站點(diǎn)內(nèi)拓?fù)錉顩r未知的情況,也提供一定的本地網(wǎng)絡(luò)管理功能,作為免費(fèi)軟件提供給協(xié)助者使用,稱為本地代理(Local Agent)軟件。如圖2所示,客戶端模塊主要由本地鏈路信息采集和通信模塊兩部分組成,其中,1.1客戶端信息采集模塊客戶端使用ICMPv6(Internet Control Message Protocol v6)協(xié)議的信息報(bào)文分析網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)信息。如圖3所示,該模塊,首先,將IPv6協(xié)議規(guī)定的本地鏈路節(jié)點(diǎn)的廣播地址設(shè)置為目標(biāo)地址FF02∷1;然后,向目標(biāo)地址FF02∷1發(fā)送回聲請(qǐng)求報(bào)文(Echo Request),通過(guò)獲取的回聲應(yīng)答報(bào)文(Echo Reply Packet)得到網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)的本地鏈路地址;再,向每個(gè)本地鏈路地址發(fā)送鄰居請(qǐng)求報(bào)文(Neighbor Solicitation),通過(guò)發(fā)來(lái)的鄰居宣告報(bào)文(Neighbor Advertisement)得到本地鏈路地址,轉(zhuǎn)換得到目標(biāo)機(jī)的物理地址信息(MAC地址);最后,向目標(biāo)地址FF02∷2發(fā)送路由請(qǐng)求報(bào)文,獲得鏈路內(nèi)默認(rèn)對(duì)外出口路由器的MAC地址和路由前綴信息,并以無(wú)狀態(tài)自動(dòng)配置地址的生成方式來(lái)得到該鏈路上所有節(jié)點(diǎn)的無(wú)狀態(tài)自動(dòng)配置地址(StatelessConfiguration Address)信息。
獲取本地代理所運(yùn)行主機(jī)的IPv4地址,同時(shí)通過(guò)ICMP的子網(wǎng)掩碼請(qǐng)求報(bào)文,在網(wǎng)絡(luò)內(nèi)獲取子網(wǎng)的掩碼信息,達(dá)到子網(wǎng)的網(wǎng)絡(luò)號(hào)。窮舉子網(wǎng)內(nèi)的所有IP地址,每次發(fā)送二十個(gè)ICMP的ping報(bào)文,間隔十秒。從而在本地代理的ARP緩存里生成所有可達(dá)主機(jī)的ARP列表。通過(guò)保存的MAC地址和IPv6地址的映射關(guān)系,獲取雙棧主機(jī)的IPv6、IPv4地址對(duì)應(yīng)關(guān)系;并通過(guò)DNS(Domain Name Service)請(qǐng)求,獲得對(duì)應(yīng)IP的主機(jī)名。
1.2客戶端通信模塊如圖4所示,通信模塊獲得這些信息后,首先利用通用的ICMP報(bào)文得到兩臺(tái)機(jī)器之間路徑后(traceroute6)探測(cè)到server端的IPv6路徑狀況,若可以,則以IPv6協(xié)議的套接字與目標(biāo)Server通信,將收集到的信息與路徑狀況信息以文本文件的形式發(fā)送到server端的TCP5000端口。若不能直接通信,使用Traceroute探測(cè)到server端的IPv4路徑狀況。將可達(dá)性信息與本子網(wǎng)信息通過(guò)IPv4套接字發(fā)送至server端的TCP5001端口。
2.服務(wù)器端模塊如圖5所示,服務(wù)器端承擔(dān)拓?fù)浒l(fā)現(xiàn)主要工作的流程是首先,準(zhǔn)備工作是收集公開(kāi)發(fā)表的地址信息,對(duì)于那些因特網(wǎng)上已公開(kāi)IP的目標(biāo)節(jié)點(diǎn),發(fā)現(xiàn)它們與服務(wù)器間的路徑信息;其次,對(duì)于那些已經(jīng)下載了本地代理程序的鏈路,接收本地代理發(fā)來(lái)的鏈路細(xì)節(jié)的描述;服務(wù)器端偵聽(tīng)5001端口,本地代理以此為目標(biāo)端口,向服務(wù)器發(fā)送本鏈路內(nèi)拓?fù)湫畔ⅲ约暗椒?wù)器的路徑信息。
最后,將上述所得到的線狀拓?fù)湫畔⒑喜⒎治?001端口發(fā)來(lái)的路由路徑信息,將其中所包含的新客戶端到服務(wù)器的IPV6和IPV4路由信息,寫入線狀路由數(shù)據(jù)信息文件中;將歸并得到的線狀拓?fù)湫畔⑥D(zhuǎn)換為網(wǎng)狀的結(jié)構(gòu),做圖形布局后,顯示在圖形界面上。
2.1服務(wù)器端線狀路由信息轉(zhuǎn)化為網(wǎng)狀信息模塊服務(wù)器端線狀路由信息轉(zhuǎn)化為網(wǎng)狀拓?fù)淇傮w流程,如圖6所示,對(duì)源數(shù)據(jù)進(jìn)行兩次掃描。
首先,第一次掃描,將數(shù)據(jù)中所有主機(jī)找出,并無(wú)重復(fù)的加以編號(hào),每一主機(jī)有自己的一個(gè)ID;對(duì)于是最后一跳的主機(jī)給以標(biāo)識(shí)1300(對(duì)應(yīng)otter中的主機(jī)圖標(biāo)),其他的給以標(biāo)識(shí)1200(對(duì)應(yīng)otter中路由器圖標(biāo)),最后,將所有數(shù)據(jù)以鏈表的形式保存在內(nèi)存中;第二次掃描,將根據(jù)第一次的結(jié)果將所有兩點(diǎn)間的鏈接找出,獲得所有的不重復(fù)的鏈路,鏈路中間不會(huì)有中繼節(jié)點(diǎn),而且每條鏈路的起始和中止節(jié)點(diǎn)都是不同的;同樣無(wú)重復(fù)的加以編號(hào),并給出起點(diǎn)和終點(diǎn)的ID。
2.1.1其中traceroute后生成文件格式為以鏈接的形式保存(不以跳的形式保存)。除了第一跳以為,都把前一跳和當(dāng)前一跳的信息以下面的形式寫入文件。
主機(jī)名1\t v6地址1\t\t主機(jī)名2\t v6地址2\n如果到達(dá)了目的地址,則把他的名字和地址單獨(dú)寫在一行。
主機(jī)名\t v6地址\n2.1.2線狀拓?fù)涞谝淮螔呙璧谝槐榫€狀路由掃描信息的流程,如圖7所示,1)斷原始文本文件是否已經(jīng)結(jié)束如果結(jié)束,程序執(zhí)行完畢;如果未結(jié)束,到第2步。
2)取當(dāng)前行的第一段數(shù)據(jù)信息。判斷這一行是否只具有一段數(shù)據(jù)信息如果是,認(rèn)為這個(gè)節(jié)點(diǎn)處于路徑的末端,作為主機(jī),標(biāo)志位被置為1后再到第3步;如果不是,作為路由器,直接前進(jìn)到第3步。
3)判斷這個(gè)數(shù)據(jù)信息代表的設(shè)備是否已經(jīng)存在于設(shè)備鏈表中如果是,將這個(gè)數(shù)據(jù)信息代表的設(shè)備接在設(shè)備鏈表的末端;如果不是,不作處理。判斷一下標(biāo)志位是否為一如果是,回到第1步;否則到第4步。
4)讀取當(dāng)前行的第二段數(shù)據(jù)信息。
5)判斷這個(gè)數(shù)據(jù)信息代表的設(shè)備是否已經(jīng)存在于設(shè)備鏈表中如果是,將這個(gè)數(shù)據(jù)信息代表的設(shè)備接在設(shè)備鏈表的末端;如果不是,不作處理。最后一起回到第1步。
2.1.3線狀拓?fù)涞诙螔呙璧诙榫€狀路由掃描生成鏈表數(shù)據(jù)的流程,如圖8所示,1)將文件指針重新回到文件頭部2)判斷文件是否結(jié)束如果是,退出第二遍掃描;否,到第3步。
3)讀取第一段數(shù)據(jù)信息4)判斷行是否結(jié)束是,回到第1步;否,前進(jìn)到第5步。
5)讀取第二數(shù)據(jù)信息
6)根據(jù)得到的兩段數(shù)據(jù)信息,查詢分別對(duì)應(yīng)的設(shè)備序號(hào)7)根據(jù)鏈路兩端設(shè)備的序號(hào),判斷這條鏈路信息是否已經(jīng)在鏈路對(duì)象鏈表中了是,回到第1步;否,前進(jìn)到第8步。
8)鏈路對(duì)象鏈表末端添加新鏈路節(jié)點(diǎn)。
如圖9所示,通常把鏈表直觀的表示成用箭頭相鏈接的結(jié)點(diǎn)序列。
算法中用到的鏈表型數(shù)據(jù)結(jié)構(gòu)有(1)struct ipinfo{char ip[MAXHOSTNAMELEN];struct ipinfo *next;};用該結(jié)構(gòu)體用來(lái)存儲(chǔ)IP的信息,采用鏈表存儲(chǔ)。ip域用來(lái)存儲(chǔ)IPV6信息,next域?yàn)橹羔樣颉?br>
(2)struct node{int index;char name[MAXHOSTNAMELEN];struct ipinfo iplist;int type;struct node *next;};用該結(jié)構(gòu)體存儲(chǔ)一個(gè)設(shè)備結(jié)點(diǎn)的信息。index域用來(lái)表示該結(jié)點(diǎn)的序號(hào);name域用來(lái)表示結(jié)點(diǎn)名稱;iplist域用來(lái)存儲(chǔ)該設(shè)備的一個(gè)或多個(gè)IP信息;type域用來(lái)存儲(chǔ)設(shè)備類型(1300表示主機(jī);1200表示路由器);next為指針域。
(3)struct link{int index;int hnode;int enode;int linksum;struct link *next;};用該結(jié)構(gòu)體存儲(chǔ)一條鏈接的信息。Index域表示鏈接的序號(hào);hnode域用來(lái)存儲(chǔ)鏈接一端結(jié)點(diǎn)的序號(hào),enode域用來(lái)存儲(chǔ)鏈接另一端結(jié)點(diǎn)的序號(hào);linksum用來(lái)存儲(chǔ)鏈接被重復(fù)統(tǒng)計(jì)的次數(shù);next域?yàn)橹羔樣颉?br>
2.2 odf文件格式說(shuō)明.odf文件是為前臺(tái)圖形程序提供數(shù)據(jù)的文件。Otter軟件可以根據(jù).odf文件中的拓?fù)湫畔⑸赏負(fù)鋱D。.odf文件的具體格式如下tnumber必須寫在文件開(kāi)頭。
number拓?fù)鋱D中所有結(jié)點(diǎn)的數(shù)量T number必須寫在文件開(kāi)頭。
number拓?fù)鋱D中所有鏈接的數(shù)量?node_index name
表示一個(gè)結(jié)點(diǎn)的信息node_index不分先后的結(jié)點(diǎn)序號(hào)name結(jié)點(diǎn)名字(中間不能有空格)l linkidx n_idx1 n_idx2表示一個(gè)鏈接的信息linkidx不分先后的鏈接序號(hào)n_idx1鏈接出發(fā)結(jié)點(diǎn)的序號(hào)n_idx2鏈接到達(dá)結(jié)點(diǎn)的序號(hào)如圖10、11所示,本發(fā)明方法的自動(dòng)網(wǎng)狀拓?fù)湫畔D,如果將把服務(wù)器的traceroute6功能加入到客戶端中去,在客戶端也生成一個(gè)該子網(wǎng)的可達(dá)IPv6站點(diǎn)拓?fù)鋱D,發(fā)回主server后,加入到已有的拓?fù)湫畔⒅腥?,逐步擴(kuò)大網(wǎng)絡(luò)拓?fù)涞母采w范圍。此外,可以將把目前的以格式文本文件存儲(chǔ)的形式轉(zhuǎn)換為以數(shù)據(jù)庫(kù)存儲(chǔ)的信息。
權(quán)利要求
1.一種IPV6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,所述客戶端中安裝有因特網(wǎng)消息控制協(xié)議ICMP6,其特征在于客戶端利用本地鏈路節(jié)點(diǎn)的廣播地址作為目標(biāo)地址,通過(guò)任意一網(wǎng)絡(luò)節(jié)點(diǎn)向目標(biāo)地址發(fā)送回聲請(qǐng)求報(bào)文,采集網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)的IPV6地址,并根據(jù)IPv6和IPv4地址與主機(jī)名的關(guān)系,反向DNS解析出主機(jī)名,再利用IPv6本地鏈路地址和物理地址MAC地址的對(duì)應(yīng)關(guān)系,得到機(jī)器的物理地址MAC地址,完成客戶端信息采集;利用因特網(wǎng)消息控制協(xié)議提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IP路由路徑信息,并通過(guò)TCP協(xié)議的5001端口將路由路徑信息發(fā)送到服務(wù)器端口,完成客戶端與服務(wù)端之間的通信;服務(wù)器以因特網(wǎng)上公開(kāi)的可尋址IPv6主機(jī)的IPv6地址作為單條拓?fù)渎窂降淖罱K節(jié)點(diǎn),將新出現(xiàn)的地址和主機(jī)名及其鏈接節(jié)點(diǎn)寫入線狀拓?fù)鋽?shù)據(jù)中,生成網(wǎng)狀拓?fù)湫畔ⅲ⒔Y(jié)合部署在每個(gè)IPv6子網(wǎng)內(nèi)的代理發(fā)現(xiàn)程序所描述的鏈路內(nèi)拓?fù)浼?xì)節(jié)信息,完成服務(wù)器端網(wǎng)絡(luò)拓?fù)洹?br>
2.按照權(quán)利要求1所述的因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,其特征在于,所述客戶端信息采集的步驟包括任意選擇一網(wǎng)絡(luò)節(jié)點(diǎn);根據(jù)IPV6協(xié)議選擇具有廣播信息功能的該網(wǎng)絡(luò)中的節(jié)點(diǎn)作為目標(biāo)地址;通過(guò)上述任意選擇的網(wǎng)絡(luò)節(jié)點(diǎn)分別向具有廣播信息功能的網(wǎng)絡(luò)節(jié)點(diǎn)目標(biāo)分別發(fā)送回聲請(qǐng)求報(bào)文信息,根據(jù)發(fā)回的回聲應(yīng)答報(bào)文獲取全網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)的本地鏈路地址信息;通過(guò)上述任意選擇的網(wǎng)絡(luò)節(jié)點(diǎn)分別向全網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)的本地鏈路地址發(fā)送鄰居請(qǐng)求報(bào)文信息,根據(jù)發(fā)回的鄰居宣告報(bào)文獲取全網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)的物理地址MAC信息;通過(guò)上述任意選擇的網(wǎng)絡(luò)節(jié)點(diǎn)分別向目標(biāo)地址發(fā)送路由請(qǐng)求報(bào)文,根據(jù)發(fā)回的路由宣告報(bào)文獲得目標(biāo)機(jī)的路由前綴信息;通過(guò)獲得的上述物理地址MAC信息和路由前綴信息,無(wú)狀態(tài)自動(dòng)配置形成所有節(jié)點(diǎn)的IPV6地址;通過(guò)簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議SNMP和因特網(wǎng)消息控制協(xié)議ICMP來(lái)獲取本地代理的IPV4地址;依據(jù)IPV4和IPV6與MAC地址的對(duì)應(yīng)關(guān)系,獲取該網(wǎng)卡的雙棧信息并反向DNS解析主機(jī)名。
3.按照權(quán)利要求2所述的因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,其特征在于,所述本地代理的IPV4地址,通過(guò)發(fā)送IPV4子網(wǎng)掩碼請(qǐng)求報(bào)文信息獲取本IPV4子網(wǎng)的子網(wǎng)掩碼信息后,在子網(wǎng)內(nèi)發(fā)送回聲報(bào)文信息獲取MAC地址和IPV4地址的對(duì)應(yīng)信息。
4.按照權(quán)利要求1所述的因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,其特征在于,所述客戶端與服務(wù)端之間的通信的步驟包括利用因特網(wǎng)消息控制協(xié)議ICMP6提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IPV6路由路徑信息文件;利用因特網(wǎng)消息控制協(xié)議ICMP提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IPV4路由路徑信息文件;通過(guò)TCP協(xié)議的5001端口將上述信息文件發(fā)回服務(wù)器端。
5.按照權(quán)利要求1所述的因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,其特征在于,所述服務(wù)器端網(wǎng)絡(luò)拓?fù)涞牟襟E為拓?fù)浒l(fā)現(xiàn)服務(wù)器對(duì)IPv6骨干網(wǎng)進(jìn)行拓?fù)浒l(fā)現(xiàn)的步驟,包括收集因特網(wǎng)上已公開(kāi)發(fā)表的地址信息,并對(duì)于因特網(wǎng)上已公開(kāi)IP的目標(biāo)節(jié)點(diǎn),發(fā)現(xiàn)它們與服務(wù)器間的路徑信息;對(duì)于那些已經(jīng)下載了本地代理程序的鏈路,接收本地代理發(fā)來(lái)的鏈路細(xì)節(jié)的描述;服務(wù)器端偵聽(tīng)5001端口,本地代理以此為目標(biāo)端口,向服務(wù)器發(fā)送本鏈路內(nèi)拓?fù)湫畔?,以及到服?wù)器的路徑信息;將上述所得到的線狀拓?fù)湫畔⒑喜⒎治?001端口發(fā)來(lái)的路由路徑信息,將其中所包含的新客戶端到服務(wù)器的IPV6和IPV4路由信息,寫入線狀路由數(shù)據(jù)信息文件中;將歸并得到的線狀拓?fù)湫畔⑥D(zhuǎn)換為網(wǎng)狀的結(jié)構(gòu),做圖形布局后,顯示在圖形界面上。
6.按照權(quán)利要求5所述的因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,其特征在于,所述轉(zhuǎn)換的步驟包括1)將線狀路由信息初始化;以鏈表的形式保存,利用通用的ICMP報(bào)文得到兩臺(tái)機(jī)器之間路徑后生成文件格式除了第一跳以外,把前一跳和當(dāng)前一跳的信息以下面的形式寫入文件主機(jī)名1\tv6地址1\t\t主機(jī)名2\tv6地址2\n如果到達(dá)了目的地址,則把他的名字和地址單獨(dú)寫在一行主機(jī)名\tv6地址\n2)第一次掃描將數(shù)據(jù)中所有主機(jī)找出,并無(wú)重復(fù)的加以編號(hào),每一主機(jī)有自己的一個(gè)ID;對(duì)于是最后一跳的主機(jī)給以標(biāo)識(shí)1300,對(duì)應(yīng)前臺(tái)圖形顯示工具中路由器圖標(biāo),最后,將所有數(shù)據(jù)以鏈表的形式保存在內(nèi)存中;3)第二次掃描將根據(jù)第一次的結(jié)果將所述兩點(diǎn)間的鏈接找出,同樣無(wú)重復(fù)的加以編號(hào),并給出起點(diǎn)和終點(diǎn)的ID;4)將步驟2)和3)所得到的數(shù)據(jù)寫入ODF文件。
7.按照權(quán)利要求6所述的網(wǎng)絡(luò)的拓?fù)湎到y(tǒng),其特征在于,所述步驟1)中所用的鏈表型數(shù)據(jù)結(jié)構(gòu)為struct ipinfo{char ip[MAXHOSTNAMELEN];struct ipinfo*next;};用該結(jié)構(gòu)體用來(lái)存儲(chǔ)IP的信息,采用鏈表存儲(chǔ)。ip域用來(lái)存儲(chǔ)IPV6信息,next域?yàn)橹羔樣颉?br>
8.按照權(quán)利要求6所述的網(wǎng)絡(luò)的拓?fù)湎到y(tǒng),其特征在于,所述步驟2)中所用的鏈表型數(shù)據(jù)結(jié)構(gòu)為struct node{int index;char name[MAXHOSTNAMELEN];struct ipinfo iplist;int type;struct node*next;};用該結(jié)構(gòu)體存儲(chǔ)一個(gè)設(shè)備結(jié)點(diǎn)的信息。index域用來(lái)表示該結(jié)點(diǎn)的序號(hào);name域用來(lái)表示結(jié)點(diǎn)名稱;iplist域用來(lái)存儲(chǔ)該設(shè)備的一個(gè)或多個(gè)IP信息;type域用來(lái)存儲(chǔ)設(shè)備類型(1300表示主機(jī);1200表示路由器);next為指針域。
9.按照權(quán)利要求6所述的網(wǎng)絡(luò)的拓?fù)湎到y(tǒng),其特征在于,所述步驟3)中所用的鏈表型數(shù)據(jù)結(jié)構(gòu)為struct link{int index;int hnode;int enode;int linksum;struct link*next;};用該結(jié)構(gòu)體存儲(chǔ)一條鏈接的信息。Index域表示鏈接的序號(hào);hnode域用來(lái)存儲(chǔ)鏈接一端結(jié)點(diǎn)的序號(hào),enode域用來(lái)存儲(chǔ)鏈接另一端結(jié)點(diǎn)的序號(hào);linksum用來(lái)存儲(chǔ)鏈接被重復(fù)統(tǒng)計(jì)的次數(shù);next域?yàn)橹羔樣颉?br>
10.按照權(quán)利要求6所述的網(wǎng)絡(luò)的拓?fù)湎到y(tǒng),其特征在于,所述步驟4)中所述的odf文件的格式如下t number必須寫在文件開(kāi)頭;number為拓?fù)鋱D中所有結(jié)點(diǎn)的數(shù)量;T number必須寫在文件開(kāi)頭;number為拓?fù)鋱D中所有鏈接的數(shù)量;?node_index name表示一個(gè)結(jié)點(diǎn)的信息;node_index為不分先后的結(jié)點(diǎn)序號(hào),name為結(jié)點(diǎn)名字,名字中間不能有空格;1 linkidx n_idx1 n_idx2表示一個(gè)鏈接的信息;linkidx為不分先后的鏈接序號(hào),n_idx1為鏈接出發(fā)結(jié)點(diǎn)的序號(hào),n_idx2為鏈接到達(dá)結(jié)點(diǎn)的序號(hào)。
全文摘要
本發(fā)明涉及IPv6因特網(wǎng)網(wǎng)絡(luò)拓?fù)渥詣?dòng)發(fā)現(xiàn)方法,客戶端利用本地鏈路節(jié)點(diǎn)的廣播地址作為目標(biāo)地址,通過(guò)任意一網(wǎng)絡(luò)節(jié)點(diǎn)向目標(biāo)地址發(fā)送回聲請(qǐng)求報(bào)文,采集網(wǎng)絡(luò)內(nèi)的所有節(jié)點(diǎn)的IPv6地址,并根據(jù)主機(jī)名與IPv6和IPv4地址的關(guān)系對(duì)應(yīng)關(guān)系,反向DNS解析出主機(jī)名,完成客戶端信息采集;利用因特網(wǎng)消息控制協(xié)議提供的超時(shí)丟棄報(bào)文獲取客戶端到達(dá)服務(wù)器端的IP路由路徑信息,并通過(guò)TCP協(xié)議的5001端口將路由路徑信息發(fā)送到服務(wù)器端口,完成客戶端與服務(wù)端之間的通信;服務(wù)器以因特網(wǎng)上公開(kāi)的可尋址IPv6主機(jī)的IPv6地址作為單條拓?fù)渎窂降淖罱K節(jié)點(diǎn),將新出現(xiàn)的地址和主機(jī)名及其鏈接節(jié)點(diǎn)寫入線狀拓?fù)鋽?shù)據(jù)中,生成網(wǎng)狀拓?fù)湫畔ⅰ?br>
文檔編號(hào)H04L12/28GK1588884SQ200410069128
公開(kāi)日2005年3月2日 申請(qǐng)日期2004年7月6日 優(yōu)先權(quán)日2004年7月6日
發(fā)明者沈曾偉, 宮晨, 李未, 郎昕培, 周剛 申請(qǐng)人:北京航空航天大學(xué)