(泉州師范學(xué)院數(shù)學(xué)與計算機科學(xué)學(xué)院,福建 泉州362000)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)是由大量具有無線通信能力與計算能力的微型節(jié)點以自組織方式構(gòu)成的智能無線網(wǎng)絡(luò)。WSN在國防軍事、環(huán)境監(jiān)測、智能城市等許多重要領(lǐng)域都有廣闊的應(yīng)用前景。在實際應(yīng)用中,WSN一般不以孤立網(wǎng)絡(luò)的形式存在,而是與因特網(wǎng)(Internet)相連,以便實現(xiàn)遠(yuǎn)程的管理與訪問。隨著Internet逐步進入下一代IPv6互聯(lián)網(wǎng),WSN和IPv6網(wǎng)絡(luò)的結(jié)合成為當(dāng)前的熱點研究方向之一,在網(wǎng)絡(luò)互聯(lián)的可行性和互聯(lián)方式方面,文獻 [1]進行了比較全面的討論。IPv6最初設(shè)計并沒考慮嵌入式應(yīng)用,所以要想在WSN中使用IPv6的關(guān)鍵就是要對IPv6協(xié)議棧進行剪裁以適用于WSN。筆者在現(xiàn)有IPv6協(xié)議棧剪裁研究的基礎(chǔ)上提出了一種高效的IPv6報頭壓縮改進方案,并對改進方案的壓縮性能進行了分析?。
IEEE 802.15.4標(biāo)準(zhǔn)定義了一個短距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率的介質(zhì)訪問控制層(MAC)和物理層(PHY)規(guī)范,非常適合 WSN的應(yīng)用需求,因此被廣泛應(yīng)用于 WSN各種領(lǐng)域。IPv6標(biāo)準(zhǔn)報頭是40字節(jié),為了在IEEE 802.15.4上更加有效的傳輸IPv6數(shù)據(jù)包,剪裁IPv6協(xié)議棧的最有效方法就是壓縮IPv6報頭?。
IPv6標(biāo)準(zhǔn)報頭長度為40字節(jié),其結(jié)構(gòu)如表1所示。

表1 IPv6標(biāo)準(zhǔn)報頭結(jié)構(gòu)
針對標(biāo)準(zhǔn)IPv6標(biāo)準(zhǔn)報頭結(jié)構(gòu),6LoWPAN研究的報頭壓縮方案有2個:RFC4944和RFC6282。
1)RFC4944方案 RFC4944方案在最理想的情況下可將IPv6的標(biāo)準(zhǔn)首部壓縮到2字節(jié),即1字節(jié)首部壓縮字段HC1和1字節(jié)跳數(shù)限制,HC1字節(jié)編碼是標(biāo)識IPv6報頭中各字段的壓縮方式,IPv6報頭中未壓縮的內(nèi)容按順序存放在未壓縮字段中?。該方案的IPv6報頭壓縮關(guān)鍵就在HC1。如表1所示,IPv6標(biāo)準(zhǔn)報頭有8個字段,版本可以省略;由于在大多數(shù)WSN應(yīng)用場景中,不需要流量控制,所以傳輸類型和流標(biāo)簽也可以省略;負(fù)載長度可以通過MAC幀的長度域計算出來,因此也可壓縮;下一首部字段攜帶在HC1字節(jié)中;跳數(shù)限制字段不壓縮,存放在未壓縮字段中。剩下的是源地址和目的地址字段,RFC標(biāo)準(zhǔn)中規(guī)定IPv6地址采用無狀態(tài)配置方式時,地址由64位前綴和64位接口標(biāo)識符生成。IEEE 802.15.4定義2種尋址方式:64位擴展地址和16位短地址。每一個IEEE 802.15.4設(shè)備都分配一個EUI-64標(biāo)識符,用作64位擴展地址進行尋址,具有全球唯一性,因此通過該標(biāo)識符可以生成一個IPv6接口地址,實現(xiàn)IPv6地址的自動配置。16位短地址是在節(jié)點成功加入WSN網(wǎng)絡(luò)后,由節(jié)點所在網(wǎng)絡(luò)內(nèi)的協(xié)調(diào)者動態(tài)分配,只能保證在該網(wǎng)絡(luò)內(nèi)的唯一性,不能用作實現(xiàn)IPv6地址的自動配置。因此如果IPv6地址為本地鏈路地址,而且IEEE 802.15.4尋址模式為擴展地址,就可以將IPv6地址壓縮,否則就要將其放在未壓縮字段中[2]。針對以上討論,壓縮的HC1字節(jié)編碼如表2所示。
2)RFC6282方案 RFC6282方案是在RFC4944方案基礎(chǔ)上提出的改進方案。該方案在最理想的情況下還是可以將IPv6完整的報頭壓縮到2字節(jié),但是這2字節(jié)都是HC1字節(jié)編碼。該方案中針對RFC4944方案的一個重要改進就是把原來沒有壓縮的1字節(jié)跳數(shù)限制字段壓縮為2位,對其他壓縮位重新排列組合,增加部分主要是添加了支持IPv6區(qū)分服務(wù)、流標(biāo)簽和擴展報頭壓縮等。該方案的HC1字節(jié)編碼比較復(fù)雜,鑒于篇幅原因就不展開說明了。該方案在支持IPv6協(xié)議完整性和功能性上比較全面,但是缺點是太復(fù)雜,對于目前處理能力有限、能量受限、硬件資源匱乏的傳感器節(jié)點來說并不實用?。
因此,筆者結(jié)合RFC4944和RFC6282兩個方案的優(yōu)點,提出一個改進的IPv6協(xié)議棧剪裁方案。

