葉大偉,沈 重
(海南大學(xué) 信息科學(xué)技術(shù)學(xué)院,海南 ???70228)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSNs)能夠?qū)崟r(shí)的檢測、感知、采集網(wǎng)絡(luò)分布區(qū)域內(nèi)的各種環(huán)境檢測對象,并對這些數(shù)據(jù)進(jìn)行處理,獲得詳細(xì)準(zhǔn)確的信息,傳送給需要這些信息的用戶[1]. WSNs 具有能量有限、帶寬有限、計(jì)算存儲能力有限、傳感器節(jié)點(diǎn)數(shù)量多且分布廣、網(wǎng)絡(luò)拓?fù)鋭討B(tài)性強(qiáng)、感知數(shù)據(jù)流大等特點(diǎn)[2].
數(shù)量眾多的傳感器節(jié)點(diǎn)采集數(shù)據(jù)后,直接將原始數(shù)據(jù)傳輸?shù)絊ink 節(jié)點(diǎn)是不可行的. 文獻(xiàn)[3]表明,在WSNs 中距離100 m 的節(jié)點(diǎn)傳輸1 bit 信息所消耗的能量約等于處理3 000 條指令所消耗的能量. 因此在傳輸數(shù)據(jù)之前對數(shù)據(jù)進(jìn)行壓縮是一種有效的減少傳輸能耗的方式. 利用小波變換對數(shù)據(jù)流具有良好的壓縮性能[4],筆者通過采用Haar 小波數(shù)據(jù)壓縮算法,基于OMNeT++設(shè)計(jì)出WSNs 系統(tǒng)的整體架構(gòu)、網(wǎng)絡(luò)協(xié)議,對采用的算法進(jìn)行仿真實(shí)現(xiàn),最后根據(jù)WSNs 的網(wǎng)絡(luò)特點(diǎn),對實(shí)驗(yàn)仿真過程中出現(xiàn)的因報(bào)文生成和傳輸問題進(jìn)行分析解決,提出了簇頭報(bào)文判別機(jī)制和改善的Sink 節(jié)點(diǎn)報(bào)文有限等待機(jī)制. 實(shí)驗(yàn)結(jié)果表明,OMNeT++能夠有效的仿真出WSNs 的數(shù)據(jù)壓縮特性,證明了該平臺在WSNs 仿真中系統(tǒng)的可靠性和結(jié)果的有效性,并給出了基于OMNeT++進(jìn)行性能參數(shù)仿真的思路和方法,為WSNs 的數(shù)據(jù)壓縮研究及其分析提供了參考.
在無線傳感器網(wǎng)絡(luò)中,單個(gè)傳感器節(jié)點(diǎn)收集到的數(shù)據(jù)在時(shí)間上可能是相關(guān)的,地理位置相鄰的傳感器節(jié)點(diǎn)采集的數(shù)據(jù)存在空間相關(guān)性. 利用小波變換具有多分辨分析的特性[5],去除數(shù)據(jù)中的冗余信息,達(dá)到數(shù)據(jù)壓縮的目的. 無線傳感器網(wǎng)絡(luò)的部署在空間上是不規(guī)則的,因而不能直接應(yīng)用傳統(tǒng)的小波變換,通過Haar 小波的分解與重構(gòu),減少數(shù)據(jù)流中存在的時(shí)-空相關(guān)性來減少冗余數(shù)據(jù)[5-6].
本文利用Haar 小波結(jié)構(gòu)簡單和變換復(fù)雜度低的優(yōu)點(diǎn),進(jìn)行無線傳感器數(shù)據(jù)壓縮算法的OMNeT++仿真,給出了具體的壓縮實(shí)現(xiàn)過程.
1.1 Haar 小波變換 Haar 小波的本質(zhì)是對相鄰的數(shù)據(jù)求均值和差值,或者說分解為低頻數(shù)據(jù)和高頻數(shù)據(jù). 設(shè)數(shù)據(jù)向量s,逐個(gè)計(jì)算相鄰數(shù)據(jù)的均值,得到數(shù)據(jù)個(gè)數(shù)為原向量一半的低分辨率新向量,稱為近似分量. 對于長度為2n的信號sk={sk,l≤l <2n}(k 表示變換級數(shù),k =0 表示原始信號). Haar 小波分解公式如下
則多級Haar 小波變換的分解過程和重構(gòu)過程如圖1 所示.
圖1 Haar 小波變換的分解過程和重構(gòu)過程圖
1.2 Haar 小波的數(shù)據(jù)壓縮實(shí)現(xiàn) 仿真系統(tǒng)中在簇頭節(jié)點(diǎn)進(jìn)行小波變換,從而實(shí)現(xiàn)對大量數(shù)據(jù)的壓縮處理. 簇頭接收簇內(nèi)節(jié)點(diǎn)的數(shù)據(jù)報(bào)文后放入緩存. 數(shù)據(jù)經(jīng)過小波變換后生成的小波系數(shù)的數(shù)據(jù)總量與原信號的數(shù)據(jù)相等,即小波變換的本身并不具有壓縮功能. 數(shù)據(jù)在經(jīng)過小波變換后將被劃分為2 個(gè)部分,一個(gè)是低頻系數(shù)稱為的近似分量,另一個(gè)是高頻系數(shù)又稱為細(xì)節(jié)分量,其中低頻系數(shù)匯聚了原始數(shù)據(jù)的絕大部分能量. 根據(jù)小波變換的性質(zhì),將變換后的小波系數(shù)進(jìn)行取閾值、量化和編碼,即可達(dá)到壓縮數(shù)據(jù)的目的. 一般而言,小波數(shù)據(jù)壓縮步驟如下
步驟1 傳感器節(jié)點(diǎn)采集數(shù)據(jù)sk;
步驟2 將數(shù)據(jù)發(fā)送給簇頭節(jié)點(diǎn);
步驟3 在簇頭節(jié)點(diǎn)對原始采集數(shù)據(jù)進(jìn)行Haar 小波分解,得到小波分解系數(shù){ωi};
步驟4 根據(jù)采用硬閾值法,大于或等于該閾值λ 的小波系數(shù)則被保留,小于該閾值的小波系數(shù)則設(shè)置為得到小波估計(jì)系數(shù)
步驟6 設(shè)M=2n,則ω 的量化步長
步驟8 利用游程編碼方法對量化值進(jìn)行編碼.
基于WSNs 自身的特點(diǎn),高效準(zhǔn)確的仿真工具對推動WSNs 節(jié)能發(fā)展作用很大[7-8]. 盡管目前在各種成熟的網(wǎng)絡(luò)仿真平臺,如NS2,OPNET,GloMoSim 和QualNet,但WSNs 的特性使得這些仿真平臺具有某些使用的局限性[9-10].
OMNeT++(Objective Modular Network TestBed in C++)是一款面向?qū)ο蟮碾x散時(shí)間網(wǎng)絡(luò)模擬器,采用面向組件的設(shè)計(jì)模式,避免調(diào)用不必要的模塊,降低系統(tǒng)的內(nèi)存占用率[11]. OMNeT ++支持腳本配置,在不必修改源代碼和不重新編譯的情況下,通過參數(shù)設(shè)置對不同的環(huán)境的網(wǎng)絡(luò)模型進(jìn)行仿真[12]. 為了進(jìn)一步提高仿真性能,本系統(tǒng)使用一個(gè)在OMNeT ++ 平臺基礎(chǔ)上開發(fā)的無線及移動框架組件(Mobility Framework,MF),并使用Cmd-env 提供的時(shí)間記錄器對仿真過程中的時(shí)間進(jìn)行跟蹤記錄.
無線傳感器網(wǎng)絡(luò)模擬系統(tǒng)(虛擬傳感器網(wǎng)絡(luò),VWSN)的整體設(shè)計(jì)框架,主要包含協(xié)調(diào)模塊、算法管理模塊、部署模塊、節(jié)點(diǎn)構(gòu)造器和基礎(chǔ)類庫5 個(gè)基礎(chǔ)模塊.
2.1 基于數(shù)據(jù)壓縮的VWSN 網(wǎng)絡(luò)協(xié)議設(shè)計(jì) 無線及移動框架組件下無線傳感器網(wǎng)絡(luò)協(xié)議主要包括數(shù)據(jù)報(bào)文格式、報(bào)文生成和傳輸方法. 協(xié)議棧由上至下可以分為APP,NET 和NIC 層,其中NIC 層包括MAC層和PHY 層,總體架構(gòu)如圖2 所示.
圖2 網(wǎng)絡(luò)協(xié)議整體架構(gòu)圖
整體基于VWSN 數(shù)據(jù)壓縮算法的網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)介紹如下:Initialize()(初始化),handleLowerMsg()(處理下層信息),handleUpperMsg()(處理上層消息),sendDown()(向下發(fā)送),sendUp()(向上發(fā)送)函數(shù)由OMNeT++封裝提供,為各層所共享. 其中APP 層包含上層小波壓縮算法模塊,壓縮算法包括數(shù)據(jù)源模塊、數(shù)據(jù)匯聚模塊、小波變換和游程編碼模塊. generatePacket()用于產(chǎn)生、抽取樣本數(shù)據(jù). 在NET 中構(gòu)建成簇網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu). 路由表模塊則采用基于Dijkstra 算法的跳數(shù)最小權(quán)重路由算法,主要包括router()和findNextHop()2 種方法,其中router 處理數(shù)據(jù)報(bào)文否需要轉(zhuǎn)發(fā),findNextHop()則負(fù)責(zé)為數(shù)據(jù)報(bào)文選擇下一跳路由. MAC 層采用異步通信協(xié)議[13],包括時(shí)鐘調(diào)度的handleSelfMsg()和Pop()(緩存數(shù)據(jù)發(fā)送)、sleep()(轉(zhuǎn)為睡眠狀態(tài))、Queue()(數(shù)據(jù)存儲)和bkQueue()(備份數(shù)據(jù)報(bào)文緩存)、ACK()(ACK 信息處理)等. 底層數(shù)據(jù)收發(fā)信息及數(shù)據(jù)校驗(yàn)功能,主要由Send()(數(shù)據(jù)發(fā)送)和Receive()(數(shù)據(jù)接收)模塊實(shí)現(xiàn).
2.1.1 網(wǎng)絡(luò)協(xié)議中報(bào)文生成與傳輸 在VWSN 系統(tǒng)中,節(jié)點(diǎn)時(shí)鐘調(diào)度不定期生成數(shù)據(jù)報(bào)文. 數(shù)據(jù)報(bào)文分為數(shù)據(jù)域和報(bào)頭,其中報(bào)頭包括數(shù)據(jù)報(bào)文的源地址、目的地址、包序列號和時(shí)間戳等相關(guān)信息. 由于數(shù)據(jù)報(bào)文傳輸由網(wǎng)絡(luò)層負(fù)責(zé),采用在文獻(xiàn)[14]中的網(wǎng)絡(luò)成簇協(xié)議. 對于成簇算法,簇內(nèi)節(jié)點(diǎn)依據(jù)最小權(quán)重路由算法中轉(zhuǎn)至簇頭節(jié)點(diǎn),簇頭處理數(shù)據(jù)后再將數(shù)據(jù)報(bào)文采用相同的路由算法發(fā)往Sink 節(jié)點(diǎn). 此時(shí),為了防止簇頭對數(shù)據(jù)報(bào)文進(jìn)行二次壓縮處理,在數(shù)據(jù)報(bào)文路由中添加判定.
數(shù)據(jù)報(bào)文經(jīng)過節(jié)點(diǎn)單跳到簇頭后,簇頭根據(jù)數(shù)據(jù)報(bào)文源地址信息判斷該包是否為簇內(nèi)節(jié)點(diǎn)產(chǎn)生:
a)是,發(fā)送APP 層進(jìn)行數(shù)據(jù)壓縮.
b)否,該包是一個(gè)需多跳至Sink 點(diǎn)的中轉(zhuǎn)路由包.
本文算法中節(jié)點(diǎn)至簇頭采用平面路由協(xié)議,即系統(tǒng)初始化時(shí)為每一個(gè)節(jié)點(diǎn)確定一條靜態(tài)路由至Sink節(jié)點(diǎn). 雖然靜態(tài)路由不能較好地適應(yīng)網(wǎng)絡(luò),但可以從一定程度上降低網(wǎng)絡(luò)非數(shù)據(jù)通信能耗. 數(shù)據(jù)報(bào)文生成如圖3 所示.
圖3 數(shù)據(jù)報(bào)文生成示意圖
2.1.2 網(wǎng)絡(luò)協(xié)議中Sink 節(jié)點(diǎn)報(bào)文等待機(jī)制 在設(shè)計(jì)WSNs 仿真時(shí),無線傳感器網(wǎng)絡(luò)存在一定的報(bào)文丟失概率,Sink 節(jié)點(diǎn)不知道何時(shí)能接收到期待的數(shù)據(jù)報(bào)文,因此在具體實(shí)現(xiàn)仿真架構(gòu)的模型時(shí),筆者提出了一種等待機(jī)制. Sink 節(jié)點(diǎn)接收到數(shù)據(jù)報(bào)文后,根據(jù)數(shù)據(jù)報(bào)文的地址分類放入相應(yīng)的緩存中,并將該數(shù)據(jù)報(bào)文的時(shí)間戳設(shè)定為當(dāng)前的系統(tǒng)時(shí)間,同時(shí)Sink 節(jié)點(diǎn)維護(hù)一個(gè)周期性檢測信號,如果滿足以下條件,則立即調(diào)用解碼函數(shù)
1)Sink 節(jié)點(diǎn)接收全一個(gè)系列報(bào)文;
2)來自一個(gè)系列報(bào)文的數(shù)據(jù)量超過該報(bào)文總數(shù)的一半.
通過采用等待機(jī)制,可以有效地避免因丟包引起的Sink 節(jié)點(diǎn)無限等待解碼,提高了系統(tǒng)的穩(wěn)定性和數(shù)據(jù)解碼的準(zhǔn)確性.
2.4 性能統(tǒng)計(jì) 模擬系統(tǒng)在執(zhí)行任務(wù)過程中通過后臺數(shù)據(jù)庫對模擬結(jié)果進(jìn)行記錄,并依據(jù)該記錄對小波壓縮算法的性能進(jìn)行評估. 本文將從能耗、壓縮比和均方差3 個(gè)性能指標(biāo)來敘述系統(tǒng)的性能統(tǒng)計(jì)與結(jié)果分析.
1)能耗 將節(jié)點(diǎn)發(fā)送數(shù)據(jù)報(bào)文、接收報(bào)文、數(shù)據(jù)處理看做一個(gè)個(gè)事件,并為每一個(gè)事件設(shè)置相應(yīng)的能量損耗. 每一個(gè)節(jié)點(diǎn)初始化設(shè)置一個(gè)能量值,采用一階無線模型[15]進(jìn)行網(wǎng)絡(luò)性能分析,此模型中傳送距離D 的k 比特?cái)?shù)據(jù)能耗方程表示如下.
傳輸能耗ETx可以表示為
接收能耗ERx可以表示為
數(shù)據(jù)處理能耗Ep可以表示成
其中,N 是完成計(jì)算花費(fèi)的時(shí)鐘周期的數(shù)目,Vdd是CPU 的工作電壓,C 每個(gè)時(shí)鐘周期所轉(zhuǎn)換的數(shù)據(jù)量,C的大小與CPU 有關(guān),本文采用StrongARM SA-1100 芯片,取C=0.67 nF.
2)壓縮比 設(shè)簇頭緩存內(nèi)參與小波變換的數(shù)據(jù)報(bào)文總數(shù)是Stotal,編碼后重新封裝的序列數(shù)據(jù)報(bào)文數(shù)量為SC,則壓縮比可以由以下公式得到
壓縮比越高,網(wǎng)絡(luò)內(nèi)數(shù)據(jù)冗余度就越低,參與網(wǎng)絡(luò)通信的數(shù)量就越少.
3)均方差 由于仿真系統(tǒng)直接涉及的傳感器數(shù)據(jù)報(bào)文在傳輸過程中存在丟包因素,因此數(shù)據(jù)還原存在誤差,即為均方差(Mean Square Error,MSE).
MSE 代表著數(shù)據(jù)還原的平均精度,可以表示為
其中,n 為數(shù)據(jù)總量,si為第i 個(gè)原始數(shù)據(jù),sri 為相應(yīng)的接收數(shù)據(jù).
首先導(dǎo)入Berkele-Intel 聯(lián)合研究實(shí)驗(yàn)室采集的真實(shí)溫度數(shù)據(jù),基于OMNeT ++平臺對WSNs 數(shù)據(jù)壓縮算法進(jìn)行實(shí)驗(yàn)仿真. 在實(shí)驗(yàn)中,無線傳感器仿真網(wǎng)絡(luò)參數(shù)設(shè)置如表1 所示. 此外為了更好的分析Haar小波算法在WSNs 中數(shù)據(jù)壓縮的有效性,還增加了Huffman 編碼來對比壓縮中的參數(shù)性能.
隨著采集數(shù)據(jù)的上升,處理和傳輸?shù)臄?shù)據(jù)報(bào)文會增加,同時(shí)節(jié)點(diǎn)平均能耗會相應(yīng)增加,從圖4 中可以得出,對比于未采用數(shù)據(jù)壓縮方式,Huffman 算法對數(shù)據(jù)進(jìn)行了壓縮,能耗會較為減少. 而采用Haar 小波變換壓縮數(shù)據(jù)后,節(jié)點(diǎn)平均能耗較Huffman 算法有更明顯下降,平均下降了0.23 J 的能量值. 同時(shí)壓縮比對比如圖5 所示,Haar 小波變換比Huffman 算法平均高出10 個(gè)百分點(diǎn),較好的降低了數(shù)據(jù)冗余度,更為有效的壓縮數(shù)據(jù).
在傳輸實(shí)驗(yàn)數(shù)據(jù)過程中,數(shù)據(jù)報(bào)文的丟失則可造成Sink 節(jié)點(diǎn)因?yàn)闊o法接受全部數(shù)據(jù)報(bào)文而陷入無限等待狀態(tài),以致解碼函數(shù)調(diào)用停頓,額外增加MSE 的值,同時(shí)會影響獲取數(shù)據(jù)的準(zhǔn)確性,進(jìn)而影響傳感器網(wǎng)絡(luò)的有效性. 采用了改進(jìn)的有限等待機(jī)制,降低了數(shù)據(jù)報(bào)文的丟包率(如圖6 所示),在有限的等待機(jī)制下,MSE 保持較低的值,平均降低了3.75 個(gè)百分點(diǎn).
圖4 Haar 小波變換與Huffman 能耗對比圖
圖5 Haar 小波變換與Huffman 壓縮比圖
圖6 MSE 效果對比圖
本文將Haar 小波變換的數(shù)據(jù)壓縮算法應(yīng)用于無線傳感器網(wǎng)絡(luò),并設(shè)計(jì)出基于OMNeT++仿真軟件的整體網(wǎng)絡(luò)架構(gòu). 對于仿真設(shè)計(jì)中的一些存在的問題(如整個(gè)網(wǎng)絡(luò)各層協(xié)議的設(shè)計(jì)、報(bào)文生成與傳輸方式、Sink 節(jié)點(diǎn)接收數(shù)據(jù)包等待機(jī)制等)提出了詳細(xì)的解決方案及框架圖. 通過仿真結(jié)果分析,Haar 小波變化的數(shù)據(jù)壓縮算法能較好的減少系統(tǒng)能耗,且提出的Sink 節(jié)點(diǎn)報(bào)文等待機(jī)制,能更好的較低網(wǎng)絡(luò)丟包率和均方差,延長網(wǎng)絡(luò)整體的生存周期.
[1]李建中,高宏.無線傳感器網(wǎng)絡(luò)的研究進(jìn)展[J].計(jì)算機(jī)研究與發(fā)展,2008,45(1):1 -15.
[2]范祥輝,李士寧,杜鵬雷,等. WSN 中一種自適應(yīng)無損數(shù)據(jù)壓縮機(jī)制[J].計(jì)算機(jī)測量與控制,2010,18(2):463 -465.
[3]POTTIE J,KAISER W J. Wireless integrated network sensors[J]. Communications of the ACM,2000,43(5):51 -58.
[4]周四望,林亞平,葉松濤. 傳感器網(wǎng)絡(luò)中一種存儲有效的小波漸進(jìn)數(shù)據(jù)壓縮算法[J]. 計(jì)算機(jī)研究與發(fā)展2009,46(12):2055 -2092.
[5]WAGNER R,HYEOKHO C,BARANIUK R,et al Distributed wavelet transform for irregular sensor network girds:proceedings of the 13th Workshop on Statistical Signal Processing(SSP),Bordeaux,July 17 -20,2005[C].[S.l.]:IEEE,2005.
[6]張建明,林亞平,周四望,等. 傳感器網(wǎng)絡(luò)中誤差有界的小波數(shù)據(jù)壓縮算法[J].軟件學(xué)報(bào),2010,21(6):1364 -1377.
[7]SHEN Chong ,HARTE S,POPOVICI E,et al.Automated protocol selection for energy efficient WSN applications[J].IET Electronics Letters,2009,45(21):1098 -1099.
[8]SHEN Chong,HARTE S,O’FLYNN B,et al.Energy-aware dynamic route management for THAWS[J]. Springer Lecture Notes on ICST,2010,24:174 -188.
[9]王杉,魏急波,莊釗文. 基于GloMoSim 的移動自組網(wǎng)路由仿真[J].電訊技術(shù),2006(5):105 -108.
[10]金偉,劉方愛,王曉潔. 基于NS 的AdHoc 網(wǎng)絡(luò)路由協(xié)議仿真研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2010,20(1):63 -66.
[11]石為人,黃河,鮮曉東,等. OMNeT++與NS2 在無線傳感器網(wǎng)絡(luò)仿真中的比較研究[J].計(jì)算機(jī)科學(xué),2008,35(10):53 -57.
[12]CHAMBERLAIN T.Learning OMNeT++ [EB/OL]. [2014 -01 -10].http:∥omnetpp.org.
[13]馬濤,單洪,陳娟.異構(gòu)無線傳感器網(wǎng)絡(luò)的基礎(chǔ)層MAC 協(xié)議設(shè)計(jì)[J].計(jì)算機(jī)工程,2013,39(7):137 -141.
[14]高騰.能量高效的無線傳感器網(wǎng)絡(luò)分簇路由協(xié)議研究[D].大連:大連理工大學(xué),2011.
[15]WANG A,CHANDRAKSAN A. Energy-efficient dsps forwireless sensor networks [J]. IEEE Signal Processing Magazine,2002,19(4):68 -78.