ZigBee協(xié)議棧網(wǎng)絡(luò)層的研究與實現(xiàn)
1. 引言
隨著科學(xué)技術(shù)的發(fā)展,無線技術(shù)逐漸取代有線技術(shù),僅支持靜態(tài)固定拓?fù)涞臒o線網(wǎng)絡(luò)也逐漸被支持動態(tài)變化拓?fù)涞臒o線網(wǎng)絡(luò)取代。在短距離的無線控制、監(jiān)測、數(shù)據(jù)傳輸領(lǐng)域,通用的技術(shù)有802.11、藍(lán)牙、HomeRF等,它們各有自己的優(yōu)勢,但仍然存在功耗大、組網(wǎng)能力差等劣勢。為了彌補(bǔ)上述協(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)方案。
2. ZigBee協(xié)議棧體系結(jié)構(gòu)
本節(jié)將在介紹IEEE 802.15.4標(biāo)準(zhǔn)和ZigBee協(xié)議的基礎(chǔ)上,重點分析ZigBee協(xié)議棧的網(wǎng)絡(luò)層關(guān)鍵技術(shù)及其工作機(jī)制。
2.1 IEEE 802.15.4標(biāo)準(zhǔn)
IEEE 802.15.4標(biāo)準(zhǔn)[1]于2003年5月制定完成,它滿足國際標(biāo)準(zhǔn)化組織 (ISO)開放系統(tǒng)互連(OSI)參考模型,主要包括物理層、數(shù)據(jù)鏈路層。IEEE 802.15.4協(xié)議與其他無線網(wǎng)絡(luò)相比,突出的優(yōu)點是:組網(wǎng)能力強(qiáng),適應(yīng)面廣,可靠性高,節(jié)能性好。
2.2 ZigBee協(xié)議棧
完整的Zigbee協(xié)議棧由物理層、介質(zhì)訪問控制層、網(wǎng)絡(luò)層、安全層和高層應(yīng)用規(guī)范組成。
圖1 ZigBee協(xié)議棧
如圖1所示,ZigBee協(xié)議棧的網(wǎng)絡(luò)層、安全層和應(yīng)用程序接口等由ZigBee聯(lián)盟制定。其中安全層(Security)主要實現(xiàn)密鑰管理、存取等功能。應(yīng)用程序接口負(fù)責(zé)向用戶提供簡單的應(yīng)用軟件接口(API),包括應(yīng)用子層支持(ApplicaTIon Sub-layger Support,APS)、ZigBee設(shè)備對象(ZigBee Device Object,ZDO)等,實現(xiàn)應(yīng)用層對設(shè)備的管理。
2.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)等多種拓?fù)浣Y(jié)構(gòu)。
Cluster-Tree(簇-樹)是一種由網(wǎng)絡(luò)協(xié)調(diào)器(Coordinator)展開生成樹狀網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),適合于節(jié)點靜止或者移動較少的場合,屬于靜態(tài)路由,不需要存儲路由表。AODVjr算法是針對AODV[5,6](Ad hoc按需距離矢量路由協(xié)議)算法的改進(jìn),考慮到節(jié)能、應(yīng)用方便性等因素,簡化了AODV的一些特點,但是仍然保持AODV的原始功能。表1是兩種算法的優(yōu)缺點比較。
表1 Cluster-Tree和AODVjr的優(yōu)缺點比較
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é)點充當(dāng)路由節(jié)點;RFD只能充當(dāng)Cluster-Tree的葉子(Leaf Node)。如果待發(fā)送數(shù)據(jù)的目標(biāo)節(jié)點是自己的鄰居,直接通信即可;反之,如果不是自己的鄰居時,三種類型的節(jié)點處理數(shù)據(jù)包各不相同:RN+可以啟動AODVjr,主動查找到目標(biāo)節(jié)點的最佳路由,且它可以扮演路由代理(Routing Agent)的角色,幫助其他節(jié)點查找路由;RN-只能使用Cluster-Tree算法,它可以通過計算,判斷該交給數(shù)據(jù)包請自己的父節(jié)點還是某個子節(jié)點轉(zhuǎn)發(fā);而RFD只能把數(shù)據(jù)交給父節(jié)點,請其轉(zhuǎn)發(fā)。
圖2為Cluster-Tree+AODVjr算法時網(wǎng)絡(luò)層數(shù)據(jù)傳輸示意圖。節(jié)點E發(fā)送數(shù)據(jù)包給節(jié)點D,數(shù)字代表各種包發(fā)送的時間先后次序。從圖中可以看出,節(jié)點E的類型是RFD,它只能將數(shù)據(jù)DATA傳送給其父節(jié)點C。C的類型是RN+,所以它先把數(shù)據(jù)放入緩存后,再通過組播AODVjr路由請求包RREQ查找到節(jié)點D的路由,節(jié)點D再通過單播沿最短的路徑D-B-C給節(jié)點C回復(fù)AODVjr路由應(yīng)答包RREP。節(jié)點C找到路由后,把緩存數(shù)據(jù)沿C-B-D發(fā)送給節(jié)點D,節(jié)點D再沿D-B-C-E發(fā)送確認(rèn)包ACK給節(jié)點E,節(jié)點E收到確認(rèn)包后,整個通信過程結(jié)束。
圖2 網(wǎng)絡(luò)層數(shù)據(jù)傳輸示意圖
3.網(wǎng)絡(luò)層實現(xiàn)
作者已在符合IEEE 802.15.4的硬件平臺上實現(xiàn)ZigBee協(xié)議棧,成功研發(fā)出ZigBee開發(fā)包(ZigBee Development Kit,ZDK),驗證了其可行性。同時,根據(jù)一些特定的應(yīng)用將算法改進(jìn),取得良好的運(yùn)用效果。本節(jié)將重點介紹ZigBee網(wǎng)絡(luò)層的實現(xiàn)。
3.1無線模塊的設(shè)計
根據(jù)不同類型節(jié)點功能不同的特點,作者在不同的硬件平臺設(shè)計模塊。設(shè)計制作的ZigBee系列模塊完全滿足IEEE 802.15.4和ZigBee協(xié)議的規(guī)范要求,符合ISM/SRD規(guī)范,通過美國FCC認(rèn)證。模塊集無線收發(fā)器、微處理器、存儲器和用戶API等軟硬件于一體,能實現(xiàn)1.0版ZigBee協(xié)議棧的功能。Coordinator可以連接使用ARM處理器開發(fā)的嵌入式系統(tǒng),功能較多的路由節(jié)點(RN+,RN-)由高檔單片機(jī)充當(dāng),功能較少的葉子節(jié)點(RFD)使用普通的單片機(jī)。模塊還可以根據(jù)實際需要,工作在不同的睡眠模式和節(jié)能方式。
圖3是模塊的硬件設(shè)計框圖,射頻芯片采用Chipcon公司生產(chǎn)的符合IEEE 802.15.4標(biāo)準(zhǔn)的模塊CC2420;控制射頻芯片的微處理器,可以根據(jù)需要選擇Atmel公司的AVR系列單片機(jī)或者Silicon Labs公司的8051內(nèi)核單片機(jī)。單片機(jī)與射頻芯片之間通過SPI進(jìn)行通信,連接速率是6Mbps。單片機(jī)與外部設(shè)備之間通過串口進(jìn)行通信,連接速率是38.4kbps。單片機(jī)自帶若干ADC或者溫度傳感器,可以實現(xiàn)簡單的模數(shù)轉(zhuǎn)換或者溫度監(jiān)控。為了方便代碼移植到不同的硬件平臺,模塊固件采用標(biāo)準(zhǔn)C語言編寫代碼實現(xiàn)。
圖3 ZigBee模塊框圖
3.2網(wǎng)絡(luò)的建立
ZigBee網(wǎng)絡(luò)最初是由協(xié)調(diào)器發(fā)動并且建立。協(xié)調(diào)器首先進(jìn)行信道掃描(Scan),采用一個其他網(wǎng)絡(luò)沒有使用的空閑信道,同時規(guī)定Cluster-Tree的拓?fù)鋮?shù),如最大的兒子數(shù)(Cm)、最大層數(shù)(Lm)、路由算法、路由表生存期等。
圖4 節(jié)點加入及脫離網(wǎng)絡(luò)握手示意圖
圖4是設(shè)計的節(jié)點加入及脫離網(wǎng)絡(luò)握手示意圖。協(xié)調(diào)器啟動后,其他普通節(jié)點加入網(wǎng)絡(luò)時,只要將自己的信道設(shè)置成與現(xiàn)有的協(xié)調(diào)器使用的信道相同,并提供正確的認(rèn)證信息,即可請求加入(Join)網(wǎng)絡(luò)。一個節(jié)點加入網(wǎng)絡(luò)后,可以從其父節(jié)點得到自己的短MAC地址,ZigBee網(wǎng)絡(luò)地址以及協(xié)調(diào)器規(guī)定的拓?fù)鋮?shù)。同理,一個節(jié)點要離開(Leave)網(wǎng)絡(luò),只須向其父節(jié)點提出請求即可。一個節(jié)點若成功地接收一個兒子,或者其兒子成功脫離網(wǎng)絡(luò),都必須向協(xié)調(diào)器匯報。因此,協(xié)調(diào)器可以即時掌握網(wǎng)絡(luò)的所有節(jié)點信息,維護(hù)網(wǎng)絡(luò)信息庫(PIB,PAN Information Base)。