史培中
摘 要:文章針對(duì)低功耗WSN的多跳廣播問題,擺脫異步睡眠調(diào)度下利用單播實(shí)現(xiàn)廣播的轉(zhuǎn)發(fā)模式,給出基于TinyOS的低功耗WSN廣播協(xié)議的設(shè)計(jì),包括低功耗WSN廣播主干構(gòu)建、廣播轉(zhuǎn)發(fā)條件判定、廣播的時(shí)延保障和基于睡眠調(diào)度可調(diào)的廣播優(yōu)化。該協(xié)議的各組件可通過連接的方式應(yīng)用于現(xiàn)有協(xié)議的集成或開發(fā),也可用于廣播支持的研究,比如低功耗WSN的網(wǎng)絡(luò)配置控制信息廣播、低功耗WSN的事件通知和低功耗WSN的密鑰管理與分發(fā)等。
關(guān)鍵詞:無線傳感器網(wǎng)絡(luò);低功耗;TinyOS;廣播
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)作為新型無線網(wǎng)絡(luò),是當(dāng)前國際上非常關(guān)注的、一種多學(xué)科交叉技術(shù),具有相當(dāng)廣泛的應(yīng)用前景[1]。在能量受限制的無線傳感器網(wǎng)絡(luò)中,為了盡量延長網(wǎng)絡(luò)的生命周期,往往引入睡眠調(diào)節(jié)的節(jié)能機(jī)制[2],即低功耗WSN。該網(wǎng)絡(luò)中節(jié)點(diǎn)周期性地進(jìn)行監(jiān)聽和睡眠狀態(tài),發(fā)送節(jié)點(diǎn)需等待接收節(jié)點(diǎn)喚醒后進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā),節(jié)點(diǎn)之間的連接呈現(xiàn)間歇性特征。因此,該節(jié)能機(jī)制對(duì)數(shù)據(jù)傳輸造成不可忽略的影響,如單次廣播可能會(huì)由于某些節(jié)點(diǎn)處于睡眠狀態(tài)而接收失敗,無法保障廣播的覆蓋率。
1 低功耗WSN廣播協(xié)議設(shè)計(jì)的必要性
廣播是無線傳感器網(wǎng)絡(luò)中的一項(xiàng)重要服務(wù),特別是對(duì)于代碼更新、遠(yuǎn)程網(wǎng)絡(luò)配置和路徑發(fā)現(xiàn)等起到關(guān)鍵的作用。然而,無線信道的廣播特性不能被很好地利用,導(dǎo)致已有的廣播優(yōu)化算法不能保證廣播的覆蓋性。根據(jù)節(jié)點(diǎn)間睡眠調(diào)度時(shí)間是否需要同步,可分為同步和異步兩種調(diào)度方式。相比與同步方式,異步睡眠調(diào)度節(jié)能機(jī)制開銷非常小,靈活性高而且操作非常方便,能夠有效地減少能量的消耗,非常適合在動(dòng)態(tài)變化的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中使用,并且在低流量網(wǎng)絡(luò)中能展現(xiàn)其能效性優(yōu)勢(shì)。
已有的相關(guān)廣播協(xié)議普遍采用仿真工具進(jìn)行測(cè)試,在真實(shí)環(huán)境中的性能有待于進(jìn)一步驗(yàn)證。作為一個(gè)面向WSN應(yīng)用的實(shí)用性協(xié)議,它必須能夠很好地被集成于現(xiàn)有的網(wǎng)絡(luò)協(xié)議框架中。因此,為了更好地滿足實(shí)際應(yīng)用的需求,利用了加州大學(xué)伯克利分校為嵌入式無線傳感器網(wǎng)絡(luò)設(shè)計(jì)開發(fā)的開源系統(tǒng)TinyOS[3-4],采用基于組件的MAC協(xié)議體系結(jié)構(gòu)來完成協(xié)議的設(shè)計(jì),方便開發(fā)者快速將其集成于所需要的MAC協(xié)議中,滿足特定應(yīng)用具體需求。
2 低功耗WSN廣播協(xié)議設(shè)計(jì)
2.1 廣播主干的構(gòu)建
為了減少整個(gè)網(wǎng)絡(luò)中多跳廣播的廣播次數(shù)、避免冗余傳輸和節(jié)約能耗,一種最行之有效的方法就是盡可能選擇很少的轉(zhuǎn)發(fā)節(jié)點(diǎn)來承擔(dān)廣播轉(zhuǎn)發(fā)任務(wù),避免由于通常所采用的盲目泛洪(Blind Flooding)引起的廣播風(fēng)暴問題(Broadcast Storm)。已有的方法是將該類問題歸約為NP-Complete的最小連通支配集(Minimum Connecting Dominating Set,MCDS)問題。然而,靜態(tài)的MCDS不適用于間歇性連接的低功耗WSN的廣播主干構(gòu)建。本文采用SHI等[5]提出的分布式廣播主干構(gòu)造算,其主要思想是:網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)從鄰居節(jié)點(diǎn)中選擇節(jié)點(diǎn)度最大的節(jié)點(diǎn)作為父節(jié)點(diǎn),該父節(jié)點(diǎn)必須是已經(jīng)完成其父節(jié)點(diǎn)選擇的節(jié)點(diǎn)。為了構(gòu)造網(wǎng)絡(luò)的廣播主干,網(wǎng)絡(luò)初時(shí)化階段中的所有節(jié)點(diǎn)保持喚醒狀態(tài),并仍然在喚醒計(jì)時(shí)器過期時(shí)發(fā)送一個(gè)喚醒信標(biāo)報(bào)文,用于通知鄰居節(jié)點(diǎn)。
2.2 廣播轉(zhuǎn)發(fā)條件的判定
針對(duì)低功耗WSN的多跳廣播問題,相關(guān)研究采用單播的轉(zhuǎn)發(fā)策略。該廣播機(jī)制本質(zhì)上是以若干次的重復(fù)單播轉(zhuǎn)發(fā)為代價(jià),來保證間隔性喚醒的節(jié)點(diǎn)廣播接收。但對(duì)于大規(guī)模的低功耗WSN而言,這種單播的替代方案并不能很好地減少廣播次數(shù),將直接導(dǎo)致廣播干擾和碰撞,甚至廣播風(fēng)暴問題。本文采用延遲廣播轉(zhuǎn)發(fā)策略[5],其廣播轉(zhuǎn)發(fā)判定條件的可表示為:
(1)
(2)
其中,T(k)表示此次廣播轉(zhuǎn)發(fā)過程中,自第k-1個(gè)鄰居節(jié)點(diǎn)喚醒后,估計(jì)第k個(gè)鄰居節(jié)點(diǎn)喚醒的平均時(shí)間;Tw(k)表示等待第k個(gè)鄰居節(jié)點(diǎn)喚醒的實(shí)際等待時(shí)間;Ptx和Pidle分別表示節(jié)點(diǎn)處于傳輸狀態(tài)和空閑監(jiān)聽狀態(tài)的單位時(shí)間能耗;Ts表示節(jié)點(diǎn)的睡眠調(diào)度時(shí)間間隔;k表示此次延遲廣播轉(zhuǎn)發(fā)中已經(jīng)喚醒的節(jié)點(diǎn)數(shù)量;Tb和Tp分別表示喚醒信標(biāo)報(bào)文和短前導(dǎo)報(bào)文的傳輸時(shí)間;α(α≥1)表示等待時(shí)間ΔT(k+1)的收益比,使得廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)判定此次延遲廣播轉(zhuǎn)發(fā)是值得的。當(dāng)α值設(shè)置足夠大時(shí),該延遲廣播轉(zhuǎn)發(fā)策略將退化為單播轉(zhuǎn)發(fā)模式。從式(1)和(2)給出的延遲廣播轉(zhuǎn)發(fā)策略的判定條件主要與5個(gè)因素相關(guān):從廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)接收到廣播報(bào)文后的總活躍時(shí)間Ta(a);廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)的孩子節(jié)點(diǎn)數(shù)量|CN(ni)|;已經(jīng)處于喚醒狀態(tài)的孩子節(jié)點(diǎn)數(shù)量Nw;已經(jīng)處于喚醒狀態(tài)等待該廣播報(bào)文p的節(jié)點(diǎn)數(shù)量;廣播報(bào)文的傳輸時(shí)間T0。
2.3 廣播時(shí)延的保障
面向QoS需求的低功耗WSN,時(shí)延作為網(wǎng)絡(luò)性能的性能指標(biāo)之一,要求廣播報(bào)文在設(shè)定的時(shí)間內(nèi)廣播到整個(gè)網(wǎng)絡(luò)。對(duì)于廣播主干任意兩點(diǎn)節(jié)點(diǎn)ni和節(jié)點(diǎn)nj之間可容忍的時(shí)延Tdelay(ni,nj)可以利用廣播報(bào)文的剩余的TTL值來估計(jì):
(3)
其中,TTL(p)表示廣播報(bào)文p的剩余TTL值;hb(nj)表示通過廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)nj離最遠(yuǎn)的葉子結(jié)點(diǎn)的廣播轉(zhuǎn)發(fā)跳數(shù)。因此,廣播報(bào)文在QoS時(shí)延約束的可容忍時(shí)延Tdelay(ni,nj)下,式(1)轉(zhuǎn)化為廣播時(shí)延保障的延遲廣播轉(zhuǎn)發(fā)判定條件:
(4)
其中,Test表示估計(jì)的傳輸時(shí)間,且Test=Ta(k)+ΔT(k+1)+T0。第一種情況表示廣播轉(zhuǎn)發(fā)等待時(shí)間ΔT(k+1)能夠被節(jié)點(diǎn)ni和節(jié)點(diǎn)nj之間的時(shí)延約束Tdelay(ni,nj)所容忍。第二種情況則表示節(jié)點(diǎn)ni無法容忍等待時(shí)間ΔT(k+1),將立刻執(zhí)行廣播轉(zhuǎn)發(fā)。
2.4 基于睡眠調(diào)度可調(diào)的廣播優(yōu)化
上述廣播轉(zhuǎn)發(fā)策略基于節(jié)點(diǎn)睡眠調(diào)度固定且不可調(diào)的情況下,根據(jù)2.2節(jié)中式(1)和(2)廣播轉(zhuǎn)發(fā)判定條件或2.3節(jié)中式(4)廣播時(shí)延保障的廣播轉(zhuǎn)發(fā)判定條件實(shí)現(xiàn)廣播轉(zhuǎn)發(fā)。然而,如果當(dāng)節(jié)點(diǎn)的睡眠調(diào)可調(diào)(這里的可調(diào)指的是節(jié)點(diǎn)的睡眠調(diào)度時(shí)間間隔Ts不變,通過調(diào)整節(jié)點(diǎn)之間的喚醒間隔和喚醒順序,使節(jié)點(diǎn)之間的喚醒保持某種同步的狀態(tài)),可使式(1)、(2)和式(4)的判定條件盡可能被滿足,則廣播代價(jià)隨之減少,實(shí)現(xiàn)廣播轉(zhuǎn)發(fā)策略進(jìn)一步得到優(yōu)化。本文采用先前提出的基于睡眠調(diào)度可調(diào)的分布式準(zhǔn)同步廣播算法[6],實(shí)現(xiàn)廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)和其接收節(jié)點(diǎn)之間的自適應(yīng)睡眠調(diào)度調(diào)整,包括早睡節(jié)點(diǎn)處理、晚醒節(jié)點(diǎn)處理和孤立節(jié)點(diǎn)處理。endprint
3 低功耗WSN廣播協(xié)議實(shí)現(xiàn)
TinyOS是專為嵌入式無線傳感網(wǎng)絡(luò)設(shè)計(jì)的基于構(gòu)件(Component-based)的操作系統(tǒng),可以將開發(fā)的組件連接到相應(yīng)的組件中,實(shí)現(xiàn)協(xié)議的集成和整合完成所需要的功能,同時(shí)使協(xié)議快速更新成為可能?;赥inyOS的低功耗WSN廣播協(xié)議設(shè)計(jì)如圖1所示,其中包括各組件之間的連接關(guān)系。
(1)低功耗監(jiān)聽的睡眠調(diào)度:MacControlC組件提供了LowPowerListening接口的實(shí)現(xiàn),為應(yīng)用層提供接口,實(shí)現(xiàn)應(yīng)用層的睡眠調(diào)度周期Ts(睡眠間隔)的設(shè)置。MacControlC組件使用SenderC組件使用的LowPowerListening接口,該接口的具體實(shí)現(xiàn)則是由組件LplPacketC組件來提供,通過調(diào)用ChannelPoller接口的命令來實(shí)現(xiàn)。ChannelPoller接口的具體實(shí)現(xiàn)由ChannelPollerC組件來提供。另外,當(dāng)喚醒時(shí)刻到來時(shí),ChannelPollerC組件通過調(diào)用LplBeaconC組件的BeaconControl接口啟動(dòng)喚醒信標(biāo)報(bào)文的發(fā)送。
(2)處理和發(fā)送來自應(yīng)用層的報(bào)文:SenderC組件使用AsyncSend接口監(jiān)聽來自應(yīng)用層的報(bào)文,并負(fù)責(zé)緩存單播和廣播報(bào)文。對(duì)于緩存隊(duì)列中的廣播轉(zhuǎn)發(fā)報(bào)文,SenderC組件將調(diào)用BroadcastForwarderC組件的BroadcastSend接口中的Send命令,則BroadcastForwarderC組件將啟動(dòng)廣播轉(zhuǎn)發(fā)處理過程,LplBeaconC組件開始等待即將到來的信標(biāo)通知報(bào)文。LplBeaconC組件主要用于負(fù)責(zé)喚醒報(bào)文(Wakeup Beacon)的發(fā)送,其中發(fā)送時(shí)刻是當(dāng)ChannelPollerC組件中喚醒計(jì)時(shí)器WakeupTimer到期。喚醒計(jì)時(shí)器WakeupTimer則是通過調(diào)用BeaconControl接口的start命令來啟動(dòng)和運(yùn)行。
(3)接收和處理來自底層無線信道的報(bào)文:對(duì)于收到的信標(biāo)報(bào)文,LplBeaconC組件主要負(fù)責(zé)兩部分任務(wù):鄰居表的更新及維護(hù)和父節(jié)點(diǎn)的選擇及更新。當(dāng)路由更新計(jì)時(shí)器UpdateTimer過期時(shí)(即當(dāng)節(jié)點(diǎn)發(fā)送完信標(biāo)報(bào)文后的Ts時(shí)刻,其中Ts為睡眠間隔),將運(yùn)行分布式廣播主干構(gòu)造算法。廣播主干中的廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)對(duì)于收到的廣播報(bào)文,利用ListenerC組件中的Receive事件通知上層,并且調(diào)用BroadcastForwarderC組件中BroadcastSend接口的Send命令轉(zhuǎn)發(fā)接收到的廣播報(bào)文。
(4)本文將2.4節(jié)中基于分布式的準(zhǔn)同步機(jī)制實(shí)現(xiàn)在該協(xié)議框架內(nèi)的LplBeaconC組件中,基于收到廣播接收節(jié)點(diǎn)的信標(biāo)報(bào)文,通知其調(diào)整睡眠調(diào)度,使得廣播接收節(jié)點(diǎn)喚醒時(shí)間晚于廣播轉(zhuǎn)發(fā)節(jié)點(diǎn),時(shí)間差可控制在一定隨機(jī)退避時(shí)間內(nèi),達(dá)到偽同步的狀態(tài)。該隨機(jī)退避時(shí)間可根據(jù)式(1)和(2)中的判定因素來設(shè)置,比如喚醒時(shí)間間隔和廣播轉(zhuǎn)發(fā)節(jié)點(diǎn)的孩子節(jié)點(diǎn)數(shù)量。
4 結(jié)語
節(jié)能是無線傳感器網(wǎng)絡(luò)的首要設(shè)計(jì)目標(biāo),低功耗WSN通過引入睡眠調(diào)度機(jī)制延長網(wǎng)絡(luò)壽命具有的應(yīng)用前景。本文擺脫了異步睡眠調(diào)度下利用單播實(shí)現(xiàn)廣播的轉(zhuǎn)發(fā)模式,給出基于TinyOS的低功耗WSN廣播協(xié)議的設(shè)計(jì)與實(shí)現(xiàn),可通過組件連接的方式應(yīng)用于現(xiàn)有協(xié)議的集成或開發(fā),具有一定的實(shí)用性價(jià)值。下一步將從事低功耗WSN下以廣播為支撐的相關(guān)研究,比如低功耗WSN的網(wǎng)絡(luò)配置控制信息廣播、低功耗WSN的事件通知和低功耗WSN的密鑰管理與分發(fā)等。
[參考文獻(xiàn)]
[1]向鳳紅,孔慶平,毛劍琳,等.基于ZigBee的低功耗無線傳感器網(wǎng)絡(luò)改進(jìn)協(xié)議[J].傳感器與微系統(tǒng),2017(3):33-36.
[2]柴韜.低功耗技術(shù)在無線傳感器網(wǎng)絡(luò)中的研究與設(shè)計(jì)[J].無線互聯(lián)科技,2017(8):16-17.
[3]LEVIS P,MADDEN S,POLASTRE J,et al. TinyOS:an operating system for sensor networks[J].Ambient Intelligence,2004(5):383-396.
[4]潘浩,董啟芬,張貴軍,等.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS[M].北京:清華大學(xué)出版社,2011.
[5]SHI PZ,WANG Y,LI K,et al. Delay-constrained and energy-balanced broadcasts for low duty-cycled wireless sensor networks[J].Local Computer Networks,2014(2):284-287.
[6]WANG Y,SHI PZ,LI K,et al. DQSB:A reliable broadcast protocol based on distributed quasi-synchronized mechanism for low duty-cycled wireless sensor networks[J].International Journal of Wireless & Mobile Networks,2012(3):65-85.endprint