表2 HC1字節(jié)具體編碼格式
改進方案是在RFC4944基礎(chǔ)上結(jié)合RFC6282的優(yōu)點提出,在最理想的情況下可將IPv6標(biāo)準(zhǔn)報頭壓縮到1字節(jié)。雖然RFC4944方案已經(jīng)相當(dāng)精簡,但是該壓縮方法仍然存在冗余。因為方案中對IPv6報頭的跳數(shù)限制字段并沒壓縮,而RFC6282方案把跳數(shù)限制字段壓成2bit,因為在實際應(yīng)用中,1、64和255這3種跳數(shù)限制值是最常用的,也就是說這3個值已可滿足大部分應(yīng)用需求。因此,改進方案把RFC4944方案中未壓縮的跳數(shù)限制字段壓縮成2bit,并調(diào)整HC1字節(jié)編碼的順序和含義,使IPv6報頭在理想情況下壓縮成1字節(jié)的HC1。
現(xiàn)在將跳數(shù)限制壓縮為2bit放在HC1中,如表3所示。RFC4944方案的HC1字節(jié)中前4bit標(biāo)識IPv6源地址和目的地址的壓縮狀態(tài),也有冗余,因為可根據(jù)上文的分析來判斷IPv6接口標(biāo)識符的壓縮狀態(tài),如果IEEE 802.15.4 尋址模式為64位擴展地址,IPv6接口標(biāo)識符直接壓縮,而若是16位短地址尋址模式,IPv6接口標(biāo)識符不壓縮,直接放在隨后的未壓縮字段中。因此HC1字節(jié)中只需2bit標(biāo)識IPv6源地址和目的地址前綴的壓縮狀態(tài)。另外RFC4944的HC1編碼最后一位是“標(biāo)識是否有下一個報頭壓縮(HC2)”,在改進方案中不需要HC2,所以該位也可省略。剩余的這一位在改進方案中用來標(biāo)識多播域,因為IPv6中最重要的 “鄰居發(fā)現(xiàn)協(xié)議”需要識別目的地址是否為多播地址,另外多播地址在路由方面有很重要的應(yīng)用,用一位來標(biāo)識目的地址的類別可節(jié)省后續(xù)很多計算資源。改進方案的HC1字節(jié)編碼按照IPv6報頭順序重新排序,具體編碼格式如表3所示。

