,
(三明學(xué)院 現(xiàn)代教育技術(shù)中心,福建 三明 365004)
近年來在低功耗無線傳感器網(wǎng)絡(luò)中物聯(lián)網(wǎng)逐步成為一個非常熱門的研究課題。6LoWPAN成為IPv6可以應(yīng)用于低功耗有損網(wǎng)絡(luò)的一個標(biāo)準(zhǔn)[1-2]。IETF的6LoWPAN工作組在2007年發(fā)布了第一個6LoWPAN文檔,其技術(shù)底層采用IEEE 802.15.4規(guī)定的物理層和數(shù)據(jù)鏈路層,其中提出了數(shù)據(jù)的報頭壓縮、數(shù)據(jù)包的分片重組、6LoWPAN網(wǎng)絡(luò)的路由協(xié)議、IPv6地址自動配置、網(wǎng)絡(luò)管理等幾個重點研究的目標(biāo)。IEEE 802.15.4是一個代價低、能耗小、傳輸速率低的無線個人局域網(wǎng),支持星型和對等網(wǎng)絡(luò)拓?fù)鋄3]。對等網(wǎng)絡(luò)拓?fù)湫枰?jīng)過多跳傳輸,這種類型的網(wǎng)絡(luò)通常應(yīng)用于工業(yè)監(jiān)測環(huán)境、健康看護等。在這些應(yīng)用中,無線感知節(jié)點需要通過路由協(xié)議建立多跳連接來從普通節(jié)點向匯聚節(jié)點傳輸數(shù)據(jù)。IETF工作組為了解決這個問題定義了RPL(The IPv6 Routing Protocol for Low-power and lossy Networks)。
在本文中,我們用Contiki測試臺來研究在不同的RSSI和負(fù)載數(shù)量時,IPv6 UDP數(shù)據(jù)包在IEEE 802.15.4標(biāo)準(zhǔn)下的表現(xiàn)。通過不同長度的IPv6 UDP數(shù)據(jù)包在6LoWPAN下的傳輸來分析IPv6數(shù)據(jù)包的丟包率和吞吐量[4]。實驗表明,不同的IPv6幀長會影響6LoWPAN的表現(xiàn)。實驗結(jié)果強調(diào)了IPv6 UDP數(shù)據(jù)幀長和6LoWPAN鏈路質(zhì)量之間的平衡。最后基于實驗本文提出在低功耗有損網(wǎng)絡(luò)中的基于RSSI的IPv6路由協(xié)議,提高了網(wǎng)絡(luò)的傳輸效率。
(1)6LoWPAN:
6LoWPAN是基于IPv6通信協(xié)議,采用低功耗無線個人局域網(wǎng)來傳輸IPv6數(shù)據(jù)包的[5]。相比于傳統(tǒng)的TCP/IP網(wǎng)絡(luò),要使WSN直接連接到互聯(lián)網(wǎng),6LoWPAN將面臨許多難題,例如:在數(shù)據(jù)鏈路層上IPv6的MTU(Maximum Transmission Unit)比IEEE 802.15.4的最大幀長要大很多[6]。為此IETF的6LoWPAN工作組建議在網(wǎng)絡(luò)層和MAC之間增加網(wǎng)絡(luò)適配層。表1是6LoWPAN的協(xié)議棧,分別為應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)適配層(6LoWPAN)、IEEE 802.15.4 的MAC層和PHY層,它提供報頭壓縮以減少報文傳輸開銷,同時還提供IPv6數(shù)據(jù)包的分片和重組。
表1 6LoWPAN 協(xié)議棧
(2)RPL路由協(xié)議:
RPL協(xié)議是目前被廣泛應(yīng)用于低功耗、低計算復(fù)雜度和內(nèi)存受限網(wǎng)絡(luò)中的IPv6路由機制。該協(xié)議呈現(xiàn)樹狀性質(zhì),并為每個節(jié)點估算等級值。等級值用來估計表示鏈接質(zhì)量的期望連接數(shù)(Expected Transmission Count,ETX)ETX作為動態(tài)鏈接機制來構(gòu)建一個有向無環(huán)圖。通常對RPL路由協(xié)議鏈路質(zhì)量的估計可以使得節(jié)點之間建立準(zhǔn)確而穩(wěn)定的通信連接[7]。但是在本文的實驗中可以看出,不同IPv6幀長將會影響6LoWPAN的表現(xiàn)。
在路由過程中網(wǎng)格節(jié)點之間的RSSI信息的提取、融合成ETX信息。該過程中網(wǎng)格節(jié)點間低質(zhì)量的鏈接將會導(dǎo)致過度重傳和路由錯誤。在基于RSSI的適應(yīng)性路由協(xié)議中,路由發(fā)現(xiàn)協(xié)議根據(jù)接收信號強度策略優(yōu)先選擇更穩(wěn)定的鏈路連接。當(dāng)IPv6數(shù)據(jù)包是最小的1280 bytes 的MTU時,將會分解為13個125 bytes的IEEE 802.15.4的幀結(jié)構(gòu),這些幀就稱之為數(shù)據(jù)包分片。因此穩(wěn)定的鏈路路徑更適合傳輸長的IPv6數(shù)據(jù)包,分片通過這類路徑成功到達目的地的概率更高。所以在RPL協(xié)議中的鏈路連接度量機制應(yīng)該引入IPv6包的長度和不同RSSI情況下的丟包率。
(3)6LoWPAN測試平臺:
6LoWPAN測試平臺是在Contiki 開源系統(tǒng)和Zigduino設(shè)備的基礎(chǔ)上開發(fā)用來評估6LoWPAN在室內(nèi)的性能[8]。其系統(tǒng)圖如圖1所示。每個鏈接的RSSI的值用來估計IPv6在RPL路由機制中的丟包率。在這個測試平臺中,我們在傳感器節(jié)點的通信過程中放置包嗅探器,嗅探包含分片的IPv6 UDP數(shù)據(jù)包來評估6LoWPAN在實際無線信道條件下的性能。其中的ATmega128RFA1是新一代的集成微控制芯片,能很好與Contiki操作系統(tǒng)兼容,在Zigduino設(shè)備上執(zhí)行6LoWPAN協(xié)議。
圖1 Contiki 6LoWPAN測試平臺
Contiki是一個開源系統(tǒng),其設(shè)計初衷就是為了在內(nèi)存受限的條件下部署網(wǎng)絡(luò)系統(tǒng)。Contiki支持多種平臺,僅需幾比特的內(nèi)存就能支持多任務(wù)運行環(huán)境,同時它還為6LoWPAN提供RPL路由協(xié)議。實時時鐘(Real Time Clock,RTC),用于源節(jié)點和目的節(jié)點之間的時鐘同步。它提供微妙級精度測量IPv6數(shù)據(jù)包的端到端傳輸時延并計算6LoWPAN的傳輸性能[9-10]。圖中的包嗅探器采用的是CC2531。通過嗅探器我們可以截獲傳輸?shù)臄?shù)據(jù)包,分析由ATmega128RFA1傳輸?shù)臄?shù)據(jù)包的內(nèi)容,并比較不同長度的IPv6數(shù)據(jù)包的長度來其對6LoWPAN性能的影響。
為了在IEEE 802.15.4中發(fā)送長的IPv6幀,源節(jié)點會分割將數(shù)據(jù)包分成多個分片,并獨立發(fā)送這些分片。這些分片通過不同的多跳路徑傳送到目的節(jié)點,并重新組合。這里我們在不同的RSSI環(huán)境中測試1 000個UDP數(shù)據(jù)包的傳輸,分析在目的節(jié)點端的數(shù)據(jù)包計算出IPv6的丟包率。RPL路由協(xié)議可以成功在本測試平臺中運行。傳感器節(jié)點也能傳輸最多1280 bytes的IPv6 UDP數(shù)據(jù)包,并將它們分為14個分片通過多跳傳輸。
對于IPv6數(shù)據(jù)包在無線個人局域網(wǎng)中的表現(xiàn),已經(jīng)有一些文章對此做過研究,其中文章[11]中提出了可信IPv6數(shù)據(jù)包傳輸策略(RIPDS),該策略是在無線個人局域網(wǎng)中通過對數(shù)據(jù)包分片來編碼來保證數(shù)據(jù)包傳輸效率。文章[12]中介紹了通過內(nèi)置的IPv6移動代理來減少數(shù)據(jù)包移交時延。下面我們通過實驗研究來分析IPv6 UDP數(shù)據(jù)包在6LoWPAN適配層的性能,同時對與本文提出的在低功耗有損網(wǎng)絡(luò)中的基于RSSI的IPv6多跳路由選擇機制也給出了性能分析[13]。
6LoWPAN作為一種全新的網(wǎng)絡(luò)傳輸方式,充分應(yīng)用在許多通信領(lǐng)域上:如物聯(lián)網(wǎng)和工業(yè)化操作上,其體系結(jié)構(gòu)使用鏈路層地址來實現(xiàn)網(wǎng)內(nèi)的路由查找和報文轉(zhuǎn)發(fā)。使用IPv6丟包率與分片數(shù)量和對RSSI測距的值的對應(yīng),只需要較低的實現(xiàn)復(fù)雜度和較少的通信開銷,對于在傳輸有限制的網(wǎng)絡(luò)節(jié)點中是相當(dāng)重要的。為了驗證無線傳感網(wǎng)中IPv6丟包率與分片數(shù)量和RSSI之間的關(guān)系,我們做了如下實驗。在源節(jié)點處發(fā)送1000個IPv6 UDP數(shù)據(jù)包直接到目的節(jié)點,并不斷調(diào)節(jié)這2個節(jié)點之間的距離,重復(fù)實驗數(shù)次。在目的節(jié)點處觀察接收到的IPv6 UDP數(shù)據(jù)包和收到的包的RSSI值。數(shù)據(jù)包分片數(shù)的計算是由嗅探器計算得出。為了測試不同長度的IPv6數(shù)據(jù)包幀的長度與IEEE 802.15.4的適應(yīng)程度,源節(jié)點將IPv6包分成單幀到最多13個幀。該過程重復(fù)10次,取平均值作為實驗結(jié)果。
圖2展示了IPv6數(shù)據(jù)包在不同RSSI值時的丟包率。圖中可以看出隨著分片數(shù)量的增加,數(shù)據(jù)的丟包率也是成倍增長。而且隨著RSSI的值從-80到-91,數(shù)據(jù)包的丟包率也增長明顯。同時,如圖中所示,穩(wěn)定的鏈接路徑也適合傳輸長的IPv6包。在不同的RSSI值時,RPL中標(biāo)志鏈路質(zhì)量的ETX也和IPv6包的長度和丟包率有關(guān)。
圖2 IPv6在不同RSSI下的丟包率
在DODAG建立的過程中,RPL路由協(xié)議的開銷主要來自于通告信息(Destination Advertisement Object,DAO)消息,首先在6LoPAN路由環(huán)境中,每一個路由節(jié)點在收到一個DIO(DODAG information)請求信息后,會反向發(fā)送一個DAO消息,并根據(jù)需要被轉(zhuǎn)發(fā)到對應(yīng)的父節(jié)點上,再由父節(jié)點統(tǒng)一對整張DOGAG的路由表進行調(diào)節(jié),因而信息量龐大,由于DIO消息只在單跳距離內(nèi)進行傳輸,DIO消息是一種在建立DODAG過程中,為了讓附近節(jié)點發(fā)現(xiàn)而產(chǎn)生的少量信息,且傳輸距離小短。由于DIS消息開銷很小,開銷可以忽略不計。同時在大量DAO消息在被轉(zhuǎn)發(fā)至父節(jié)點的過程中,會造成對父節(jié)點周圍的節(jié)點巨大的通信壓力,且會引發(fā)網(wǎng)絡(luò)堵塞、中斷的情況發(fā)生,導(dǎo)致DAO消息重新傳送,破壞網(wǎng)絡(luò)傳輸。
根據(jù)以上分析,在RPL路由協(xié)議中,鏈路度量是路徑選擇的一個重要考量。通過上述實驗的觀察,本文設(shè)計了一個基于改進RSSI的RPL路由協(xié)議,其具體實施如下所示:
1)Initially;
2)Root broadcast the DIO message;
3)While node receive DIO message && node joining DODAG;
4)Node update ETX_RSSI value;
5)Node broadcast the new DIO message;
6)Return the DAO message to Root;
7)End while
8)If node receive the DIS message;
9)Node broadcast the DIO message;
10)While node receive DIO message && node want to join DODAG
11)Node update ETX_RSSI value;
12)Node broadcast the new DIO message;
13)Return the DAO message to root;
14)End while;
15)End if;
16)Done;
在路由發(fā)現(xiàn)過程中,每個節(jié)點接受DIO信息系并將RSS值轉(zhuǎn)化為ETX_RSSI。每條鏈接分片數(shù)的適當(dāng)估計用來計算鏈接的ETX值。將每條路徑上的ETX值在重播前寫入到 DIO中,然后目標(biāo)節(jié)點將攜帶平均ETX值的目的地DAO通過路由路徑發(fā)送到ROOT上。在本文中的RPL算法經(jīng)過改進,該存儲模式中Root作為匯聚節(jié)點,實現(xiàn)信息存儲轉(zhuǎn)發(fā),在有向無環(huán)圖中的其他節(jié)點不設(shè)存儲模式。
在表2的6LoWPAN中的IPv6 UDP數(shù)據(jù)包分片長度中,展示了在提出的基于RSSI的RPL路由機制下節(jié)點單跳和兩跳情況下網(wǎng)絡(luò)的性能。在發(fā)送節(jié)點處,IPv6的負(fù)載長度分別被設(shè)置成:1,81,90,91,176,272,464,656,848,1040和1232 字節(jié)。一個比特的負(fù)載也是IPv6傳輸中的最小負(fù)載長度。IPv6中的81字節(jié)正好可以分解成IEEE 802.15.4的一個幀結(jié)構(gòu)。90字節(jié)的IPv6負(fù)載長度是IEEE 802.15.4單跳傳輸時的最大單個幀的負(fù)載長度。91字節(jié)則可以分解成一個最大負(fù)載幀和一個最小負(fù)載幀。1232字節(jié)是Contiki 測試平臺下能夠傳輸?shù)淖畲驣Pv6數(shù)據(jù)包負(fù)載的長度。
這里的傳輸時延是指IPv6 UDP數(shù)據(jù)包從源節(jié)點傳輸?shù)侥康墓?jié)點的傳輸時間。傳輸時延是由處理時延、排隊時延和傳播時延組成的。所以6LoWPAN傳輸時延必須精確到毫秒。圖3展示了在IPv6 UDP數(shù)據(jù)包傳輸中單跳和兩跳端到端傳輸時延。結(jié)果顯示傳輸時延和IPv6 UDP數(shù)據(jù)包負(fù)載有線性相關(guān)。由于長的IPv6數(shù)據(jù)包會增加分片數(shù)量,這回造成傳輸時延和更多的分片開銷。同時圖中可以看出兩跳傳輸?shù)臅r延大概是單跳傳輸時延的兩倍,這是因為在6LoWPAN中的包轉(zhuǎn)發(fā)會在每一跳中進行包分片和重組,因此傳輸時延和跳數(shù)也是線性相關(guān)的。跳數(shù)會很大程度上影響6LoWPAN的傳輸性能。
表2 在6LoWPAN中的IPv6 UDP數(shù)據(jù)包分片長度
圖3 6LoWPAN中單跳和兩跳的傳輸時延
圖4展示了IPv6 UDP數(shù)據(jù)包在6LoWPAN中的實際吞吐量。在UDP的客戶端/服務(wù)器模式下,從客戶端發(fā)送不同長度的IPv6數(shù)據(jù)包負(fù)載到服務(wù)器端來估計6LoWPAN的實際吞吐量。從圖4中可以看出實際吞吐量與IPv6負(fù)載長度密切相關(guān)。在IPv6負(fù)載為一個字節(jié)的情況下,性能非常低。這是因為分片開銷大大高于IPv6負(fù)載。當(dāng)IPv6 UDP數(shù)據(jù)包負(fù)載達到最大負(fù)載81時,此時的實際吞吐量最高。當(dāng)傳輸負(fù)載達到91字節(jié)是,實際吞吐量會突然下降,這是因為分片只是為了傳輸額外1字節(jié)的負(fù)載,使得分片開銷過大。由于6LoWPAN是嚴(yán)格分層的,IPv6數(shù)據(jù)包在每一跳處都被重組,所以傳輸開銷和跳數(shù)信息是直接相關(guān)的。
圖4 6LoWPAN中單跳和兩跳傳輸?shù)膶嶋H吞吐量
我們使用Contiki平臺COOJA仿真工具中來做實驗,圖 5是在COOJA仿真器下的網(wǎng)絡(luò)拓?fù)鋱D。為了測試基于RSSI的RPL路由協(xié)議的性能,實驗中使用500個1032字節(jié)的IPv6 UDP數(shù)據(jù)包從節(jié)點5傳輸?shù)焦?jié)點1。RSSI_ETX在路徑1-4-2-5的數(shù)值為1.148,在路徑1-3-6-7-5中的數(shù)值為1.121。因此路徑1-3-6-7-5將被基于RSSI的IPv6路由協(xié)議選中。基于路徑1-3-6-7-5中最小的RSSI值得出合適的包長度應(yīng)為264字節(jié)。
圖5 COOJA仿真工具中的RPL拓?fù)鋱D
圖6中展示了本文提出的RSSI的路由協(xié)議的性能估計。我們分別在MTU(最小傳輸單元)為246字節(jié)和1032字節(jié)兩種環(huán)境進行測試,在原始的RPL選擇最小的ETX路徑和最長的IPv6數(shù)據(jù)包長。原始的RPL路由對數(shù)據(jù)包總的傳輸時間是39分29秒。而基于RSSI的路由協(xié)議則用時16分24秒,兩者總傳輸時延竟相差了13分鐘左右,測試結(jié)果表明,RSSI路由協(xié)議的性能遠(yuǎn)高于原始的RPL協(xié)議。
圖6 基于RSSI的路由協(xié)議在COOJA中的性能分析
圖7為我們選取示例中的拓?fù)浣Y(jié)構(gòu),將改進的基于RSSI的RPL路由協(xié)議寫入程序中。通過在6LoWPAN網(wǎng)絡(luò)中,部署30個節(jié)點,仿真的時間為設(shè)置為1個小時,觀察節(jié)點的拓?fù)浣⑦^程。包括路由負(fù)載、端到端平均時延等。對比RPL路由協(xié)議,基于RSSI的更加高效、快速。這是因為在好的鏈路上,數(shù)據(jù)包選擇傳輸?shù)膸茁矢?,所以鏈路更能夠做到?fù)載均衡。拓?fù)浣⑦^程如圖7所示。
圖7 RSSI-RPL在COOJA工具下的拓?fù)浣⑦^程
本文針對6LoWPAN中RSSI路由協(xié)議向下傳輸?shù)慕⑦^程,通過實驗分析了IPv6數(shù)據(jù)包長度對MAC層分片數(shù)量的影響。并運用Contiki 6LoWPAN工具,分析了在6LoWPAN網(wǎng)絡(luò)中實際的IPv6 UDP數(shù)據(jù)包的傳輸性能,傳輸延遲等。通過實驗結(jié)果,我們提出了一個改進的6LoWPAN網(wǎng)絡(luò)下基于RSSI的IPv6路由協(xié)議。從實驗中發(fā)現(xiàn)6LoWPAN性能與IPv6負(fù)載長度線性相關(guān),分析發(fā)現(xiàn)在大負(fù)載的IPv6網(wǎng)絡(luò)中,該方案數(shù)據(jù)傳輸效率高于原來的方案。下一步我們將逐步探索基于RSSI的路由機制在信道條件差的情況下的性能。同時下一步可以考慮將改進的6LoWPAN地址壓縮方案考慮進來,探索IPv6 UDP數(shù)據(jù)包長度對兩者的影響。同時希望加入更多的參考指標(biāo),例如6LoWPAN地址壓縮方案的復(fù)雜度分析,設(shè)備能量消耗分析等,進行綜合的評估,得出更為實用和高效的路由尋址策略和地址壓縮方法。