(泉州師范學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,福建 泉州362000)
無(wú)線(xiàn)傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)是由大量具有無(wú)線(xiàn)通信能力與計(jì)算能力的微型節(jié)點(diǎn)以自組織方式構(gòu)成的智能無(wú)線(xiàn)網(wǎng)絡(luò)。WSN在國(guó)防軍事、環(huán)境監(jiān)測(cè)、智能城市等許多重要領(lǐng)域都有廣闊的應(yīng)用前景。在實(shí)際應(yīng)用中,WSN一般不以孤立網(wǎng)絡(luò)的形式存在,而是與因特網(wǎng)(Internet)相連,以便實(shí)現(xiàn)遠(yuǎn)程的管理與訪問(wèn)。隨著Internet逐步進(jìn)入下一代IPv6互聯(lián)網(wǎng),WSN和IPv6網(wǎng)絡(luò)的結(jié)合成為當(dāng)前的熱點(diǎn)研究方向之一,在網(wǎng)絡(luò)互聯(lián)的可行性和互聯(lián)方式方面,文獻(xiàn) [1]進(jìn)行了比較全面的討論。IPv6最初設(shè)計(jì)并沒(méi)考慮嵌入式應(yīng)用,所以要想在WSN中使用IPv6的關(guān)鍵就是要對(duì)IPv6協(xié)議棧進(jìn)行剪裁以適用于WSN。筆者在現(xiàn)有IPv6協(xié)議棧剪裁研究的基礎(chǔ)上提出了一種高效的IPv6報(bào)頭壓縮改進(jìn)方案,并對(duì)改進(jìn)方案的壓縮性能進(jìn)行了分析?。
IEEE 802.15.4標(biāo)準(zhǔn)定義了一個(gè)短距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率的介質(zhì)訪問(wèn)控制層(MAC)和物理層(PHY)規(guī)范,非常適合 WSN的應(yīng)用需求,因此被廣泛應(yīng)用于 WSN各種領(lǐng)域。IPv6標(biāo)準(zhǔn)報(bào)頭是40字節(jié),為了在IEEE 802.15.4上更加有效的傳輸IPv6數(shù)據(jù)包,剪裁IPv6協(xié)議棧的最有效方法就是壓縮IPv6報(bào)頭?。
IPv6標(biāo)準(zhǔn)報(bào)頭長(zhǎng)度為40字節(jié),其結(jié)構(gòu)如表1所示。
表1 IPv6標(biāo)準(zhǔn)報(bào)頭結(jié)構(gòu)
針對(duì)標(biāo)準(zhǔn)IPv6標(biāo)準(zhǔn)報(bào)頭結(jié)構(gòu),6LoWPAN研究的報(bào)頭壓縮方案有2個(gè):RFC4944和RFC6282。
1)RFC4944方案 RFC4944方案在最理想的情況下可將IPv6的標(biāo)準(zhǔn)首部壓縮到2字節(jié),即1字節(jié)首部壓縮字段HC1和1字節(jié)跳數(shù)限制,HC1字節(jié)編碼是標(biāo)識(shí)IPv6報(bào)頭中各字段的壓縮方式,IPv6報(bào)頭中未壓縮的內(nèi)容按順序存放在未壓縮字段中?。該方案的IPv6報(bào)頭壓縮關(guān)鍵就在HC1。如表1所示,IPv6標(biāo)準(zhǔn)報(bào)頭有8個(gè)字段,版本可以省略;由于在大多數(shù)WSN應(yīng)用場(chǎng)景中,不需要流量控制,所以傳輸類(lèi)型和流標(biāo)簽也可以省略;負(fù)載長(zhǎng)度可以通過(guò)MAC幀的長(zhǎng)度域計(jì)算出來(lái),因此也可壓縮;下一首部字段攜帶在HC1字節(jié)中;跳數(shù)限制字段不壓縮,存放在未壓縮字段中。剩下的是源地址和目的地址字段,RFC標(biāo)準(zhǔn)中規(guī)定IPv6地址采用無(wú)狀態(tài)配置方式時(shí),地址由64位前綴和64位接口標(biāo)識(shí)符生成。IEEE 802.15.4定義2種尋址方式:64位擴(kuò)展地址和16位短地址。每一個(gè)IEEE 802.15.4設(shè)備都分配一個(gè)EUI-64標(biāo)識(shí)符,用作64位擴(kuò)展地址進(jìn)行尋址,具有全球唯一性,因此通過(guò)該標(biāo)識(shí)符可以生成一個(gè)IPv6接口地址,實(shí)現(xiàn)IPv6地址的自動(dòng)配置。16位短地址是在節(jié)點(diǎn)成功加入WSN網(wǎng)絡(luò)后,由節(jié)點(diǎn)所在網(wǎng)絡(luò)內(nèi)的協(xié)調(diào)者動(dòng)態(tài)分配,只能保證在該網(wǎng)絡(luò)內(nèi)的唯一性,不能用作實(shí)現(xiàn)IPv6地址的自動(dòng)配置。因此如果IPv6地址為本地鏈路地址,而且IEEE 802.15.4尋址模式為擴(kuò)展地址,就可以將IPv6地址壓縮,否則就要將其放在未壓縮字段中[2]。針對(duì)以上討論,壓縮的HC1字節(jié)編碼如表2所示。
2)RFC6282方案 RFC6282方案是在RFC4944方案基礎(chǔ)上提出的改進(jìn)方案。該方案在最理想的情況下還是可以將IPv6完整的報(bào)頭壓縮到2字節(jié),但是這2字節(jié)都是HC1字節(jié)編碼。該方案中針對(duì)RFC4944方案的一個(gè)重要改進(jìn)就是把原來(lái)沒(méi)有壓縮的1字節(jié)跳數(shù)限制字段壓縮為2位,對(duì)其他壓縮位重新排列組合,增加部分主要是添加了支持IPv6區(qū)分服務(wù)、流標(biāo)簽和擴(kuò)展報(bào)頭壓縮等。該方案的HC1字節(jié)編碼比較復(fù)雜,鑒于篇幅原因就不展開(kāi)說(shuō)明了。該方案在支持IPv6協(xié)議完整性和功能性上比較全面,但是缺點(diǎn)是太復(fù)雜,對(duì)于目前處理能力有限、能量受限、硬件資源匱乏的傳感器節(jié)點(diǎn)來(lái)說(shuō)并不實(shí)用?。
因此,筆者結(jié)合RFC4944和RFC6282兩個(gè)方案的優(yōu)點(diǎn),提出一個(gè)改進(jìn)的IPv6協(xié)議棧剪裁方案。
表2 HC1字節(jié)具體編碼格式
改進(jìn)方案是在RFC4944基礎(chǔ)上結(jié)合RFC6282的優(yōu)點(diǎn)提出,在最理想的情況下可將IPv6標(biāo)準(zhǔn)報(bào)頭壓縮到1字節(jié)。雖然RFC4944方案已經(jīng)相當(dāng)精簡(jiǎn),但是該壓縮方法仍然存在冗余。因?yàn)榉桨钢袑?duì)IPv6報(bào)頭的跳數(shù)限制字段并沒(méi)壓縮,而RFC6282方案把跳數(shù)限制字段壓成2bit,因?yàn)樵趯?shí)際應(yīng)用中,1、64和255這3種跳數(shù)限制值是最常用的,也就是說(shuō)這3個(gè)值已可滿(mǎn)足大部分應(yīng)用需求。因此,改進(jìn)方案把RFC4944方案中未壓縮的跳數(shù)限制字段壓縮成2bit,并調(diào)整HC1字節(jié)編碼的順序和含義,使IPv6報(bào)頭在理想情況下壓縮成1字節(jié)的HC1。
現(xiàn)在將跳數(shù)限制壓縮為2bit放在HC1中,如表3所示。RFC4944方案的HC1字節(jié)中前4bit標(biāo)識(shí)IPv6源地址和目的地址的壓縮狀態(tài),也有冗余,因?yàn)榭筛鶕?jù)上文的分析來(lái)判斷IPv6接口標(biāo)識(shí)符的壓縮狀態(tài),如果IEEE 802.15.4 尋址模式為64位擴(kuò)展地址,IPv6接口標(biāo)識(shí)符直接壓縮,而若是16位短地址尋址模式,IPv6接口標(biāo)識(shí)符不壓縮,直接放在隨后的未壓縮字段中。因此HC1字節(jié)中只需2bit標(biāo)識(shí)IPv6源地址和目的地址前綴的壓縮狀態(tài)。另外RFC4944的HC1編碼最后一位是“標(biāo)識(shí)是否有下一個(gè)報(bào)頭壓縮(HC2)”,在改進(jìn)方案中不需要HC2,所以該位也可省略。剩余的這一位在改進(jìn)方案中用來(lái)標(biāo)識(shí)多播域,因?yàn)镮Pv6中最重要的 “鄰居發(fā)現(xiàn)協(xié)議”需要識(shí)別目的地址是否為多播地址,另外多播地址在路由方面有很重要的應(yīng)用,用一位來(lái)標(biāo)識(shí)目的地址的類(lèi)別可節(jié)省后續(xù)很多計(jì)算資源。改進(jìn)方案的HC1字節(jié)編碼按照IPv6報(bào)頭順序重新排序,具體編碼格式如表3所示。
表3 改進(jìn)方案HC1字節(jié)具體編碼格式
改進(jìn)方案實(shí)際是在壓縮IPv6之前加入HC1壓縮控制首部,針對(duì)不同應(yīng)用場(chǎng)景可以選擇不同的壓縮方案。當(dāng)2個(gè)節(jié)點(diǎn)為鄰居節(jié)點(diǎn)且跳數(shù)限制字段值為特殊值時(shí),可以將40字節(jié)的IPv6頭部壓縮為1個(gè)字節(jié)。當(dāng)內(nèi)部節(jié)點(diǎn)和網(wǎng)關(guān)節(jié)點(diǎn)通信時(shí),IPv6報(bào)頭最短可壓縮到3個(gè)字節(jié),即1個(gè)字節(jié)控制首部,2個(gè)字節(jié)節(jié)點(diǎn)地址。當(dāng)通信雙方為一個(gè)內(nèi)部節(jié)點(diǎn)和一個(gè)外部節(jié)點(diǎn)時(shí),最好的情況是壓縮到4個(gè)字節(jié),即2個(gè)字節(jié)控制首部,2個(gè)字節(jié)節(jié)點(diǎn)地址??傊?,在WSN內(nèi)進(jìn)行傳輸?shù)拇蟛糠謹(jǐn)?shù)據(jù)都能符合壓縮方案的條件,而且都具有較高的壓縮比,因此,對(duì)于WSN內(nèi)全I(xiàn)Pv6通信以及WSN同IPv6網(wǎng)絡(luò)直接進(jìn)行通信,改進(jìn)方案都是一個(gè)比較理想的選擇。
試驗(yàn)采用的傳感器節(jié)點(diǎn)是一個(gè)在研環(huán)境監(jiān)測(cè)項(xiàng)目的研究成果,節(jié)點(diǎn)處理器為Atmega128,工作頻率為8MHz;射頻芯片為CC1100,采用3V供電;傳感器節(jié)點(diǎn)上有溫濕度傳感器。試驗(yàn)使用5個(gè)傳感器節(jié)點(diǎn)和1個(gè)網(wǎng)關(guān)節(jié)點(diǎn)組成星形網(wǎng)絡(luò),5個(gè)節(jié)點(diǎn)和網(wǎng)關(guān)的距離均在20m以?xún)?nèi),所有節(jié)點(diǎn)都是單跳到達(dá)網(wǎng)關(guān)的,另外用一臺(tái)PC機(jī)模擬IPv6網(wǎng)絡(luò)。
影響WSN性能有2個(gè)很重要的指標(biāo):能量和丟包率。能量可以通過(guò)網(wǎng)絡(luò)生存時(shí)間來(lái)體現(xiàn),因此,筆者主要通過(guò)網(wǎng)絡(luò)生存時(shí)間和丟包率2個(gè)指標(biāo)來(lái)測(cè)試改進(jìn)方案在WSN中的性能。
1)網(wǎng)絡(luò)生存時(shí)間 WSN的能量大多消耗在數(shù)據(jù)傳輸和處理器指令處理上,剪裁方案的報(bào)頭壓縮可以縮短傳輸?shù)臄?shù)據(jù)報(bào),降低數(shù)據(jù)傳輸?shù)哪芎?,但是?bào)頭壓縮會(huì)增加處理器指令,也就是會(huì)增加能耗,因此,試驗(yàn)將驗(yàn)證剪裁方案是否能增加網(wǎng)絡(luò)生存時(shí)間。試驗(yàn)中5個(gè)節(jié)點(diǎn)數(shù)據(jù)發(fā)送速率均為250Kb/s,同時(shí)設(shè)定節(jié)點(diǎn)每隔10s采集一次溫濕度數(shù)據(jù)并發(fā)送給網(wǎng)關(guān)節(jié)點(diǎn),最后由網(wǎng)關(guān)節(jié)點(diǎn)把數(shù)據(jù)轉(zhuǎn)發(fā)給PC機(jī)。試驗(yàn)分2組,一組是報(bào)頭沒(méi)壓縮,一組是報(bào)頭有壓縮。實(shí)驗(yàn)結(jié)果是網(wǎng)絡(luò)生存時(shí)間在報(bào)頭沒(méi)壓縮情況下為84h,而有壓縮的情況下達(dá)131h,使用改進(jìn)方案壓縮報(bào)頭比不壓縮報(bào)頭的網(wǎng)絡(luò)生存時(shí)間提高了近56%,因此報(bào)頭壓縮在處理器處理增加的能耗和傳輸節(jié)約的能耗相比還是有不少差距,節(jié)約的能耗明顯更多。
2)丟包率 試驗(yàn)使用8個(gè)節(jié)點(diǎn)采樣周期,即8個(gè)發(fā)送頻率(周期的倒數(shù)),每個(gè)節(jié)點(diǎn)在每個(gè)頻點(diǎn)發(fā)送2000個(gè)數(shù)據(jù)包,在PC端統(tǒng)計(jì)收到的數(shù)據(jù)包總數(shù),從而計(jì)算得出整個(gè)網(wǎng)絡(luò)的丟包率。試驗(yàn)還是分成壓縮和沒(méi)有壓縮2組進(jìn)行,試驗(yàn)結(jié)果如圖1所示。
由圖1結(jié)果分析,網(wǎng)絡(luò)的丟包率和發(fā)送頻率有關(guān),發(fā)送頻率越高,數(shù)據(jù)包在網(wǎng)絡(luò)信道中產(chǎn)生沖突的概率越大,也就是丟包率越高;同時(shí)可以明顯看出同樣頻率發(fā)送數(shù)據(jù),沒(méi)有壓縮的情況下丟包率更高,所以數(shù)據(jù)包的長(zhǎng)度越大,丟包率越高。
圖1 網(wǎng)絡(luò)丟包率統(tǒng)計(jì)比較圖
針對(duì)WSN中IPv6協(xié)議棧剪裁方案的不足,筆者提出了高效可行的改進(jìn)方案。在理想情況下,改進(jìn)方案可將IPv6報(bào)文首部壓縮為1個(gè)字節(jié)。試驗(yàn)結(jié)果表明,采用改進(jìn)方案可以有效延長(zhǎng)整體網(wǎng)絡(luò)生存時(shí)間和減少丟包率。改進(jìn)方案主要是針對(duì)網(wǎng)絡(luò)層的報(bào)文首部進(jìn)行壓縮,后續(xù)研究可進(jìn)一步研究運(yùn)輸層的報(bào)文壓縮方案。另外,改進(jìn)方案試驗(yàn)沒(méi)有考慮WSN內(nèi)部路由的情況,后續(xù)研究中應(yīng)在有內(nèi)部路由,網(wǎng)絡(luò)規(guī)模更大的情況下進(jìn)一步研究方案的適應(yīng)性和有效性。
[1]侯惠峰,劉湘雯,于宏毅,等 .無(wú)線(xiàn)傳感器網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)的互聯(lián)方式研究 [J].電信科學(xué),2006(6):56-62.
[2]苑樂(lè),周華春,高德云,等 .基于6LoWPAN的IPv6傳感器網(wǎng)絡(luò)報(bào)頭壓縮方案的設(shè)計(jì)與實(shí)現(xiàn) [J].現(xiàn)代電子技術(shù),2011(17):75-81.