表3 改進方案HC1字節(jié)具體編碼格式
改進方案實際是在壓縮IPv6之前加入HC1壓縮控制首部,針對不同應(yīng)用場景可以選擇不同的壓縮方案。當(dāng)2個節(jié)點為鄰居節(jié)點且跳數(shù)限制字段值為特殊值時,可以將40字節(jié)的IPv6頭部壓縮為1個字節(jié)。當(dāng)內(nèi)部節(jié)點和網(wǎng)關(guān)節(jié)點通信時,IPv6報頭最短可壓縮到3個字節(jié),即1個字節(jié)控制首部,2個字節(jié)節(jié)點地址。當(dāng)通信雙方為一個內(nèi)部節(jié)點和一個外部節(jié)點時,最好的情況是壓縮到4個字節(jié),即2個字節(jié)控制首部,2個字節(jié)節(jié)點地址。總之,在WSN內(nèi)進行傳輸?shù)拇蟛糠謹(jǐn)?shù)據(jù)都能符合壓縮方案的條件,而且都具有較高的壓縮比,因此,對于WSN內(nèi)全IPv6通信以及WSN同IPv6網(wǎng)絡(luò)直接進行通信,改進方案都是一個比較理想的選擇。
試驗采用的傳感器節(jié)點是一個在研環(huán)境監(jiān)測項目的研究成果,節(jié)點處理器為Atmega128,工作頻率為8MHz;射頻芯片為CC1100,采用3V供電;傳感器節(jié)點上有溫濕度傳感器。試驗使用5個傳感器節(jié)點和1個網(wǎng)關(guān)節(jié)點組成星形網(wǎng)絡(luò),5個節(jié)點和網(wǎng)關(guān)的距離均在20m以內(nèi),所有節(jié)點都是單跳到達網(wǎng)關(guān)的,另外用一臺PC機模擬IPv6網(wǎng)絡(luò)。
影響WSN性能有2個很重要的指標(biāo):能量和丟包率。能量可以通過網(wǎng)絡(luò)生存時間來體現(xiàn),因此,筆者主要通過網(wǎng)絡(luò)生存時間和丟包率2個指標(biāo)來測試改進方案在WSN中的性能。
1)網(wǎng)絡(luò)生存時間 WSN的能量大多消耗在數(shù)據(jù)傳輸和處理器指令處理上,剪裁方案的報頭壓縮可以縮短傳輸?shù)臄?shù)據(jù)報,降低數(shù)據(jù)傳輸?shù)哪芎模菆箢^壓縮會增加處理器指令,也就是會增加能耗,因此,試驗將驗證剪裁方案是否能增加網(wǎng)絡(luò)生存時間。試驗中5個節(jié)點數(shù)據(jù)發(fā)送速率均為250Kb/s,同時設(shè)定節(jié)點每隔10s采集一次溫濕度數(shù)據(jù)并發(fā)送給網(wǎng)關(guān)節(jié)點,最后由網(wǎng)關(guān)節(jié)點把數(shù)據(jù)轉(zhuǎn)發(fā)給PC機。試驗分2組,一組是報頭沒壓縮,一組是報頭有壓縮。實驗結(jié)果是網(wǎng)絡(luò)生存時間在報頭沒壓縮情況下為84h,而有壓縮的情況下達131h,使用改進方案壓縮報頭比不壓縮報頭的網(wǎng)絡(luò)生存時間提高了近56%,因此報頭壓縮在處理器處理增加的能耗和傳輸節(jié)約的能耗相比還是有不少差距,節(jié)約的能耗明顯更多。
2)丟包率 試驗使用8個節(jié)點采樣周期,即8個發(fā)送頻率(周期的倒數(shù)),每個節(jié)點在每個頻點發(fā)送2000個數(shù)據(jù)包,在PC端統(tǒng)計收到的數(shù)據(jù)包總數(shù),從而計算得出整個網(wǎng)絡(luò)的丟包率。試驗還是分成壓縮和沒有壓縮2組進行,試驗結(jié)果如圖1所示。
由圖1結(jié)果分析,網(wǎng)絡(luò)的丟包率和發(fā)送頻率有關(guān),發(fā)送頻率越高,數(shù)據(jù)包在網(wǎng)絡(luò)信道中產(chǎn)生沖突的概率越大,也就是丟包率越高;同時可以明顯看出同樣頻率發(fā)送數(shù)據(jù),沒有壓縮的情況下丟包率更高,所以數(shù)據(jù)包的長度越大,丟包率越高。

圖1 網(wǎng)絡(luò)丟包率統(tǒng)計比較圖
針對WSN中IPv6協(xié)議棧剪裁方案的不足,筆者提出了高效可行的改進方案。在理想情況下,改進方案可將IPv6報文首部壓縮為1個字節(jié)。試驗結(jié)果表明,采用改進方案可以有效延長整體網(wǎng)絡(luò)生存時間和減少丟包率。改進方案主要是針對網(wǎng)絡(luò)層的報文首部進行壓縮,后續(xù)研究可進一步研究運輸層的報文壓縮方案。另外,改進方案試驗沒有考慮WSN內(nèi)部路由的情況,后續(xù)研究中應(yīng)在有內(nèi)部路由,網(wǎng)絡(luò)規(guī)模更大的情況下進一步研究方案的適應(yīng)性和有效性。
[1]侯惠峰,劉湘雯,于宏毅,等 .無線傳感器網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)的互聯(lián)方式研究 [J].電信科學(xué),2006(6):56-62.
[2]苑樂,周華春,高德云,等 .基于6LoWPAN的IPv6傳感器網(wǎng)絡(luò)報頭壓縮方案的設(shè)計與實現(xiàn) [J].現(xiàn)代電子技術(shù),2011(17):75-81.