
圖3 ZigBee協議棧
這些部分當中最下面的是網絡層。和其他技術一樣,ZigBee網絡層的主要功能是路由,路由算法是它的核心。目前ZigBee網絡層主要支持兩種路由算法— 樹路由和網狀網路由。樹路由采用一種特殊的算法,具體可以參考ZigBee的協議棧規范。它把整個網絡看作是以協調器為根的一棵樹,因為整個網絡是由協調器所建立的,而協調器的子節點可以是路由器或者是末端節點,路由器的子節點也可以是路由器或者末端節點,而末端節點沒有子節點,相當于樹的葉子。這種結構又好像蜂群的結構,協調器相當于蜂后,是唯一的,而路由器相當于雄蜂,數目不多,末端節點則相當于數量最多的工蜂。其實有很多地方仔細一想,就可以發現 ZigBee和蜂群的許多暗合之處。樹路由利用了一種特殊的地址分配算法,使用四個參數—深度、最大深度、最大子節點數和最大子路由器數來計算新節點的地址,于是尋址的時候根據地址就能計算出路徑,而路由只有兩個方向—向子節點發送或者向父節點發送。樹狀路由不需要路由表,節省存儲資源,但缺點是很不靈活,浪費了大量的地址空間,并且路由效率低,因此常常作為最后的路由方法,或者干脆不用。ZigBee當中還有一種路由方法是網狀網路由,這種方法實際上是AODV路由算法的一個簡化版本,非常適合于低成本的無線自組織網絡的路由。它可以用于較大規模的網絡,需要節點維護一個路由表,耗費一定的存儲資源,但往往能達到最優的路由效率,而且使用靈活。除了這兩種路由方法,ZigBee當中還可以進行鄰居表路由,其實鄰居表可以看作是特殊的路由表,只不過只需要一跳就可以發送到目的節點。
網絡層的上面是應用層,包括了APS、AF和ZDO幾部分,主要規定了一些和應用相關的功能,包括端點 (endpoint)的規定,還有綁定(binding)、服務發現和設備發現等等。其中端點是應用對象存在的地方,ZigBee允許多個應用同時位于一個節點上,例如一個節點具有控制燈光的功能,又具有感應溫度的功能,又具有收發文本消息的功能,這種設計有利于復雜ZigBee設備的出現。而綁定是用于把兩個“互補的”應用聯系在一起,如開關應用和燈的應用。更通俗的理解,“綁定”可以說是通信的一方了解另一方的通信信息的方法,比如開關需要控制 “燈”,但它一開始并不知道“燈”這個應用所在的設備地址,也不知道其端點號,于是它可以廣播一個消息,當“燈”接收到之后給出響應,于是開關就可以記錄下“燈”的通信信息,以后就可以根據記錄的通信信息去直接發送控制信息了。服務發現和設備發現是應用層需要提供的,ZigBee定義了幾種描述符,對設備以及提供的服務可以進行描述,于是可以通過這些描述符來尋找合適的服務或者設備。
ZigBee還提供了安全組件,采用了AES128的算法對網絡層和應用層的數據進行加密保護,另外還規定了信任中心(trust center)的角色—全網有一個信任中心,用于管理密鑰和管理設備,可以執行設置的安全策略。
ZigBee性能分析
上面對ZigBee協議棧作了一些介紹,要知道ZigBee能勝任什么工作,還需要作進一步的分析,主要有幾個方面:數據速率、可靠性、時延、能耗特性、組網和路由。
ZigBee 的數據速率比較低,在2.4GHz的頻段也只有250kb/s,而且這只是鏈路上的速率,除掉幀頭開銷、信道競爭、應答和重傳,真正能被應用所利用的速率可能不足100kb/s,并且這余下的速率也可能要被鄰近多個節點和同一個節點的多個應用所瓜分。所以我們不能奢望ZigBee去做一些如傳輸視頻之類的高難度的事情,起碼目前是這樣,而應該聚焦于一些低速率的應用,比如人們早就給它找好的一個應用領域—傳感和控制。
至于可靠性, ZigBee有很多方面進行保證,首先是物理層采用了擴頻技術,能夠在一定程度上抵抗干擾,而MAC層和應用層(APS部分)有應答重傳功能,另外MAC 層的CSMA機制使節點發送之前先監聽信道,也可以起到避開干擾的作用,網絡層采用了網狀網的組網方式(圖4),從源節點到達目的節點可以有多條路徑,路徑的冗余加強了網絡的健壯性,如果原先的路徑出現了問題,比如受到干擾,或者其中一個中間節點出現故障,ZigBee可以進行路由修復,另選一條合適的路徑來保持通信(圖5、圖6)。據了解,在最新的ZigBee 2007協議棧規范當中,將會引入一個新的特性——頻率捷變 (frequency agility),這也是ZigBee加強其可靠性的一個重要特性。這個特性大致的意思是當ZigBee網絡受到外界干擾,比如 Wi-Fi的干擾,無法正常工作時,整個網絡可以動態的切換到另一個工作信道上。





