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