基于6LOWPAN的IPv6傳感器網(wǎng)絡報頭壓縮方案的設計與實現(xiàn)
3 功能測試及性能分析
3.1 功能測試
該系統(tǒng)中節(jié)點使用64位擴展地址作為底層的尋址模式,6LoWPAN網(wǎng)絡的內(nèi)部使用IPv6本地鏈路地址進行通信,在單跳情況下使用Sniffer無線嗅探儀捕捉到的壓縮前后數(shù)據(jù)包內(nèi)容如圖6所示。根據(jù)具體的IPv6報頭格式并按照上文提到的IPv6報頭壓縮方案將原40 B的IPv6報頭壓縮到1 B,壓縮前總數(shù)據(jù)包長度為85 B,壓縮后總數(shù)據(jù)包長度為46 B,壓縮效率為(85-46)/85=45.9%,對于多跳情況下,適配層會增加一個Mesh頭部,該頭部長度為17 B,因此對應于多跳情況下壓縮效率為[(85+17)-(46+17)]/(85+17)=38.2%?;谝陨鲜聦?,下文通過存儲開銷、網(wǎng)絡生存時間、丟包率、平均時延4個方面對報頭壓縮進行性能分析。
3.2 存儲開銷
節(jié)點的程序代碼存放在ATmega128的ROM中,大小為128 KB,數(shù)據(jù)空間為ATmega128的RAM,大小為4 KB。在把報頭壓縮開關打開和關閉的情況下,使用AVR Studio4工具分別對同一序進行編譯,軟件輸出結果如表1所示。本文引用地址:http://2s4d.com/article/161471.htm
由表1可知報頭壓縮使程序的代碼空間增加了1 742 B,只占節(jié)點ROM的1.32%,但是卻沒有增加額外的數(shù)據(jù)空間。AVR Studio 4工具給出的程序所使用的RAM大小只是程序中所使用的全局變量的大小,結果說明打開報頭壓縮選項并未增加全局變量的使用,經(jīng)計算報頭壓縮所需的局部變量不會超過20B。
3.3 網(wǎng)絡生存時間
網(wǎng)絡生存時間對于傳感器網(wǎng)絡是一個非常重要的性能參數(shù)。然而傳感器網(wǎng)絡大部分的能量均消耗在數(shù)據(jù)包的發(fā)送和處理器的指令處理上。一方面,報頭壓縮可以減少數(shù)據(jù)包的長度,節(jié)省單位數(shù)據(jù)包的發(fā)送能耗。另一方面,報頭壓縮會增加處理器額外的指令處理,增加單位數(shù)據(jù)包的發(fā)送能耗。為了驗證報頭壓縮是否能夠增加網(wǎng)絡的生存時間,做如下實驗:采用同一節(jié)點,使用9 V干點池供電,分別在報頭壓縮和不壓縮的情況下單跳與網(wǎng)關通信(鏈路質量很好,無其他無線設備干擾,發(fā)送功率均為1 mW),在服務器端記錄當電池能量耗盡時壓縮和不壓縮兩種情況下節(jié)點發(fā)送數(shù)據(jù)包的總個數(shù),實驗結果如表2所示。
由表2可見節(jié)點啟用報頭壓縮發(fā)送的數(shù)據(jù)包總數(shù)要大于關閉報頭壓縮的情況,顯然報頭壓縮可以有效的提高網(wǎng)絡生存時間。
3.4 丟包率
由于使用報頭壓縮會使節(jié)點發(fā)送的數(shù)據(jù)包長度變短,因此在相同的節(jié)點發(fā)包速率下會減小MAC層的碰撞概率,理論上會減少丟包的發(fā)生。為了驗證上述結論,就要盡可能地減少無線信道對丟包率的影響,實驗方案如下:選取10個傳感器節(jié)點與網(wǎng)關組成星型網(wǎng)路,通信距離均在1 m以內(nèi),發(fā)送功率均為1 mW。在不同的發(fā)包頻率下使節(jié)點發(fā)送100個數(shù)據(jù)包,在服務器統(tǒng)計總共收到的數(shù)據(jù)包個數(shù),計算網(wǎng)絡的整體丟包率。實驗分為2組,分別采用壓縮和不壓縮的方式進行數(shù)據(jù)包發(fā)送,結果如圖7所示。
由圖可見網(wǎng)絡的丟包率與節(jié)點發(fā)送數(shù)據(jù)包的頻率和長度有關,發(fā)送頻率越高、數(shù)據(jù)包越長,則網(wǎng)絡產(chǎn)生的信道沖突的可能性越大,丟包率也就越高。
3.5 平均時延
節(jié)點發(fā)送數(shù)據(jù)包的速率為250 Kb/s,采用壓縮方案單個數(shù)據(jù)包可以節(jié)省39 B,因此單個數(shù)據(jù)包的發(fā)送時間可以減少39×8/250=1.24 ms。當然報頭壓縮和解壓縮需要額外的處理時間,本節(jié)點ATmega128工作頻率為8 MHz,處理性能為8 MIPS,處理1 000條指令的時間也僅需125μs,因此綜合來講報頭壓縮可以有效的減少網(wǎng)絡時延,尤其是在大規(guī)模網(wǎng)絡部署的情況下。本文中采用Ping6命令對網(wǎng)絡時延進行測試,實驗分為2組分別對應壓縮和不壓縮的情況,每組實驗使用5個節(jié)點組成5跳網(wǎng)絡,在服務器端對每跳節(jié)點進行100次ICMP響應請求,記錄平均返回時間,實驗結果如圖8所示。
由圖可見網(wǎng)絡的平均延時基本與跳數(shù)為線性增加的關系,單跳情況下壓縮與不壓縮的網(wǎng)絡時延之差大概在2.5 ms左右。因為Ping命令測試的是往返時間,所以這與理論分析相吻合,隨著跳數(shù)的增加時延之差基本線性增長。
4 結語
本文設計并實現(xiàn)了一種IPv6報頭壓縮機制,理想情況下可以將IPv6報頭壓縮到1 B,在節(jié)點單跳和多跳通信的情況下壓縮效率分別為45.9%和38.2%。實驗結果表明,本文所設計的報頭壓縮方案可以在占用較小額外存儲空間的情況下,減小丟包率、延長網(wǎng)絡生存時間、降低網(wǎng)絡時延。由于對下一個報頭(UDP,TCP,ICMP)的壓縮并不會給壓縮效率帶來很高的收益,因此本文中并未討論下一個報頭的壓縮方案,后續(xù)工作中可以考慮增加對下一個報頭的壓縮支持。
評論