摘 要:IETF 6LowPan 工作小組定義了基于低功耗個(gè)域網(wǎng)的IPv6 協(xié)議。鄰居發(fā)現(xiàn)是一種專用于IPv6的新協(xié)議,由于6LowPan 網(wǎng)絡(luò)應(yīng)用的特點(diǎn),鄰居發(fā)現(xiàn)協(xié)議必須優(yōu)化。為了更好地降低功耗,提出了限制多播路由請求和路由公告,避免重復(fù)地址檢測、多播鄰居請求和鄰居不可達(dá)檢測信息等一系列6LowPan鄰居發(fā)現(xiàn)優(yōu)化策略。
關(guān)鍵詞:6LowPan;鄰居發(fā)現(xiàn);IPv6;廣播
中圖分類號:TN91172文獻(xiàn)標(biāo)識碼:B
文章編號:1004-373X(2008)07-065-03
6LowPan Neighbor Discovery Optimization
JIN Fang1,LIU Dachen2,WU Xuezhi1
(1.Electronics Engineering College,Naval University of Engineering,Wuhan,430033,China;2.Equipment Department of 91913 Unit,Dalian,116041,China)
Abstract:IETF 6LowPan working group defines IPv6 over low-power personal area network (IEEE 802.15.4).Neighbor discovery is a new protocol for IPv6.Due to the nature of 6LowPan network,the protocol must be optimized,and broadcast messages should be minimized.This document suggests some optimizations for IPv6 neighbor discovery related multicast messages in order to reduce signaling in the low-cost low-power network.
Keywords:6LowPan;neighbor discovery;IPv6;broadcast
6LowPan(IPv6 over IEEE802.15.4或IPv6 over LR[CD#*2]PAN的簡稱)是IETF于2004年11月新成立的一個(gè)工作組,致力于完成IPv6數(shù)據(jù)包在IEEE802.15.4上傳輸?shù)膶?shí)現(xiàn),規(guī)定6LowPan技術(shù)在底層采取IEEE802.15.4協(xié)議,MAC層與網(wǎng)絡(luò)層之間采用6LowPan 適配層,MAC層以上采取IPv6協(xié)議棧。
IEEE 802.15.4 鏈路層支持廣播但不支持多播。廣播信息可以在某些方案中表示所有節(jié)點(diǎn)的多播信息,由于6LowPan 網(wǎng)絡(luò)和傳感器網(wǎng)絡(luò)的特點(diǎn),為節(jié)約能量,周期性的廣播信息應(yīng)被最小化。
為此,在保持鄰居發(fā)現(xiàn)協(xié)議功能的條件下,可通過限制多播路由請求和路由公告,減小或避免多播中重復(fù)地址檢測、多播鄰居請求和鄰居不可達(dá)檢測等策略來實(shí)現(xiàn)鄰居發(fā)現(xiàn)協(xié)議優(yōu)化。
1 鄰居發(fā)現(xiàn)概述
IPv6鄰居發(fā)現(xiàn)協(xié)議(消息格式如圖1所示)被用來解決關(guān)于相同物理鏈路上的節(jié)點(diǎn)之間的交互問題,如:路由器發(fā)現(xiàn)、地址解析、重復(fù)地址檢測、鄰居不可達(dá)檢測、重發(fā)前綴、下一跳確定以及重定向等。鄰居發(fā)現(xiàn)過程使用5個(gè)不同的ICMPv6數(shù)據(jù)報(bào)類型來確定和維護(hù)IPv6路由器之間的鄰居關(guān)系,他們是路由請求、路由通告、鄰居請求、鄰居發(fā)現(xiàn)和重定向。鄰居發(fā)現(xiàn)的過程如下:
(1) 主機(jī)選擇一個(gè)本地鏈路IPv6地址,并且通過廣播一個(gè)重復(fù)地址檢測機(jī)制的鄰居發(fā)現(xiàn)來確定他是否是鏈路上惟一的。在這之前,主機(jī)要連接界面上的節(jié)點(diǎn)請求多播地址。節(jié)點(diǎn)請求接入組需要發(fā)送MLD鏈路信息以處理MLD偵探開關(guān)的鏈路。
(2) 當(dāng)主機(jī)初始化網(wǎng)絡(luò)后,向所有IPv6路由多播地址多播一個(gè)或幾個(gè)鄰居請求信息,直到他收到一個(gè)路由公告。
(3) 路由接收到路由請求后發(fā)送一個(gè)路由公告。按照鄰居發(fā)現(xiàn)規(guī)范,路由可以單播路由公告或者向所有IPv6多播地址多播路由公告。
(4) 一旦主機(jī)收到一個(gè)帶有一個(gè)或更多“A”標(biāo)記系列前綴選項(xiàng)的路由公告,主機(jī)將執(zhí)行自動(dòng)地址配置。對每個(gè)構(gòu)成部分的IPv6地址,他將通過向多播地址請求節(jié)點(diǎn)多播一個(gè)鄰居請求信息。
當(dāng)一個(gè)加于鏈路的主機(jī)想與另一個(gè)主機(jī)通信時(shí),如果主機(jī)地址是鏈路前綴的一部分,則主機(jī)將會(huì)多播一個(gè)鄰居請求以尋找對等的鏈路層地址,這同樣適用于路由接收到需要轉(zhuǎn)發(fā)到主機(jī)的鏈路前綴的數(shù)據(jù)包,對鄰居請求的反應(yīng)是單播鄰居公告;如果目的地不是鏈路前綴的一部分,主機(jī)將向一個(gè)默認(rèn)路由發(fā)送數(shù)據(jù)包,主機(jī)將從接收到的路由公告信息中得到鏈路層地址。
2 關(guān)于拓?fù)浜偷刂酚成涞募僭O(shè)
為了優(yōu)化鄰居發(fā)現(xiàn)協(xié)議,在此結(jié)合鏈路層和網(wǎng)絡(luò)層的功能作一些假設(shè)。
(1) 一個(gè)PAN-ID定義一個(gè)LowPan網(wǎng)絡(luò)。
(2) 就像一個(gè)PAN-ID可以確定一個(gè)子網(wǎng)一樣,每個(gè)LowPan網(wǎng)絡(luò)都與一個(gè)IPv6子網(wǎng)相對應(yīng)。
(3) 每個(gè)LowPan網(wǎng)都有一個(gè)PAN協(xié)調(diào)器或PAN群首。
(4) 在LowPan網(wǎng)絡(luò)范圍內(nèi)IPv6路由器是一個(gè)PAN協(xié)調(diào)器。
(5) 當(dāng)一個(gè)設(shè)備連接至LowPan網(wǎng)鏈路層時(shí),他將為協(xié)調(diào)器尋找單播鏈路層地址。
(6) 當(dāng)網(wǎng)絡(luò)重建時(shí),先前的消息能夠表明協(xié)調(diào)器在與LowPan連接時(shí)的位置。因此,單播地址將會(huì)指引到PAN協(xié)調(diào)器的所有路徑。
(7) IPv6路由通過前綴公告賦地址值。
(8) 其他的全功能節(jié)點(diǎn)不充當(dāng)IPv6路由器,但他們一般會(huì)在鏈路層傳輸數(shù)據(jù)包。
(9) 星型拓?fù)渲屑僭O(shè)每個(gè)節(jié)點(diǎn)離PAN協(xié)調(diào)器只有一跳。
(10) 本文定義一個(gè)網(wǎng)狀拓?fù)洌诰W(wǎng)狀拓?fù)渲忻總€(gè)節(jié)點(diǎn)都具有轉(zhuǎn)發(fā)能力。這樣,他可以看作是有一個(gè)PAN協(xié)調(diào)器和若干其他協(xié)調(diào)器的全功能節(jié)點(diǎn)設(shè)備(Full Function Devices,F(xiàn)FDs)。
(11) 全功能節(jié)點(diǎn)離PAN協(xié)調(diào)器至多一跳距離。
(12) 假設(shè)在LowPan網(wǎng)絡(luò)中,鏈路層地址為64位EUI-64地址,因?yàn)檫@些地址不會(huì)由于加入一個(gè)節(jié)點(diǎn)而改變。
3 最小化路由請求和路由公告
3.1 避免最初的路由請求和路由公告的鏈路層廣播
因?yàn)槲覀兗僭O(shè)PAN協(xié)調(diào)器也是IPv6路由器,所以可以完全避免LowPan節(jié)點(diǎn)在初始化過程中多播路由請求和路由公告。
當(dāng)一個(gè)LowPan節(jié)點(diǎn)初始化并需要發(fā)送一個(gè)路由請求地址到所有IPv6多播地址時(shí),他只需發(fā)送一個(gè)請求指令到節(jié)點(diǎn)協(xié)調(diào)器,這樣第二層目的地址將會(huì)是協(xié)調(diào)器地址。在星型拓?fù)渲?,協(xié)調(diào)器同時(shí)是PAN協(xié)調(diào)器以及IPv6路由器,這樣路由請求將會(huì)被發(fā)送至路由。在網(wǎng)狀拓?fù)渲校?dāng)協(xié)調(diào)器接收到一個(gè)數(shù)據(jù)包后,他將會(huì)查找IPv6報(bào)頭,如果他是指定到所有IPv6多播地址的,他將轉(zhuǎn)發(fā)數(shù)據(jù)包到協(xié)調(diào)器,這樣將通過PAN協(xié)調(diào)器傳送路由請求。
在路由請求中,LowPan節(jié)點(diǎn)必須包括一個(gè)發(fā)送者鏈路層地址選項(xiàng),因?yàn)檫@樣會(huì)允許路由回應(yīng)一個(gè)單播路由公告。
因?yàn)槊總€(gè)主機(jī)在連接至PAN網(wǎng)絡(luò)時(shí)發(fā)送一個(gè)路由請求,而且對PAN協(xié)調(diào)器只有惟一的路由,路由將會(huì)偵測所有IPv6鏈路本地地址的到來,這將允許路由器擁有一個(gè)有鏈路層地址的鏈路上所有節(jié)點(diǎn)的完全表,這將會(huì)對其他優(yōu)化很有用。
3.2 避免周期性路由公告的鏈路層廣播
在網(wǎng)狀拓?fù)渲校琁Pv6路由器中周期性的路由公告將會(huì)充滿整個(gè)網(wǎng)絡(luò)。首先,只要主機(jī)能夠使用其他機(jī)制來偵測路由消失就可以增加默認(rèn)時(shí)間標(biāo)記。其次,因?yàn)槁酚善魍ㄟ^接收到的路由請求可以得知PAN中所有鏈路層地址,所以他只需復(fù)制單播地址而不需要廣播鏈路層地址。而向所有節(jié)點(diǎn)發(fā)送IPv6多播地址數(shù)據(jù)包將導(dǎo)致給每個(gè)單播地址發(fā)送副本。這樣,路由器需要更多的能量,但對PAN中的節(jié)點(diǎn)是有利的。
4 最小化鄰居請求
在此考慮兩個(gè)方案以減小或消除多播鄰居請求信息。一個(gè)方案是找到實(shí)際的鄰居和他們的鏈路層地址,而實(shí)際的鄰居來自LowPan網(wǎng)絡(luò)內(nèi)部或外部均可。另一方案是尋找不存在的鄰居,例如一個(gè)不存在或不可達(dá)的IPv6地址可能有相同的子網(wǎng)前綴配置到6LowPan網(wǎng)絡(luò),對一個(gè)不存在的IPv6地址的路由請求會(huì)隨機(jī)發(fā)生或者從LowPan網(wǎng)外攻擊DOS。
4.1 避免鏈路層對已存在節(jié)點(diǎn)廣播鄰居請求信息
為IPv6地址發(fā)送鄰居請求信息以解決鏈路層地址的方法同樣是浪費(fèi)帶寬和能量的。這樣,以下方案試圖向很可能是全功能節(jié)點(diǎn)的PAN協(xié)調(diào)器廣播鏈路層信息。即使協(xié)調(diào)器離詢問節(jié)點(diǎn)有兩跳距離,每個(gè)鄰居請求也將會(huì)牽涉路徑上很少的節(jié)點(diǎn)。所以說,單播請求可以解決地址問題。
這個(gè)提案不需變換任何協(xié)議,而只依賴于現(xiàn)有的鄰居發(fā)現(xiàn)。前綴公告路由不會(huì)置“on-link”標(biāo)志。在前綴中,即使這些前綴已在鏈路上,也會(huì)導(dǎo)致PAN的主機(jī)一開始向鏈路上所有確定節(jié)點(diǎn)的路由器發(fā)送數(shù)據(jù)包,同時(shí),雙向數(shù)據(jù)包將會(huì)返回PAN并重新向發(fā)送者發(fā)送信息,重發(fā)信息包括目標(biāo)的鏈路層地址,因?yàn)樵谒泥従泳彺嬷写嬗羞@些信息。
當(dāng)路由器不知道每個(gè)LowPan節(jié)點(diǎn)在PAN中的鏈路層地址時(shí),路由器需要在重新發(fā)送前多播鄰居請求,而以上方案可以避免這一點(diǎn)。
4.2 避免鏈路層向不存在的節(jié)點(diǎn)廣播鄰居請求信息
如果對沒有公告的鏈路前綴配置以上方案,數(shù)據(jù)包遇到不明或不存在的節(jié)點(diǎn),將會(huì)終止。無論數(shù)據(jù)包是由LowPan節(jié)點(diǎn)發(fā)起還是由互聯(lián)網(wǎng)節(jié)點(diǎn)發(fā)起還是傳向LowPan路由器,這一點(diǎn)都成立。
在標(biāo)準(zhǔn)的鄰居發(fā)現(xiàn)中,這將導(dǎo)致路由器多播一個(gè)鄰居請求信息,如果節(jié)點(diǎn)不存在或不可達(dá)路由器,重傳數(shù)據(jù)包將會(huì)再次多播鄰居請求信息。
如果路由器能夠擁有一張現(xiàn)在LowPan鏈路層地址的所有IPv6地址的權(quán)威表,將會(huì)大大避免資源損耗。以上已經(jīng)闡明這張表格可以依賴接收的路由請求來維持本地鏈路IPv6地址。如果我們也能讓路由器維持全球IPv6地址,那么應(yīng)避免任何未知目的地的路由請求信息。
如果一個(gè)節(jié)點(diǎn)向一個(gè)LowPan中不存在的節(jié)點(diǎn)目的地址發(fā)送數(shù)據(jù)包,PAN協(xié)調(diào)器在表中不能找到該節(jié)點(diǎn),他將迅速向發(fā)起者發(fā)送未知目的節(jié)點(diǎn)錯(cuò)誤信息,這樣將會(huì)避免任何鄰居請求信息的多播。
由以上討論可知,如果有若干IPv6路由器連接至PAN,他們會(huì)很快將IPv6地址與PAN鏈路層地址匹配。
5 避免重復(fù)地址檢測(DAD)
當(dāng)一個(gè)節(jié)點(diǎn)獲取一個(gè)新的地址時(shí),他首先必須確信鏈路上沒有其他的節(jié)點(diǎn)使用該IP地址,這就觸發(fā)了重復(fù)地址檢測(Duplicate Address Detection,DAD)。
如果在鏈路節(jié)點(diǎn)上沒有私有或臨時(shí)地址的存在,而且可以確保IPv6地址的惟一性,則可避免重復(fù)地址檢測。
在星型網(wǎng)絡(luò)拓?fù)渲?,可以廣播DAD信息至默認(rèn)路由器,但在多跳的LowPan網(wǎng)絡(luò)中,這將導(dǎo)致泛洪。當(dāng)一個(gè)節(jié)點(diǎn)導(dǎo)入或配置到他的LowPan網(wǎng)絡(luò)接口時(shí),他將像發(fā)送路由請求一樣發(fā)送重復(fù)地址檢測信息;而在多跳網(wǎng)絡(luò)中,信息將被發(fā)送至網(wǎng)絡(luò)協(xié)調(diào)器。IPv6路由器可以查看他的鄰居表,以檢測地址是否重復(fù),同時(shí)做出相應(yīng)的響應(yīng)。然而,如果我們假設(shè)每個(gè)IPv6節(jié)點(diǎn)配置一個(gè)EUI-64位的MAC地址,而且節(jié)點(diǎn)不再使用臨時(shí)地址,則所有IPv6地址可以由EUI-64直接惟一生成。這樣,在LowPan網(wǎng)絡(luò)中就可以避免重復(fù)地址檢測了。
6 避免鄰居不可達(dá)檢測(NUD)
鏈路上的節(jié)點(diǎn)通過鄰居不可達(dá)檢測(Neighbor Unreachable Detection,NUD)過程來檢測鏈路上的目標(biāo)節(jié)點(diǎn)。因?yàn)镮Pv6到MAC層的地址映射不會(huì)改變,所以如果在LowPan中使用EUI-64 MAC層地址,而且IPv6地址尚未重新配置到其他節(jié)點(diǎn),就沒有必要向主機(jī)執(zhí)行NUD過程。此外,還可采用其他機(jī)制,當(dāng)PAN協(xié)調(diào)器的鏈路層檢測失敗、恢復(fù),或由其他PAN協(xié)調(diào)器替換都不需要向路由器執(zhí)行鄰居不可達(dá)檢測。
7 結(jié) 語
為了更好地降低功耗,本文提出了限制多播路由請求和路由公告,減小或避免多播中重復(fù)地址檢測、鄰居請求和鄰居不可達(dá)檢測等一系列6LowPan鄰居發(fā)現(xiàn)優(yōu)化策略,但這些策略是否會(huì)為6LowPan網(wǎng)絡(luò)引入新的安全威脅還有待進(jìn)一步探討。本文所探討的6LowPan鄰居發(fā)現(xiàn)優(yōu)化策略可應(yīng)用于其他基于IPv6的新技術(shù)中。
參 考 文 獻(xiàn)
[1]Montenegro G,Kushalnagar N.Transmission of IPv6 Packets over IEEE 802.15.4 Networks[EB/OL].2007.
[2]Kushalnagar N,Montenegro G.6LowPan:Overview,Assumptions,Problem Statement and Goals[EB/OL],2007.
[3]Chakrabarti S,Nordmark E.LowPan Neighbor Discovery Extensions[EB/OL].2007.
[4]Stojmenovic I,Wu J.Broadcasting and Activity-Scheduling in Ad Hoc Networks[J].IEEE Transactions on Computers,2004,27(6):25-29.
[5]IEEE Computer Society,IEEE Std.802.15.4[S],2003.
[6]袁琦.IPv6的鄰居發(fā)現(xiàn)技術(shù)[J].電信技術(shù),2005(3):65-68.
[7]時(shí)廷堂.IPv6鄰居發(fā)現(xiàn)過程的安全性研究[EB/OL].http://www.paper.edu.cn,中國科技論文在線.
作者簡介
金 芳 女,1983年出生,河北唐山人,通信與信息系統(tǒng)專業(yè),碩士研究生。主要研究方向?yàn)樾畔⒕W(wǎng)絡(luò)。
劉大臣 男,1976年出生,吉林榆樹人,助理工程師。主要從事通信裝備維修和保障方面的研究和工程實(shí)踐。
吳學(xué)智 男,1962年出生,湖北人,碩士生導(dǎo)師,教授。主要研究方向?yàn)樾畔⒕W(wǎng)絡(luò)。