資源描述:
《路由(Routing)——ZigBee協(xié)議棧Z-Stack開發(fā)指南》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、路由(Routing)—ZigBee協(xié)議棧Z-Stack開發(fā)指南4.1路由概述Ameshnetworkisdescribedasanetworkinwhichtheroutingofmessagesisperformedasadecentralized.cooperativeprocessinvolvingmanypeerdevicesroutingoneachothers'behalf.路由對與應(yīng)用層來說是完全透明的。應(yīng)用程序只需簡單的向下發(fā)送去往任何設(shè)備的數(shù)據(jù)到棧中,棧會負(fù)責(zé)尋找路徑。這種方法,應(yīng)用程序不知道操作
2、是在一個名跳的網(wǎng)絡(luò)當(dāng)中的。路由還能夠自愈ZigBee網(wǎng)絡(luò),如果某個無線連接斷開了,路由功能乂能自動尋找一條新的路徑避開那個斷開的網(wǎng)絡(luò)連接。這就極大的捉高了網(wǎng)絡(luò)的可靠性,同時也是ZigBee網(wǎng)絡(luò)的一個關(guān)鍵特性。4.2路由協(xié)議(RoutingProtocol)ZigBee執(zhí)行慕于用于AODV專川網(wǎng)絡(luò)的路由協(xié)議。簡化后用于傳感器網(wǎng)絡(luò)。ZigBee路由協(xié)議有助于網(wǎng)絡(luò)環(huán)境有能力支持移動節(jié)點,連接失敗和數(shù)據(jù)包£失。當(dāng)路III器從他自身的應(yīng)用程序或者別的設(shè)備那.里收到一個單點發(fā)送的數(shù)據(jù)包,則網(wǎng)絡(luò)層(NWKLayer)根據(jù)一下程序?qū)?/p>
3、它繼續(xù)傳遞下去。如果H標(biāo)節(jié)點是它相鄰路由器中的一個,則數(shù)據(jù)包宜接被傳送給H標(biāo)設(shè)備。否則,路由器將耍檢索它的路由表中與所耍傳送的數(shù)據(jù)包的LI標(biāo)地址相符合的記錄。如果存在與目標(biāo)地址相符合的活動路由記錄,則數(shù)據(jù)包將被發(fā)送到存儲在記錄中的下一級地址屮去。如果沒有發(fā)現(xiàn)任何相關(guān)的路由記錄,則路曲器發(fā)起路徑尋找,數(shù)據(jù)包存儲在緩沖區(qū)中知道路徑尋找結(jié)朿。ZigBee終端節(jié)點不執(zhí)行任何路山功能。終端節(jié)點要向任何一個設(shè)備傳送數(shù)據(jù)包,它只需簡單的將數(shù)據(jù)向上發(fā)送給它的父親設(shè)備,由它的父親設(shè)備以它自己的名義執(zhí)行路由。同樣的,任何一個設(shè)備耍給終端
4、節(jié)點發(fā)送數(shù)據(jù),發(fā)起路由尋找,終端節(jié)的的父親節(jié)點都已它的名義來回應(yīng)。注意ZigBee地址分配方案使得對于任何一個目標(biāo)設(shè)備,根據(jù)它的地址都可以得到一?條路徑。在Z-Stack中,如果力一正常的路徑尋找過程不能啟動的話(逋常由于缺少路由表空間),那么Z-Stack擁有自動回退機制。此外,在Z-Stack中,執(zhí)行的路由已經(jīng)優(yōu)化了路由表記錄。通常,每一個H標(biāo)設(shè)備都需耍一條路由表記錄。但是,通過把一定父親節(jié)點記錄與其子所有子結(jié)點的記錄合并,這樣既可以優(yōu)化路徑也可以不喪失任何功能。ZigBee路由器,包括協(xié)調(diào)器執(zhí)行下面的路由函數(shù):
5、(i)路徑發(fā)現(xiàn)和選擇;(ii)路徑保持維護:(iii)路徑期滿。4.2.1路徑的發(fā)現(xiàn)和選擇(RouteDiscoveryandSelection)路徑發(fā)現(xiàn)是網(wǎng)絡(luò)設(shè)備憑借網(wǎng)絡(luò)相互協(xié)作發(fā)現(xiàn)和建立路徑的一個過程。路由發(fā)現(xiàn)可以由任意一個路由設(shè)備發(fā)起,并1L對于某個特定的目標(biāo)設(shè)備一亙執(zhí)行。路徑發(fā)現(xiàn)機制尋找源地址和目標(biāo)地址之間的所有路徑,并且試圖選擇川能的瑕好的路徑。路徑選擇就是選擇出可能的最小成本的路徑。每一個結(jié)點通常持有跟它所有鄰接點的“連接成本(linkcosts)”。通常,連接成本的典型函數(shù)是接收到的信號的強度。沿著路徑
6、,求出所有連接的連接成本總和,便可以得到整個路徑的“路徑成木”。路由算法試圖尋找到擁有最小路徑成本的路徑。路徑通過-系列的請求和冋復(fù)數(shù)據(jù)包被發(fā)現(xiàn)。源設(shè)備通過向它的所有鄰接節(jié)點廣播-個路由請求數(shù)據(jù)包,來請求一個目標(biāo)地址的路徑。當(dāng)一個節(jié)點接收到RREQ數(shù)據(jù)包,它依次轉(zhuǎn)發(fā)RREQ數(shù)據(jù)包。但是在轉(zhuǎn)發(fā)乙前,它耍加上最新的連接成木,然后更新RREQ數(shù)據(jù)包中的成本值。這樣,沿著所有它通過的連接,RREQ數(shù)據(jù)包攜帶著連接成木的總和。這個過程一直持續(xù)到RREQ數(shù)據(jù)包到達(dá)冃標(biāo)設(shè)備。通過不同的路由器,許多RREQ副木都將到達(dá)冃標(biāo)設(shè)備。冃標(biāo)
7、設(shè)備選擇最好的RREQ數(shù)據(jù)包,然后發(fā)冋一個路徑答復(fù)數(shù)據(jù)包(aRouteReply)RREP給源設(shè)備。RREP數(shù)據(jù)包是一個單點發(fā)送數(shù)據(jù)包,它沿著屮間節(jié)點的相反路徑傳送宜到它到達(dá)原來發(fā)送詰求的節(jié)點為止。一旦一條路徑被創(chuàng)建,數(shù)據(jù)包就可以發(fā)送了。當(dāng)一個結(jié)點與它的下-?級相鄰節(jié)點失去了連接(當(dāng)它發(fā)送數(shù)據(jù)時,沒有收到MACACK),該節(jié)點向所有等待接收它的RREQ數(shù)據(jù)包的節(jié)點發(fā)送一個RERR數(shù)據(jù)包,將它的路徑設(shè)為無效。各個結(jié)點根據(jù)收到的數(shù)據(jù)包RREQ、RREP或者RERR來更新它的路由表。4.2.1路徑保持維護(Routemai
8、ntenance)網(wǎng)狀網(wǎng)提供路徑維護和網(wǎng)絡(luò)自愈功能。中間節(jié)點沿著連接跟蹤傳送失敗,如杲一個連接被認(rèn)定是壞鏈,那么上游節(jié)點將針對所有使用這條連接的路徑啟動路徑修復(fù)。節(jié)點發(fā)起重新發(fā)現(xiàn)巴到下一次數(shù)據(jù)包到達(dá)該節(jié)點,標(biāo)志路徑修復(fù)完成。如果不能夠啟動路徑發(fā)現(xiàn)或者由于某種原因失敗了,節(jié)點則向數(shù)據(jù)包的源節(jié)點發(fā)送一個路徑錯誤包(RERR),它將負(fù)責(zé)啟動新路徑的發(fā)