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