詳論ZigBee協議棧的體系結構
在現在的網絡科技中,ZigBee協議棧的應用感覺對是最為火熱的。那么我們現在就來認識一下ZigBee協議棧。隨著科學技術的發展,無線技術逐漸取代有線技術,僅支持靜態固定拓撲的無線網絡也逐漸被支持動態變化拓撲的無線網絡取代.
在短距離的無線控制、監測、數據傳輸領域,通用的技術有802.11、藍牙、HomeRF等,它們各有自己的優勢,但仍然存在功耗大、組網能力差等劣勢.為了彌補上述協議的不足,ZigBee聯盟于2004年12月中旬推出基于IEEE 802.15.4的ZigBee協議棧. ZigBee短距離低速無線個域網(Low Rate-Wireless Personal Area Network,LR-WPAN)不僅具有低成本、低功耗、低速率、低復雜度的特點;而且具有可靠性高,組網簡單、靈活的優勢.本文將介紹ZigBee協議棧并提出網絡層的具體實現方案.
◆ZigBee協議棧體系結構
本節將在介紹IEEE 802.15.4標準和ZigBee協議的基礎上,重點分析ZigBee協議棧的網絡層關鍵技術及其工作機制.
1 IEEE 802.15.4標準
IEEE 802.15.4標準[1]于2003年5月制定完成,它滿足國際標準化組織 (ISO)開放系統互連(OSI)參考模型,主要包括物理層、數據鏈路層.IEEE 802.15.4協議與其他無線網絡相比,突出的優點是:組網能力強,適應面廣,可靠性高,節能性好.
2 ZigBee協議棧
完整的Zigbee[2,3]協議棧由物理層、介質訪問控制層、網絡層、安全層和高層應用規范組成.
ZigBee協議棧的網絡層、安全層和應用程序接口等由ZigBee聯盟制定.其中安全層(Security)主要實現密鑰管理、存取等功能.應用程序接口負責向用戶提供簡單的應用軟件接口(API),包括應用子層支持(Application Sub-layger Support,APS)、ZigBee設備對象(ZigBee Device Object,ZDO)等,實現應用層對設備的管理.
3 網絡層關鍵技術
ZigBee協議棧的核心部分在網絡層.網絡層主要實現節點加入或離開網絡、接收或拋棄其他節點、路由查找及傳送數據等功能,支持Cluster-Tree,AODVjr,Cluster-Tree+AODVjr等多種路由算法,支持星形(Star)、樹形(Cluster-Tree)、網格(Mesh)等多種拓撲結構[4].
Cluster-Tree(簇-樹)是一種由網絡協調器(Coordinator)展開生成樹狀網絡的拓撲結構,適合于節點靜止或者移動較少的場合,屬于靜態路由,不需要存儲路由表.AODVjr算法是針對AODV[5,6](Ad hoc按需距離矢量路由協議)算法的改進,考慮到節能、應用方便性等因素,簡化了AODV的一些特點,但是仍然保持AODV的原始功能.
Cluster-Tree+AODVjr路由算法匯聚了Cluster-Tree和AODVjr的優點.網絡中的每個節點被分成四種類型:Coordinator、RN+、RN-、RFD(RN:Routing Node,路由節點;RFD:Reduced Function Device).其中Coordinator的路由算法跟RN+相同,Coordinator、RN+和RN-都是全功能節點(FFD: Full Function Device),能給其他節點充當路由節點;RFD只能充當Cluster-Tree的葉子(Leaf Node).如果待發送數據的目標節點是自己的鄰居,直接通信即可;反之,如果不是自己的鄰居時,三種類型的節點處理數據包各不相同:RN+可以啟動AODVjr,主動查找到目標節點的最佳路由,且它可以扮演路由代理(Routing Agent)的角色,幫助其他節點查找路由;RN-只能使用Cluster-Tree算法,它可以通過計算,判斷該交給數據包請自己的父節點還是某個子節點轉發;而RFD只能把數據交給父節點,請其轉發.
◆網絡層實現
作者已在符合IEEE 802.15.4的硬件平臺上實現ZigBee協議棧,成功研發出ZigBee開發包(ZigBee Development Kit,ZDK),驗證了其可行性.同時,根據一些特定的應用將算法改進,取得良好的運用效果.本節將重點介紹ZigBee網絡層的實現.
1 無線模塊的設計
根據不同類型節點功能不同的特點,作者在不同的硬件平臺設計模塊.設計制作的ZigBee系列模塊完全滿足IEEE 802.15.4和ZigBee協議的規范要求,符合ISM/SRD規范,通過美國FCC認證.模塊集無線收發器、微處理器、存儲器和用戶API等軟硬件于一體,能實現1.0版ZigBee協議棧的功能.Coordinator可以連接使用ARM處理器開發的嵌入式系統,功能較多的路由節點(RN+,RN-)由高檔單片機充當,功能較少的葉子節點(RFD)使用普通的單片機.模塊還可以根據實際需要,工作在不同的睡眠模式和節能方式.
射頻芯片采用Chipcon公司生產的符合IEEE 802.15.4標準的模塊CC2420;控制射頻芯片的微處理器,可以根據需要選擇Atmel公司的AVR系列單片機或者Silicon Labs公司的8051內核單片機.單片機與射頻芯片之間通過SPI進行通信,連接速率是6Mbps.單片機與外部設備之間通過串口進行通信,連接速率是38.4kbps.單片機自帶若干ADC或者溫度傳感器,可以實現簡單的模數轉換或者溫度監控.為了方便代碼移植到不同的硬件平臺,模塊固件采用標準C語言編寫代碼實現.
2 網絡的建立
ZigBee網絡最初是由協調器發動并且建立.協調器首先進行信道掃描(Scan),采用一個其他網絡沒有使用的空閑信道,同時規定Cluster-Tree的拓撲參數,如最大的兒子數(Cm)、最大層數(Lm)、路由算法、路由表生存期等.
協調器啟動后,其他普通節點加入網絡時,只要將自己的信道設置成與現有的協調器使用的信道相同,并提供正確的認證信息,即可請求加入(Join)網絡.一個節點加入網絡后,可以從其父節點得到自己的短MAC地址,ZigBee網絡地址以及協調器規定的拓撲參數.同理,一個節點要離開(Leave)網絡,只須向其父節點提出請求即可.一個節點若成功地接收一個兒子,或者其兒子成功脫離網絡,都必須向協調器匯報.因此,協調器可以即時掌握網絡的所有節點信息,維護網絡信息庫(PIB,PAN Information Base).
3 路由設計與實現
在傳輸數據時,不同類型的的節點有不同的處理方法,協調器的處理機制與RN+相同.網絡層路由設計分為RN+,RN-和RFD三個模塊.因為實際點對點通信是通過MAC地址進行數據傳輸的,所以每個節點在接收到信息包時,都要維護鄰居表,鄰居表主要起地址解析(Address Resolution)的作用:將鄰居節點的網絡地址轉換成MAC地址.另外,類型是RN+的節點在接收到信息包或者啟動AODVjr查找路由時,還必須維護路由表.鄰居表和路由表的記錄都有生存期,超過生存期的記錄將被刪除.
4 測試方法
無線通信有其特殊性質,每個節點發送的數據包既是信號源,同時又可能是干擾源,因此無線網絡的測試是一大難題.為了能在室內方便測試網絡性能,引入黑名單機制,強制讓一些節點對黑名單節點發送的數據包"視而不見",以測試十幾點甚至幾十點的特殊網絡.在實際應用時,去掉黑名單并不影響網絡的工作性能.測試時,還可以采用符合IEEE 802.15.4的包(Sniffer),記錄測試過程中空氣中所傳輸的無線數據.每個模塊還可以通過I/O輸出自己的收發狀態等信息.通過多種手段對測試過程進行分析,才能提高開發測試效率.