利用捎帶技術(shù)提高ZigBee網(wǎng)絡(luò)性能的方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
關(guān)鍵字: ZigBee協(xié)議;捎帶;AODVjr
1 引言
IEEE 802.11、藍(lán)牙、UWB等協(xié)議推出以來(lái),在短距離的無(wú)線監(jiān)測(cè)、控制、數(shù)據(jù)傳輸領(lǐng)域得到廣泛應(yīng)用,但它們?nèi)匀淮嬖诠拇?、組網(wǎng)能力差等弱點(diǎn)。以組網(wǎng)能力強(qiáng)著稱的ZigBee協(xié)議能彌補(bǔ)上述協(xié)議的不足,特別適合于組建短距離低速無(wú)線個(gè)域網(wǎng)、無(wú)線傳感器網(wǎng)絡(luò)等。
ZigBee協(xié)議由ZigBee聯(lián)盟于2004年12月中旬正是推出,其介質(zhì)訪問(wèn)控制子層(MAC)基于IEEE 802.15.4標(biāo)準(zhǔn),網(wǎng)絡(luò)層采用Cluster-Tree+AODVjr路由算法,支持星形(Star)、樹狀(Cluster-Tree)、網(wǎng)格(Mesh)等多種拓?fù)浣Y(jié)構(gòu)[1],算法可在簡(jiǎn)單的單片機(jī)平臺(tái)上實(shí)現(xiàn)[2]。其中,單獨(dú)采用AODVjr(AODV Junior,簡(jiǎn)化的AODV)路由算法的Mesh網(wǎng)絡(luò)最為簡(jiǎn)單,應(yīng)用較廣泛。AODVjr算法是AODV(Ad hoc On Demand Distance Vector, Ad hoc按需距離矢量路由協(xié)議)算法的簡(jiǎn)化,它跟AODV一樣,與目標(biāo)節(jié)點(diǎn)通信時(shí),采用先問(wèn)路由,再發(fā)送數(shù)據(jù)或命令的辦法[3,4]。本文提出采用捎帶技術(shù)的AODVjr算法,將要發(fā)送的數(shù)據(jù)捎帶在AODVjr的路由請(qǐng)求和路由應(yīng)答包中,大大提高ZigBee網(wǎng)絡(luò)的通信效率。DSP2812
2 ZigBee的AODVjr協(xié)議
ZigBee協(xié)議網(wǎng)絡(luò)層AODVjr算法是需求驅(qū)動(dòng)型的,由源節(jié)點(diǎn)選擇路由,它是針對(duì)AODV算法的簡(jiǎn)化改進(jìn)??紤]到節(jié)能、成本、應(yīng)用方便性等因素,AODVjr簡(jiǎn)化AODV的一些特點(diǎn),但是仍然保持AODV的主要功能。
首先,在AODVjr路由算法中,沒(méi)有目標(biāo)節(jié)點(diǎn)序列號(hào),只有目標(biāo)節(jié)點(diǎn)才能發(fā)送路由應(yīng)答(Route Reply,RREP)包,這樣可以避免循環(huán)問(wèn)題和無(wú)效RREP包出現(xiàn),提高通信效率。其次,AODVjr刪除路由錯(cuò)誤(Route Error,RERR)包及前驅(qū)列表(Precursor List)。另外,為了避免廣播風(fēng)暴,AODV中周期性發(fā)送的Hello包也被刪除。在ZigBee的集成路由算法中,AODVjr中的許多優(yōu)點(diǎn)使得路由協(xié)議簡(jiǎn)單化且實(shí)現(xiàn)AODV的基本路由功能[5,6]。
圖1(a)和(b)是AODVjr算法尋找路由的方式。當(dāng)節(jié)點(diǎn)A要發(fā)送信息給節(jié)點(diǎn)D時(shí),如果發(fā)現(xiàn)自己沒(méi)有到節(jié)點(diǎn)D的路由,便通過(guò)組播(Multi-Broadcast)路由請(qǐng)求(Route Request,RREQ)包,請(qǐng)求其鄰居幫忙查找到節(jié)點(diǎn)D的路徑。每個(gè)接收到RREQ包的節(jié)點(diǎn),都維護(hù)一條到節(jié)點(diǎn)A的路由信息,同時(shí)幫助節(jié)點(diǎn)A廣播查找節(jié)點(diǎn)D。通過(guò)這種洪泛(Flooding)方式,RREQ包會(huì)被廣播轉(zhuǎn)發(fā)至節(jié)點(diǎn)D。節(jié)點(diǎn)D接收到RREQ包后,根據(jù)RREQ包的路由代價(jià)(Cost)決定是否更新自己的路由表,同時(shí)通過(guò)路由代價(jià)最小的路徑給節(jié)點(diǎn)A回復(fù)RREP包。節(jié)點(diǎn)A查找目標(biāo)節(jié)點(diǎn)通常是通過(guò)組播進(jìn)行的,而節(jié)點(diǎn)D給節(jié)點(diǎn)A回復(fù)RREP包則通過(guò)單播(Unit-Broadcast)進(jìn)行的。節(jié)點(diǎn)A接收到節(jié)點(diǎn)D的RREP包后,根據(jù)Cost最小原則決定與節(jié)點(diǎn)D通信所走的最佳路徑。圖1中,節(jié)點(diǎn)A查找到節(jié)點(diǎn)D的最短路徑:A->B->C->D,然后把數(shù)據(jù)發(fā)送給節(jié)點(diǎn)D,節(jié)點(diǎn)D再通過(guò)D->C->B->A給節(jié)點(diǎn)A確認(rèn)信息。
圖1 AODVjr算法查找路由及通信方式
在ZigBee協(xié)議里,AODVjr的RREQ包和RREP包作為網(wǎng)絡(luò)層命令傳送,成為單獨(dú)的網(wǎng)絡(luò)負(fù)荷,如圖2所示。其中命令標(biāo)識(shí)值等于0x01時(shí)是RREQ包,等于0x02時(shí)是RREP包;單字節(jié)的命令選項(xiàng)只使用一個(gè)比特,用于區(qū)分該路由包是單獨(dú)進(jìn)行路由查找還是進(jìn)行路由修復(fù)(Route Repair)[1]。
(a)路由請(qǐng)求包
(b)路由應(yīng)答包
(c)命令選項(xiàng)
圖2 ZigBee網(wǎng)絡(luò)層的命令包
3 捎帶技術(shù)在AODVjr的應(yīng)用
ZigBee網(wǎng)絡(luò)里的AODVjr屬于后應(yīng)式的按需Ad hoc網(wǎng)絡(luò),不周期性地更新自己的路由信息,只有在需要通信時(shí),才發(fā)起路由查找過(guò)程。在ZigBee網(wǎng)絡(luò)里,節(jié)點(diǎn)會(huì)移動(dòng)或者休眠,通信時(shí)幾乎每次都要重新查找路由,而每次傳輸?shù)臄?shù)據(jù)量又比較少,絕大多數(shù)情況下只要傳送一次即可完成,如獲取傳感器的值。為了達(dá)到節(jié)能且降低通信復(fù)雜度的目的,可將互聯(lián)網(wǎng)中常用的“捎帶確認(rèn)”技術(shù)應(yīng)用于ZigBee網(wǎng)絡(luò)。
所謂“捎帶確認(rèn)”,是指為了提高網(wǎng)絡(luò)的通信效率,目標(biāo)節(jié)點(diǎn)接收到源節(jié)點(diǎn)的數(shù)據(jù)后,將確認(rèn)(ACK)信息附加在目標(biāo)節(jié)點(diǎn)發(fā)送給源節(jié)點(diǎn)的數(shù)據(jù)包中,由這些數(shù)據(jù)包捎帶給源節(jié)點(diǎn)。DSP2812
采用捎帶技術(shù)后,如圖3(a)所示,源節(jié)點(diǎn)可以把要發(fā)送給目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)或命令放置在RREQ包后面,成為網(wǎng)絡(luò)負(fù)荷的一部分,由RREQ包傳送給目標(biāo)節(jié)點(diǎn)。目標(biāo)節(jié)點(diǎn)接收到RREQ包后,在給源節(jié)點(diǎn)回應(yīng)RREP包之前,處理源節(jié)點(diǎn)發(fā)送的數(shù)據(jù)或者命令,將要發(fā)送的ACK或者數(shù)據(jù)由RREP包捎帶給源節(jié)點(diǎn),如圖3(b)所示。
(a)捎帶數(shù)據(jù)或命令的路由請(qǐng)求包
(b)捎帶ACK或數(shù)據(jù)的路由應(yīng)答包
(c)改進(jìn)后的命令選項(xiàng)
圖3 采用捎帶技術(shù)的ZigBee網(wǎng)絡(luò)層命令包
如圖3(c)所示:引進(jìn)捎帶功能后,要修改AODVjr里的命令選項(xiàng),將保留的7個(gè)比特用于表示捎帶數(shù)據(jù)的長(zhǎng)度,為0時(shí)表示此路由包沒(méi)有捎帶任何數(shù)據(jù),是普通的AODVjr路由包。
沒(méi)有采用捎帶技術(shù)時(shí),如圖1所示,源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間傳輸數(shù)據(jù)需要2個(gè)來(lái)回;改進(jìn)后只需要圖1(a)、(b)所示的一個(gè)來(lái)回。由此可見(jiàn),將數(shù)據(jù)捎帶在路由包中,對(duì)于只需通信一次數(shù)據(jù)就可以傳輸完畢的情況,能夠節(jié)省一個(gè)來(lái)回的時(shí)間。這樣,網(wǎng)絡(luò)在通信延遲、節(jié)能、效率上都有優(yōu)化,同時(shí)降低通信復(fù)雜度。
4 算法的實(shí)現(xiàn)
4.1 協(xié)議棧
采用捎帶技術(shù)的ZigBee協(xié)議棧有3層,其體系結(jié)構(gòu)如圖4所示。協(xié)議棧參考ZigBee網(wǎng)絡(luò)的結(jié)構(gòu),物理層和介質(zhì)訪問(wèn)控制層采用IEEE 802.15.4協(xié)議,網(wǎng)絡(luò)層僅使用捎帶技術(shù)的AODVjr路由算法,通過(guò)應(yīng)用支持子層與應(yīng)用層建立聯(lián)系。該協(xié)議棧簡(jiǎn)單、實(shí)用、高效。
圖4 采用捎帶技術(shù)的ZigBee協(xié)議棧
4.2 路由設(shè)計(jì)與實(shí)現(xiàn)
(a)目標(biāo)節(jié)點(diǎn)接收到RREQ包
(b)源節(jié)點(diǎn)接收到RREP包
圖5 目標(biāo)節(jié)點(diǎn)和源節(jié)點(diǎn)處理RREQ和RREP流程
采用捎帶技術(shù)后,對(duì)算法復(fù)雜度的影響不大。只要稍微改動(dòng)源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)發(fā)送以及接收RREQ包和RREP包的程序即可,中間節(jié)點(diǎn)仍按普通的AODVjr包處理數(shù)據(jù)。
圖5是目標(biāo)節(jié)點(diǎn)和源節(jié)點(diǎn)處理RREQ包和RREP包的程序流程,從中可以看出,捎帶技術(shù)并沒(méi)有增加算法實(shí)現(xiàn)的復(fù)雜度。作者在美國(guó)赫立訊公司的IP-Link122x系列模塊中使用Keil C編程,實(shí)現(xiàn)使用捎帶技術(shù)的ZigBee網(wǎng)絡(luò)。該模塊通過(guò)美國(guó)FCC認(rèn)證,經(jīng)過(guò)ZigBee聯(lián)盟指定的德國(guó)萊茵TUV ZigBee實(shí)驗(yàn)室一致性測(cè)試,是符合IEEE 802.15.4標(biāo)準(zhǔn)和ZigBee協(xié)議的模塊。本文算法運(yùn)行在模塊自帶的嵌入式芯片——Silicon Laboratories公司的8051內(nèi)核MCU上,采用Chipcon AS公司的射頻芯片CC2420收發(fā)數(shù)據(jù)。
5 實(shí)驗(yàn)結(jié)果
研發(fā)過(guò)程中,可以使用Chipcon AS公司的IEEE 802.15.4包監(jiān)聽(tīng)器(Packet Sniffer)分析空氣中傳送的數(shù)據(jù)包,對(duì)不同節(jié)點(diǎn)數(shù)目的Ad hoc進(jìn)行測(cè)試,可取得良好的結(jié)果。
實(shí)驗(yàn)中,采用Mesh拓?fù)洌?0個(gè)節(jié)點(diǎn)組成的ZigBee網(wǎng)絡(luò)隨意分布在三層樓中,采用對(duì)等連接方式,僅使用AODVjr路由算法。兩個(gè)節(jié)點(diǎn)通信的平均傳輸延遲及成功率,采用捎帶技術(shù)前后質(zhì)量對(duì)比如表1所示。從表1可知,傳輸延遲時(shí)間可以減少很多,且成功率有一定的提高。證明本文提出的網(wǎng)絡(luò)結(jié)構(gòu)及軟硬件設(shè)計(jì)的可行性。
表1 采用捎帶技術(shù)前后的通信質(zhì)量對(duì)比
節(jié)點(diǎn)間跳數(shù) |
延遲/ms (使用前) |
延遲/ms (使用后) |
成功率/% (使用前) |
成功率/% (使用后) |
2 |
132 |
82 |
99.9 |
99.9 |
4 |
221 |
155 |
99.2 |
99.8 |
6 |
490 |
300 |
98.7 |
99.3 |
8 |
623 |
389 |
96.3 |
99.0 |
10 |
870 |
533 |
95.9 |
98.2 |
12 |
1108 |
612 |
95.2 |
98.0 |
14 |
1302 |
703 |
94.7 |
97.7 |
16 |
1536 |
834 |
94.3 |
97.3 |
18 |
1787 |
965 |
93.3 |
96.6 |
20 |
2110 |
1164 |
92.8 |
96.1 |
6 結(jié)論
本文提出采用捎帶技術(shù)的AODVjr算法,同時(shí)給出簡(jiǎn)化的ZigBee協(xié)議體系結(jié)構(gòu),并在硬件平臺(tái)上實(shí)現(xiàn)該方案。實(shí)踐證明,采用捎帶技術(shù)能降低算法實(shí)現(xiàn)的復(fù)雜度,減少通信量,節(jié)約電池能量,有效提高ZigBee網(wǎng)絡(luò)的總體性能。本方法還可以在其他使用AODV算法的網(wǎng)絡(luò)中推廣,具有一定的實(shí)用價(jià)值。DSP2812開發(fā)板
[1] Zigbee Alliance. ZigBee Specification (Version 1.1)[S]. 2006.
[2] 張成武,譚斌.單片機(jī)Zigbee技術(shù)在遠(yuǎn)程抄表系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,DSP2812開發(fā)板 2006:22(32):96-98.
[3] RFC 3561:Ad hoc On-Demand Distance Vector (AODV) Routing[S].2003.http://www.51kaifa.com/shop/read.php?ID=4732
[4]Mobility Management and Networking (MOMENT) Laboratory. Ad hoc On-Demand Distance Vector Routing[EB/OL].http://moment.cs.ucsb.edu/AODV/aodv.html, 2007-4-2.
[5]Ian D. Chakeres, Luke Klein-Verndt. AODVjr,AODV Simplified[J]. Mobile Computing and Communication Review,2002,6(3):100-101.http://www.51kaifa.com/shop/read.php?ID=4732
[6]Qiu F., Wang J-M., Leng J. "Design and Implementation of a Wireless Personal Area Network Based on AODVjr Routing" in Wireless Mobile&Multimedia Networks (ICWMMN) Proceedings[C].Beijing:The Institution of Engineering and Technology,London(IET),2006:424-427.