結(jié)構(gòu)化方法的無線傳感器網(wǎng)絡設計
無線傳感器網(wǎng)絡(WSN)由一些獨立、完全嵌入式操作的小體積低功耗節(jié)點組成,這些節(jié)點能夠檢測來自目標環(huán)境的數(shù)據(jù)或控制目標環(huán)境,并且相互間通過無線方式通信。檢測和控制是通過互連著的傳感器和激勵器完成的,而這些傳感器和激勵器或通過遠程、或通過嵌入式應用程序進行管理。這些節(jié)點的數(shù)量從十幾個到數(shù)千個不等,一個典型系統(tǒng)由數(shù)百個分布于整座大樓或室外空間的節(jié)點組成。
許多無線傳感器網(wǎng)絡采用私有標準實現(xiàn)無線組網(wǎng),但最近的趨勢是逐漸向標準化的低功耗無線通信發(fā)展。基于著名的802.15.4規(guī)范的ZigBee就是一種用于無線檢測和控制的標準。雖然802.15.4文檔僅描述了協(xié)議的PHY和MAC層,但基于802.15.4構(gòu)建的ZigBee還提供網(wǎng)絡和應用層規(guī)范。
ZigBee具有許多優(yōu)點,包括可以實現(xiàn)多跳路由和數(shù)據(jù)發(fā)送的網(wǎng)格協(xié)議、安全規(guī)范和針對應用層互操作性的整套參數(shù)設置??傊琙igBee向嵌入式應用開發(fā)人員提供了管理網(wǎng)絡以及連接其它節(jié)點的更高抽象層次。
雖然本文主要討論的是ZigBee,但其中許多觀點和結(jié)論同樣也適用于采用802.15.4 MAC和PHY的其它標準。為了避免出現(xiàn)混亂,后文假設我們的目標設計涉及的是使用網(wǎng)格路由協(xié)議、802.15.4兼容調(diào)制方案和介質(zhì)訪問協(xié)議的多跳網(wǎng)絡。本文還假設讀者對ZigBee和802.15.4規(guī)范已有基本了解。
網(wǎng)絡組織和規(guī)模
網(wǎng)絡組織和規(guī)模也許是最重要的設計選項,它往往對接下來的設計過程起著告知和指導作用。它還有約束作用,因為大型網(wǎng)絡通常更難設計和維護。幸運的是,如今已經(jīng)有方法能輕松實現(xiàn)和維護非常大的網(wǎng)絡。
目前最先進的ZigBee網(wǎng)絡規(guī)模在300到500個節(jié)點之間。這個規(guī)??雌饋聿淮螅囅胍幌?,所有這些節(jié)點工作在同一物理信道上,彼此在同一時間發(fā)送數(shù)據(jù),根據(jù)每個節(jié)點的行為路由數(shù)據(jù),并在同一時間試圖保持整個網(wǎng)絡的完整性(通過發(fā)送周期性控制消息),這該是個很吵很擁擠的網(wǎng)絡。另外還要注意,ZigBee標準所依據(jù)的802.15.4規(guī)范使用了CSMA/CA(載波偵聽多址訪問/碰撞避免)協(xié)議,也就是說,在各自“聽力”范圍內(nèi)沒有兩個節(jié)點能同時“說話”。如果同時“說話”,都會遭遇通信失敗,必須延遲一段時間后重試。如果網(wǎng)絡已經(jīng)擁塞,那么這些重試將產(chǎn)生級聯(lián)傳輸故障,試圖發(fā)起空中訪問的節(jié)點將越來越多,從而加劇信道的擁擠。
事實上,在設計數(shù)百個節(jié)點以上的網(wǎng)絡時面臨的主要挑戰(zhàn)之一是如何有效地管理網(wǎng)絡擁塞(另外一個挑戰(zhàn)是在運行時優(yōu)化用于存儲內(nèi)部堆棧狀態(tài)的系統(tǒng)資源)。下面的小節(jié)將簡要介紹用于解決擁塞問題的三種不同策略。
圖1:基于802.15.4的ZigBee提供網(wǎng)絡層和應用層規(guī)范。
網(wǎng)絡密度
顯然,“300個節(jié)點的網(wǎng)絡”給我們提供的有關(guān)網(wǎng)絡組織的信息是很少的。由于存在上述沖突碰撞問題,網(wǎng)絡密度也是影響網(wǎng)絡健康的一個重要因素,也就是說在每個節(jié)點聽力范圍內(nèi)存在多少個節(jié)點,或者換句話說,一個普通節(jié)點可以聽到多少個其它節(jié)點?專家建議是小于5個,因為這個數(shù)量支持冗余設計和相對無阻塞的通信介質(zhì)。7個節(jié)點以上的網(wǎng)絡很可能出現(xiàn)嚴重擁塞的網(wǎng)段而加重網(wǎng)絡負擔。
一個相關(guān)的問題隨之而來,系統(tǒng)設計師該如何判斷有多少個節(jié)點能被聽到?一個顯而易見的策略是定制嵌入式應用程序。有關(guān)相鄰節(jié)點的信息實際上是ZigBee網(wǎng)絡中協(xié)議操作的一個重要部分。事實上,節(jié)點會主動廣播他們自己的信息,并且這些信息會被有效范圍內(nèi)的每個其它節(jié)點接收到。相鄰表格可以被駐留程序查詢,并計算唯一性條目的數(shù)量。然后駐留程序再將這個診斷結(jié)果發(fā)送給指定節(jié)點。很明顯,這樣做只有在網(wǎng)絡密度仍能改變的網(wǎng)絡安裝過程中才有意義。一旦網(wǎng)絡安裝完畢并開始運行,密度信息將在故障排除過程中發(fā)揮顧問的作用。
請注意,如果相鄰表格的大小小于周圍節(jié)點的數(shù)量,ZigBee堆棧將強制周期性地撤消表格條目。這種撤消也可能負面影響總體網(wǎng)絡性能,因為即使路徑中沒有節(jié)點離線,也會強制路由被重新發(fā)現(xiàn)。因此,除了限制網(wǎng)絡密度以避免擁塞外,還必須根據(jù)系統(tǒng)資源(如相鄰表格的大小)確定網(wǎng)絡密度。
在節(jié)點的物理位置由于應用要求而被固定的情況下,網(wǎng)絡密度可以方便地通過降低擁塞區(qū)域中收發(fā)器的輸出功率來得到控制。從理論上講,降低輸出功率與增加節(jié)點間距離、使它們彼此聽到的可能性變小具有相同的效果。制造商傾向于將輸出功率設為最大值,以確保最大工作范圍和最佳鏈路質(zhì)量。根據(jù)我們的經(jīng)驗,在距離性能不很重要的室內(nèi)應用場合,輸出功率可以很容易降低。根據(jù)經(jīng)驗,輸出功率降低3dBm,有效距離范圍可以縮短1.5倍。
有關(guān)密度的最后一個考慮因素是,故障率增加到足夠高以致于觸發(fā)上述級聯(lián)故障效應的理論極限。當然,這個參數(shù)取決于應用程序本身發(fā)送的信息量。根據(jù)經(jīng)驗,如果每個節(jié)點每秒發(fā)送一個最大長度的數(shù)據(jù)包,那么在各個節(jié)點的聽力范圍內(nèi)這個極限值約為25個節(jié)點。密度極限似乎是不變的,與堆棧實現(xiàn)無關(guān),這意味著密度極限與MAC層更基本的CSMA操作有關(guān)。例如,我們可以推斷每隔n秒發(fā)送一個包的節(jié)點的密度極限值,就是將最大密度乘以1.2n倍。這個近似值從來不應被用作網(wǎng)絡密度的精確指導值,因為實際值將取決于網(wǎng)絡中的路由器和終端設備的比例。
根據(jù)信道進行網(wǎng)絡劃分
在不能刪除節(jié)點或降低輸出功率的情況下,系統(tǒng)設計師可以選擇將工作在單個信道上的單一網(wǎng)絡劃分為工作在不同信道上的多個網(wǎng)絡來解決網(wǎng)絡擁塞問題。802.15.4在2.4GHz頻率范圍內(nèi)規(guī)定了16個信道,在900MHz頻率范圍內(nèi)另外還增加了10個信道。將網(wǎng)絡置于不同的信道上能夠完全隔離不同網(wǎng)絡間的相互影響,但根據(jù)需要,每個網(wǎng)絡可能需要使用協(xié)調(diào)器(coordinator),并需連接這些協(xié)調(diào)器,從而帶來額外的復雜性。
如果待分割的網(wǎng)絡邏輯上已經(jīng)是分開的,那么根據(jù)信道進行網(wǎng)絡劃分的方法最有效果。例如,在大樓自動化應用中,讓每一樓層的網(wǎng)絡工作在各自的信道上通常是比較理想的。但如果每個樓層都有一個網(wǎng)絡協(xié)調(diào)器,那么不同樓層之間的節(jié)點相互通信就很麻煩,特別是這樣做可能會影響網(wǎng)絡性能(高密度網(wǎng)絡就是這種情況)。
同樣,還可以根據(jù)房間或辦公面積進行劃分。最重要的是,應該根據(jù)具體應用要求和可用信道數(shù)量來做出根據(jù)物理信道劃分網(wǎng)絡的決定。當多個子網(wǎng)絡中的節(jié)點需要相互通信時,這種劃分還會使總體設計變得更加復雜。
信道掩碼(就象收發(fā)器輸出功率一樣)是一個可設置的網(wǎng)絡參數(shù)。應用工程師可以給網(wǎng)絡協(xié)調(diào)器以及必須與該協(xié)調(diào)器建立連接的網(wǎng)絡設備分配一個合適的信道掩碼。作為一個標準步驟,協(xié)調(diào)器將執(zhí)行能量檢測掃描,以便從信道掩碼中挑選出“活躍性最差”的信道。
值得注意的是,除了給掩碼分配單個信道外,沒有其它方法能強制協(xié)調(diào)器工作在特定信道上。不過強烈建議在信道掩碼中至少要保持兩個信道,因為來自WiFi網(wǎng)絡、藍牙耳機和其它電子設備的帶內(nèi)干擾會臨時占用本來是空閑的特定信道,致使整個網(wǎng)絡癱瘓。在信道掩碼中留有多個信道不僅給協(xié)調(diào)器提供了信道選擇余地,今后還能讓它靈活地切換到擁塞程度較低的信道。
圖2:ZigBee網(wǎng)狀網(wǎng)拓撲。
根據(jù)PANID進行網(wǎng)絡劃分
最后一種策略是根據(jù)PANID劃分網(wǎng)絡,這種方法的效率公認要比根據(jù)物理信道劃分網(wǎng)絡的方法低。PANID是一個給定網(wǎng)絡中所有設備都知道的唯一標識符。使用不同PANID的設備之間是無法通信的,從而允許多個網(wǎng)絡共存于同一區(qū)域,而且其中一個網(wǎng)絡的數(shù)據(jù)不會在另外一個網(wǎng)絡中出現(xiàn)。事實上,具有不同PANID的多個網(wǎng)絡都可以使用相同的物理信道實現(xiàn)相互間的通信。
雖然根據(jù)PANID分割網(wǎng)絡不會影響空中擁塞程度,但可以通過在堆棧的較低層濾除來自相鄰網(wǎng)絡設備(具有另外一個PANID)的業(yè)務而減少每個節(jié)點處的處理開銷量。在大多數(shù)情況下,濾除工作可以由PHY層硬件自動完成,從而釋放更多的應用資源和時間。對于應用處理和路由開銷占主導的應用而言,根據(jù)PANID進行劃分的方法能夠非常有效地在給定區(qū)域內(nèi)容納更多的節(jié)點。
基于PANID分段的一個好處是具有相對較多的可能唯一分段,準確地講可達216個。雖然只有26個物理信道,但PANID為實現(xiàn)分段提供了更靈活的方法,盡管效率較低。大多數(shù)無線系統(tǒng)將同時使用PANID分段和信道數(shù)量分段的組合策略??傊诮鉀Q網(wǎng)絡擁塞問題時這種組合策略可以提供最佳的靈活性和效率折衷方案。
圖3:居民住宅樓內(nèi)的無線抄表應用。
吞吐量
另外一個需要仔細考慮的設計因素是吞吐量。簡單地說,吞吐量指的是一個設備在單位時間內(nèi)希望傳送的有用數(shù)據(jù)總量。許多系統(tǒng)工程師錯誤地認為系統(tǒng)具有比實際可用帶寬大得多的帶寬(有時甚至超出一個數(shù)量級),從而導致性能差或無法運行的設備和失敗的設計。
導致這個常見問題的原因是802.15.4網(wǎng)絡鏈路宣稱有250kbps的介質(zhì)容量。實際上,這個數(shù)字指的是理論上的物理極限,也就是PHY層的有效帶寬。它忽略了物理層上其它堆棧層引起的協(xié)議延時、處理和解析每個數(shù)據(jù)包的開銷、介質(zhì)訪問時間、數(shù)據(jù)確認機制和誤碼率。根據(jù)我們的經(jīng)驗,在相隔一跳的兩個ZigBee節(jié)點之間建立的點到點鏈路的傳輸速率不超過110到120kbps。在引入確認機制后,這個速率還要下降近一半。在任一給定時間點有3到5個節(jié)點試圖訪問共享介質(zhì)的典型網(wǎng)絡環(huán)境中,這個傳輸速率還將進一步降低到數(shù)十kbps。
顯然,20~40kbps與標準宣稱的最大250kbps有很大差異,而一個缺乏經(jīng)驗的系統(tǒng)工程師往往不知道這種差異,直到悔之晚矣。關(guān)鍵是無線傳感器網(wǎng)絡從來沒有打算要支持高帶寬的應用。相反,其目標市場是具有低帶寬要求的相對大型網(wǎng)絡。如果有個傳感器是產(chǎn)生100kbps數(shù)據(jù)流的視頻攝像機,那么無線傳感器網(wǎng)絡和ZigBee肯定不是最好的選擇,市場上有其它無線技術(shù)能更好地完成這個工作。
盡管吞吐量期望值和某種技術(shù)能夠支持的指標不匹配很常見,但仍可以合理使用這種技術(shù),并通過帶寬優(yōu)化在目標環(huán)境中高效地運行。例如考慮每秒采樣100次的溫度傳感器。每次用一個數(shù)據(jù)包發(fā)送一個樣值將是一個較差的設計選擇。事實上,由于前面提到的網(wǎng)絡擁塞和級聯(lián)重傳故障問題,這樣做將給網(wǎng)絡健康帶來不良后果。一個更好的策略是,將多個樣值匯聚到一個數(shù)據(jù)包中,因為在大多數(shù)情況下,最大的數(shù)據(jù)包比較小的數(shù)據(jù)包更優(yōu)。
當匯聚無法實現(xiàn)時,可以用本地處理來降低帶寬要求。讓我們考慮具有低門限和高門限的典型自動調(diào)溫器應用。只要這些溫度讀數(shù)落在可接受的溫度范圍內(nèi),那么絕對不需要發(fā)送瞬時溫度讀數(shù)。節(jié)點可以使用本地處理功能來判斷何時讀數(shù)超出規(guī)定范圍,并在需要時才發(fā)送數(shù)據(jù)以警示另一個遠程設備。減少待發(fā)送數(shù)據(jù)量的另一個策略是采用某種形式的數(shù)據(jù)求和或平均算法。
然而需要注意的是,當多個物理事件同時發(fā)生時,即使是高度優(yōu)化的設備也會遭遇擁塞。如果整個樓層的溫度上升,可能會出現(xiàn)許多自動調(diào)溫器希望立即發(fā)送溫度讀數(shù)。對付這樣的帶寬峰值的一個實用方法是隨機化傳送延時。顯然,MAC層的重傳就是一種隨機化處理,但它無助于防止碰撞,它只在發(fā)生碰撞后起作用。應用層的延時如果做得好可以有效減少碰撞于發(fā)生之前。當每小時有數(shù)百個節(jié)點需要發(fā)送數(shù)據(jù)包,最佳設計會把傳送均勻分配在整個時段內(nèi),以盡量減少碰撞的機會。在有大量傳送的場合,強烈建議系統(tǒng)工程師采用這種策略。
評論