曾滿江
摘要:作為網(wǎng)絡(luò)管理的基本功能,在IPv6網(wǎng)絡(luò)中研究拓?fù)浒l(fā)現(xiàn)具有重要意義。首先對(duì)比分析了IPv6與IPv4網(wǎng)絡(luò)在拓?fù)浒l(fā)現(xiàn)的差異,從地址空間、雙棧共存、隧道網(wǎng)絡(luò)等幾個(gè)方面具體分析了在IPv6網(wǎng)絡(luò)中進(jìn)行拓?fù)浒l(fā)現(xiàn)需要解決的問(wèn)題,結(jié)合IPv6網(wǎng)絡(luò)自身的特點(diǎn),研究了進(jìn)行IPv6拓?fù)浒l(fā)現(xiàn)需要掌握的關(guān)鍵技術(shù),針對(duì)這些差異,給出了相應(yīng)的拓?fù)浒l(fā)現(xiàn)解決方案。
關(guān)鍵詞:拓?fù)浒l(fā)現(xiàn);隧道;雙棧;IPv6
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2013)07-1521-03
當(dāng)前使用的IPv4網(wǎng)絡(luò)在可擴(kuò)展性、信息安全、服務(wù)質(zhì)量、物聯(lián)網(wǎng)等端到端通信方面受到諸多制約,隨著全球范圍開展的下一代互聯(lián)網(wǎng)的部署,許多在當(dāng)前互聯(lián)網(wǎng)條件下存在的問(wèn)題都將迎刃而解。完全地取代IPv4網(wǎng)絡(luò)是一個(gè)曲折而漫長(zhǎng)的過(guò)程,中國(guó)雖然在高校部署了全球最大的IPv6實(shí)驗(yàn)網(wǎng)絡(luò),在目前的應(yīng)用來(lái)看,它仍然只是IPv4網(wǎng)絡(luò)的一種復(fù)制,并沒(méi)有很精彩的應(yīng)用吸引眼球。無(wú)可否認(rèn)的是,IPv6取代IPv4是大勢(shì)所趨,關(guān)于下一代互聯(lián)網(wǎng)的研究正成為一個(gè)新的研究熱點(diǎn)。
作為網(wǎng)絡(luò)管理中的一項(xiàng)基本功能,拓?fù)涔芾韺?shí)現(xiàn)網(wǎng)絡(luò)拓?fù)涞淖詣?dòng)發(fā)現(xiàn),流量監(jiān)控,定期更新,設(shè)備管理等功能。由于IPv6網(wǎng)絡(luò)采用全新的地址空間,子網(wǎng)空間巨大,而且沒(méi)有在IPv4網(wǎng)絡(luò)中定義的ARP、RARP概念。在IPv4下所使用的窮舉法拓?fù)浒l(fā)現(xiàn)算法并不適用于IPv6網(wǎng)絡(luò)。
同時(shí),針對(duì)IPv6的SNMP標(biāo)準(zhǔn)化工作尚未完成,支持IPv6的MIB對(duì)象比較少,許多字段目前還是不可訪問(wèn)的(not-accessible)。針對(duì)這些問(wèn)題,需要探索一種行之有效的針對(duì)IPv6的拓?fù)浒l(fā)現(xiàn)算法。
當(dāng)前,國(guó)內(nèi)外對(duì)IPv6網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)的研究比較少。相關(guān)文獻(xiàn)中,法國(guó)ORIA-INRIA實(shí)驗(yàn)室的I.Astic等提出了分層拓?fù)浒l(fā)現(xiàn)結(jié)構(gòu)。該算法的中心思想是通過(guò)子網(wǎng)代理發(fā)送一組多播地址來(lái)發(fā)現(xiàn)子網(wǎng)內(nèi)所有節(jié)點(diǎn)的地址信息和主機(jī)信息,通過(guò)管理中心來(lái)處理本地代理送來(lái)的子網(wǎng)信息,由traceroute6來(lái)實(shí)現(xiàn)對(duì)骨干網(wǎng)絡(luò)的結(jié)構(gòu)識(shí)別,進(jìn)而分析出全網(wǎng)的拓?fù)浣Y(jié)構(gòu)。貝爾實(shí)驗(yàn)室的Daniel G等人提出了一種基于源路由的拓?fù)浒l(fā)現(xiàn)思想,對(duì)6Bones網(wǎng)絡(luò)進(jìn)行了大規(guī)模探測(cè)。Lorenzo Colitti等人提出了采用最大MTU和注入IP欺騙包的方法,該方法通過(guò)IP欺騙包的來(lái)判斷是否存在隧道,判斷隧道兩端節(jié)點(diǎn)信息。
以上方法針對(duì)IPv6拓?fù)浒l(fā)現(xiàn)的普遍問(wèn)題,給出了相應(yīng)的解決辦法,在IPv6拓?fù)浒l(fā)現(xiàn)的探索中具有借鑒意義,但由于研究人員研究的出發(fā)點(diǎn)、側(cè)重點(diǎn)不同,在一定條件下是有效的,但是在當(dāng)前日趨復(fù)雜的IPv4/IPv6混合的網(wǎng)絡(luò)中不具有通用性。分層算法側(cè)重于局域網(wǎng)的管理,但是無(wú)法適用于分布式網(wǎng)絡(luò),而且在每一個(gè)子網(wǎng)需要配置一個(gè)代理,實(shí)現(xiàn)較為復(fù)雜;源路由拓?fù)浒l(fā)現(xiàn)思想屬于實(shí)驗(yàn)性質(zhì),并沒(méi)有發(fā)展為有效的拓?fù)涔芾恚⑶覠o(wú)法管理不支持源路由功能的路由器,不具備通用性;IP欺騙包算法側(cè)重于隧道網(wǎng)絡(luò),對(duì)其他網(wǎng)絡(luò)情況沒(méi)有涉及。
本文以某高校校園網(wǎng)中存在的路由、交換設(shè)備為實(shí)驗(yàn)對(duì)象,分析了IPv6網(wǎng)絡(luò)管理中的實(shí)際問(wèn)題及涉及的關(guān)鍵技術(shù),提出了一種行之有效的拓?fù)涔芾淼南到y(tǒng)架構(gòu)。
1 IPv6拓?fù)浒l(fā)現(xiàn)關(guān)鍵技術(shù)
1.1 本地節(jié)點(diǎn)發(fā)現(xiàn)技術(shù)
在IPv4 網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)一般通過(guò)ping遍歷子網(wǎng)空間,通過(guò)多線程發(fā)送ICMP請(qǐng)求發(fā)現(xiàn)在線的主機(jī)。對(duì)于一個(gè)C類子網(wǎng)來(lái)說(shuō),采用異步方式探測(cè)只需要幾秒鐘時(shí)間,也不會(huì)給網(wǎng)絡(luò)帶來(lái)負(fù)擔(dān)。而IPv6網(wǎng)絡(luò),探測(cè)一個(gè)子網(wǎng)需要發(fā)送264個(gè)ICMP請(qǐng)求,這對(duì)網(wǎng)絡(luò)和程序本身來(lái)說(shuō)都是不可接受的。
在RFC3513中定義了一組多播地址可以用來(lái)解決子網(wǎng)節(jié)點(diǎn)的探測(cè)問(wèn)題。如表1所示。
[多播地址\&描述\&FF01::1\&所有本地接口地址\&FF01::2\&本地接口所有路由地址\&FF02::1\&所有本地鏈路地址\&FF02::2\&本地鏈路所有路由地址\&FF05::2\&本地站點(diǎn)所有路由地址\&]
對(duì)于目標(biāo)地址為FF02::1的包,本地鏈路內(nèi)所有節(jié)點(diǎn)(包括路由器、主機(jī))都會(huì)接收并響應(yīng);對(duì)于目標(biāo)地址為FF02::2的包,本地鏈路內(nèi)所有路由器都會(huì)接收并響應(yīng)。通過(guò)對(duì)這兩個(gè)多播地址發(fā)送ping6請(qǐng)求,即可區(qū)分本地鏈路內(nèi)的主機(jī)和路由器。
具體算法描述如下:
1) 向ping6 FF02::1 發(fā)送ICMPv6 Echo Request報(bào)文;
2) 根據(jù)收到的ICMPv6 Echo Reply 應(yīng)答,將所有節(jié)點(diǎn)存入節(jié)點(diǎn)表中;
3) 向ping6 FF02::2 發(fā)送ICMPv6 Echo Request報(bào)文;
4) 根據(jù)收到的ICMPv6 Echo Reply 應(yīng)答,將所有節(jié)點(diǎn)存入路由器表中;
5) 從節(jié)點(diǎn)表中取出不屬于路由器表中的項(xiàng),加入到主機(jī)表中。
6) 對(duì)節(jié)點(diǎn)表中的設(shè)備異步讀取MIB信息,將有響應(yīng)的設(shè)備存入交換機(jī)表。
此時(shí)得到的地址都是本地鏈路地址,本地鏈路地址無(wú)法與其他子網(wǎng)區(qū)分和通信,需要將本地鏈路地址轉(zhuǎn)換為全球單播地址。方法是根據(jù)無(wú)狀態(tài)自動(dòng)分配地址的工作原理進(jìn)行節(jié)點(diǎn)的全局地址配置。無(wú)狀態(tài)自動(dòng)分配地址通過(guò)路由器定期發(fā)出包含子網(wǎng)前綴宣告,主機(jī)在收到宣告后根據(jù)子網(wǎng)前綴和本身的接口標(biāo)識(shí)完成全局地址的配置過(guò)程。在獲得設(shè)備的本地鏈路地址后,模擬路由器以FF02::2為目的地址發(fā)送請(qǐng)求報(bào)文,獲得路由器宣告報(bào)文,解析得到的宣告報(bào)文即可獲得本地鏈路的子網(wǎng)前綴,將子網(wǎng)前綴與接口標(biāo)識(shí)進(jìn)行拼接則可得到設(shè)備的全球唯一單播地址。
1.2 骨干網(wǎng)拓?fù)浒l(fā)現(xiàn)
網(wǎng)絡(luò)層拓?fù)浒l(fā)現(xiàn)主要是對(duì)IPv6網(wǎng)絡(luò)中的路由器連接關(guān)系進(jìn)行判斷,對(duì)存在的匿名路由器進(jìn)行識(shí)別與合并, 從而形成最接近實(shí)際的網(wǎng)絡(luò)結(jié)構(gòu)。
在骨干網(wǎng)拓?fù)浒l(fā)現(xiàn)中,可行的辦法是通過(guò)Traceroute6工具進(jìn)行拓?fù)涮綔y(cè),traceroute6是一種用來(lái)進(jìn)行網(wǎng)絡(luò)測(cè)量的工具,利用ICMPv6超時(shí)消息來(lái)發(fā)現(xiàn)從源地址到目的地址之間通過(guò)哪些路由器, traceroute6的結(jié)果中相鄰的兩跳路由器之間肯定是直接相連的。算法描述如下:
1) 讀取路由器IP地址列表
2) 對(duì)于列表中的每一個(gè)地址
①向該地址traceroute
②將traceroute返回的連接關(guān)系存入ConnectList
3) 整理結(jié)果
在實(shí)際的拓?fù)浒l(fā)現(xiàn)過(guò)程中,存在匿名路由器的問(wèn)題,即相同匿名接口被當(dāng)做不同的實(shí)際接口處理,造成拓?fù)涓鼮閺?fù)雜。在一個(gè)校園網(wǎng)中,網(wǎng)絡(luò)規(guī)模不大,匿名路由器現(xiàn)象并不多,在本系統(tǒng)的實(shí)際環(huán)境中簡(jiǎn)化了設(shè)計(jì),忽略了匿名路由器的存在。當(dāng)探測(cè)對(duì)象是大規(guī)模的網(wǎng)絡(luò)環(huán)境時(shí),必須考慮匿名路由器的問(wèn)題。
1.3隧道發(fā)現(xiàn)
目前主要使用的隧道方式有6over4和6to4隧道,傳輸過(guò)程中,IPv6數(shù)據(jù)包用隧道源IPv4地址的報(bào)文進(jìn)行二次封裝,經(jīng)過(guò)IPv4骨干網(wǎng)后,由另一端雙棧路由器去掉IPv4報(bào)文,繼續(xù)轉(zhuǎn)發(fā)IPv6報(bào)文。隧道發(fā)現(xiàn)模塊的功能就是對(duì)這樣的雙棧路由器進(jìn)行識(shí)別,進(jìn)而判斷存在雙棧的路由鏈路上是否為隧道。
1.3.1雙棧識(shí)別
在獲得了骨干網(wǎng)的每一條路徑后,首先對(duì)骨干網(wǎng)中的每個(gè)節(jié)點(diǎn)進(jìn)行判斷是否為雙棧節(jié)點(diǎn),如果是雙棧節(jié)點(diǎn)則繼續(xù)判斷是否存在隧道。
在判斷是否為雙棧的過(guò)程中,可通過(guò)SNMP分別讀取IPv6和IPv4地址下的MAC地址,記為
算法的具體描述如下:
1) 分別讀取路由器鏈表Router4List和Router6List;
2) 依次對(duì)Router6List鏈表中的元素讀取ipv6NetToMediaPhysAddress,記錄
3) 依次對(duì)Router4List鏈表中的元素讀取PhysAddress, 記錄
4) 交叉比對(duì)
1.3.2 隧道識(shí)別
當(dāng)一個(gè)IPv6數(shù)據(jù)包經(jīng)過(guò)隧道時(shí),IPv6數(shù)據(jù)包會(huì)被封裝到IPv4數(shù)據(jù)包中,封裝后的數(shù)據(jù)包會(huì)附加上IPv4包頭。所以,如果檢測(cè)到數(shù)據(jù)包的這種長(zhǎng)度變化,就能判斷隧道的存在。
一般IPv6隧道將附加20B的IPv4報(bào)頭,GRE隧道附加24B或28B的IPv4報(bào)頭。假設(shè)一條鏈路的兩個(gè)端點(diǎn)分別為R1和R2。如果R1和R2之間不存在隧道,它們之間轉(zhuǎn)發(fā)的最大IPv6數(shù)據(jù)包長(zhǎng)度為默認(rèn)的1280B。如果存在隧道,那么能轉(zhuǎn)發(fā)的IPv6最大數(shù)據(jù)包長(zhǎng)度則為{1500-20,1500-24,1500-28}。所以只需向目標(biāo)節(jié)點(diǎn)發(fā)送超大報(bào)文,導(dǎo)致路由器對(duì)報(bào)文進(jìn)行強(qiáng)制分片,對(duì)接收到的報(bào)文進(jìn)行大小分析,當(dāng)MTU∈{1480,1476,1472,1280}中某個(gè)值時(shí),即可判斷該鏈路為隧道鏈路。
2 結(jié)論
IPv6網(wǎng)絡(luò)將解決IPv4網(wǎng)絡(luò)中暴露的諸多問(wèn)題,但在全面推進(jìn)的過(guò)程中也有重重困難。由于協(xié)議結(jié)構(gòu)的變化,關(guān)于IPv6 SNMP標(biāo)準(zhǔn)化工作沒(méi)有完成,網(wǎng)絡(luò)管理工作在IPv6網(wǎng)絡(luò)中需要重新研究。該文分析了在IPv6網(wǎng)絡(luò)中進(jìn)行拓?fù)浒l(fā)現(xiàn)的新問(wèn)題,根據(jù)IPv6網(wǎng)絡(luò)的特點(diǎn),引入了新的思路和方法以適應(yīng)這樣的變化。在某高校的實(shí)驗(yàn)網(wǎng)絡(luò)環(huán)境中能較好地適應(yīng),但介于當(dāng)前實(shí)驗(yàn)條件,以及IPv6 SNMP MIB定義不完整的限制,IPv6的鏈路層拓?fù)浒l(fā)現(xiàn)尚待進(jìn)一步研究。
參考文獻(xiàn):
[1] Daniel G W,F(xiàn)angzhe C,Ramesh Vet al.Topology Discovery for Public IPv6 Networks[J].ACM SIGCOMM Computer Communications Review,2003;33(3);59-68.
[2] 宮晨,朗昕培,陳英,等. IPv6骨干網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)[J].計(jì)算機(jī)科學(xué),2006, 33( 4) : 29-31.
[3] 楊國(guó)正,陸余良,夏陽(yáng). IPv6網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)技術(shù)研究[J] .計(jì)算機(jī)工程,2007,33(2): 99-101.
[4] 岑賢道,安常青.網(wǎng)絡(luò)管理協(xié)議及應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社, 1998,20-25.
[5] 李玉鵬,王換招,田海燕,等.基于SNMP和Java的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)[ J]. 計(jì)算機(jī)工程與應(yīng)用, 2004,(5 ): 152-154.
[6] 楊柳,李振宇,張大方,等.冗余最小化IPv6拓?fù)浒l(fā)現(xiàn)方法[J].計(jì)算機(jī)研究與發(fā)展,2007,44(6):939-946
[7] 林之光,李英壯.一種改建的基于SNMP的網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)算法[J].中國(guó)海洋大學(xué)學(xué)報(bào),2008,30(5):171-174.
[8] 楊國(guó)正,陸余良,夏陽(yáng),等.匿名路由器對(duì)抽樣網(wǎng)絡(luò)拓?fù)涞挠绊懛治?[J] .計(jì)算機(jī)工程,2009,35(16): 104-106.