卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

Z-Stack_開發(fā)指南

2. ZigBee2.1 設備類型(Device Types)在ZigBee 網(wǎng)絡中存在三種邏輯設備類型:Coordinator(協(xié)調(diào)器) ,Router(路由器) 和End-Device(終端設備

2. ZigBee

2.1 設備類型(Device Types)

在ZigBee 網(wǎng)絡中存在三種邏輯設備類型:Coordinator(協(xié)調(diào)器) ,Router(路由器) 和End-Device(終端設備) 。ZigBee 網(wǎng)絡由一個Coordinator 以及多個Router 和多個End_Device組成。

上圖是一個簡單的ZigBee 網(wǎng)絡示意圖。其中黑色節(jié)點為Coordinator ,紅色

節(jié)點為Router ,白色節(jié)點為End-Device 。

2.1.1 Coordinator (協(xié)調(diào)器)

協(xié)調(diào)器負責啟動整個網(wǎng)絡。它也是網(wǎng)絡的第一個設備。協(xié)調(diào)器選擇一個信道和一個網(wǎng)絡ID(也稱之為PAN ID ,即Personal Area Network ID) ,隨后啟動整個網(wǎng)絡。

協(xié)調(diào)器也可以用來協(xié)助建立網(wǎng)絡中安全層和應用層的綁定(bindings)。 注意,協(xié)調(diào)器的角色主要涉及網(wǎng)絡的啟動和配置。一旦這些都完成后,協(xié)調(diào)器的工作就像一個路由器(或者消失go away) 。由于ZigBee 網(wǎng)絡本身的分布特性,因此接下來整個網(wǎng)絡的操作就不在依賴協(xié)調(diào)器是否存在。

2.1.2 Router (路由器)

路由器的功能主要是:允許其他設備加入網(wǎng)絡,多跳路由和協(xié)助它自己

,

的由電池供電的兒子終端設備的通訊。

通常,路由器希望是一直處于活動狀態(tài),因此它必須使用主電源供電。但是當使用樹群這種網(wǎng)絡模式時,允許路由間隔一定的周期操作一次,這樣就可以使用電池給其供電。

2.1.3 End-Device (終端設備)

終端設備沒有特定的維持網(wǎng)絡結(jié)構(gòu)的責任,它可以睡眠或者喚醒,因此它可以可以是一個電池供電設備。

通常,終端設備對存儲空間(特別是RAM 的需要) 比較小。

注意:在Z-Stack 1.4.1中一個設備的類型通常在編譯的時候通過編譯選項(ZDO_COORDINATOR 和RTR_NWK)確定。所有的應用例子都提供獨立的項目文件來編譯每一種設備類型。

2.2 棧配置(Stack Profile)

棧參數(shù)的集合需要被配置為一定的值,連同這些值在一起被稱之為棧配置。ZigBee 聯(lián)盟定義了這些由棧配置組成的棧參數(shù)。

網(wǎng)絡中的所有設備必須遵循同樣的棧配置。

為了促進互用性這個目標,ZigBee 聯(lián)盟為ZigBee2006規(guī)范定義了棧配置。所有遵循此棧配置的設備可以在其他開發(fā)商開發(fā)的遵循同樣棧配置的網(wǎng)絡中。

3. 尋址(Addressing)

3.1 地址類型(Address types)

ZigBee 設備有兩種類型的地址。一種是64位IEEE 地址,即MAC 地址,另一種是16位網(wǎng)絡地址。

64位IEEE 地址是一個全球唯一的地址,并且一經(jīng)分配就將跟隨設備一生。它通常由制造商或者被安裝時設置。這些地址由IEEE 組織來維護和分配。

16位網(wǎng)絡地址是當設備加入網(wǎng)絡后分配的。它在網(wǎng)絡中是唯一的,用來在網(wǎng)絡中鑒別設備和發(fā)送數(shù)據(jù)。

3.2 網(wǎng)絡地址分配(Network address assignment)

ZigBee 使用分布式尋址方案來分配網(wǎng)絡地址。這個方案保證在整個網(wǎng)絡中所有分配出去的網(wǎng)絡地址是唯一的。這一點是必須的,因為這樣才能保證一個具體的數(shù)據(jù)包能夠發(fā)送到它指定的設備,而不出現(xiàn)混亂。同時,這個尋址算法本身的

,

分布特性保證設備只能與他的父輩設備通訊來接收一個唯一的網(wǎng)絡地址。不需要整個網(wǎng)絡范圍內(nèi)通訊的地址分配,這有助于網(wǎng)絡的可測量性。

在每個路由加入網(wǎng)絡之前,尋址方案需要知道和配置一些參數(shù)。這些參數(shù)是MAX_DEPTH,MAX_ROUTERS和MAX_CHILDREN。這些參數(shù)是棧配置的一部分,ZigBee2006協(xié)議棧已經(jīng)規(guī)定了這些參數(shù)的值:MAX_DEPTH = 5,MAX_ROUTERS = 6和MAX_CHILDREN = 20。

MAX_DEPTH決定了網(wǎng)絡的最大深度。協(xié)調(diào)器(Coordinator)位于深度0,它的兒子位于深度1,他的兒子的的兒子位于深度2,以此類推。MAX_DEPTH參數(shù)限制了網(wǎng)絡在物理上的長度。

MAX_CHILDREN決定了一個路由(Router)或者一個協(xié)調(diào)器節(jié)點可以處理的兒子節(jié)點的最大個數(shù)。

MAX_ROUTER決定了一個路由(Router)或者一個協(xié)調(diào)器(Coordinator)節(jié)點可以處理的具有路由功能的兒子節(jié)點的最大個數(shù)。這個參數(shù)是MAX_CHILDREN的一個子集,終端節(jié)點使用(MAX_CHILDREN – MAX_ROUTER)剩下的地址空間。 如果開發(fā)人員想改變這些值,則需要完成以下幾個步驟:

首先,你要保證賦給這些參數(shù)的新值要合法。即整個地址空間不能超過,這就限制了參數(shù)能夠設置的最大值??梢允褂胮rojectsZStacktools文件夾下的CSkip.xls 文件來確認這些值是否合法。當在表格中輸入了要修改的數(shù)據(jù)后,如果數(shù)據(jù)不合法的話就會出現(xiàn)錯誤信息。

當選擇了合法的數(shù)據(jù)后,開發(fā)人員還要保證不再使用標準的棧配置,取而代之的是使用網(wǎng)絡自定義棧配置(例如:在nwk_globals.h文件中將

STACK_PROFILE_ID改為NETWORK_SPECIFIC),然后設置nwk_globals.h文件中的MAX_DEPTH參數(shù)為一個適當?shù)闹怠?/p>

此外,還必須設置nwk_globals.c文件中的Cskipchldrn 數(shù)組和CskipRtrs 數(shù)組。這些數(shù)組的值由MAX_CHILDREN和MAX_ROUTER構(gòu)成。

3.3 Z-Stack 尋址(Addressing in z-stack)

應用程序通常使用AF_DataRequest()函數(shù)向一個ZigBee 網(wǎng)絡中的設備發(fā)送數(shù)據(jù)。數(shù)據(jù)包要發(fā)送給一個zAddrType_t(在ZComDef.h 中定義) 類型的目標設備。

typedef struct

{

union

{

uint16 shortAddr;

} addr;

afAddrMode_t addrMode;

byte endPoint;

} afAddrType_t;

注意,除了網(wǎng)路地址之外,還要指定地址模式參數(shù)。目的地址模式可以設置為以下幾個值:

,

typedef enum

{

afAddrNotPresent = AddrNotPresent,

afAddr16Bit = Addr16Bit,

afAddrGroup = AddrGroup,

afAddrBroadcast = AddrBroadcast

} afAddrMode_t;

因為在Zigbee 中,數(shù)據(jù)包可以單點傳送(unicast),多點傳送(multicast)或者廣播傳送,所以必須有地址模式參數(shù)。一個單點傳送數(shù)據(jù)包只發(fā)送給一個設備,多點傳送數(shù)據(jù)包則要傳送給一組設備,而廣播數(shù)據(jù)包則要發(fā)送給整個網(wǎng)絡的所有節(jié)點。這個將在下面詳細解釋。

3.3.1 單點傳送(Unicast)

Uicast 是標準尋址模式,它將數(shù)據(jù)包發(fā)送給一個已經(jīng)知道網(wǎng)絡地址的網(wǎng)絡設備。將afAddrMode 設置為Addr16Bit 并且在數(shù)據(jù)包中攜帶目標設備地址。

3.3.2 間接傳送(Indirect)

當應用程序不清楚數(shù)據(jù)包的最終目標的時候使用間接傳送。將模式設置為AddrNotPresent 并且不指定目標地址。取而代之的是,從發(fā)送設備的棧的綁定表中查找到的目標。這種特點稱之為源綁定(在后面的綁定一節(jié)詳細介紹) 。

當數(shù)據(jù)向下發(fā)送到棧中,從綁定表中查找并且使用該目標地址。這樣,數(shù)據(jù)包將被處理成為一個標準的單點傳送數(shù)據(jù)包。如果在綁定表中找到多個設備,則向每個設備都發(fā)送一個數(shù)據(jù)包的拷貝。

上一個版本的ZigBee(ZigBee04),有一個選項可以講綁定表保存在協(xié)調(diào)器(Coordinator)當中。發(fā)送設備將數(shù)據(jù)包發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器查找它棧中的綁定表,然后將數(shù)據(jù)發(fā)送給最終的目標設備。這個附加的特性叫做協(xié)調(diào)器綁定(Coordinator Binding)。

3.3.3 廣播傳送(broadcast)

當應用程序需要將數(shù)據(jù)包發(fā)送給網(wǎng)絡的每一個設備時,使用這種模式。地址模式設置為AddrBroadcast 。目標地址可以設置為下面廣播地址的一種:

NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)——數(shù)據(jù)包將被傳送到網(wǎng)絡上的所有設備,包括睡眠中的設備。對于睡眠中的設備,數(shù)據(jù)包將被保留在其父親節(jié)點直到查詢到它,或者消息超時(NWK_INDIRECT_MSG_TIMEOUT在f8wConifg.cfg 中) 。

NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)——數(shù)據(jù)包將被傳送到網(wǎng)絡上的所有的打開接收的空閑設備(RXONWHENIDLE),也就是說,除了睡眠中的所有設備。

,

NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)——數(shù)據(jù)包發(fā)送給所有的路由器,包括協(xié)調(diào)器。

3.3.4 組尋址(Group Addressing)

當應用程序需要將數(shù)據(jù)包發(fā)送給網(wǎng)絡上的一組設備時,使用該模式。地址模式設置為afAddrGroup 并且addr.shortAddr 設置為組ID 。

在使用這個功能之前,必須在網(wǎng)絡中定義組。(參見Z-stack API 文檔中的aps_AddGroup()函數(shù)) 。

注意組可以用來關聯(lián)間接尋址。再綁定表中找到的目標地址可能是是單點傳送或者是一個組地址。另外,廣播發(fā)送可以看做是一個組尋址的特例。

下面的代碼是一個設備怎樣加入到一個ID 為1的組當中:

aps_Group_t group;

// Assign yourself to group 1

group.ID = 0x0001;

group.name[0] = 0; // This could be a human readable string aps_AddGroup( SAMPLEAPP_ENDPOINT, &group );

3.4 重要設備地址(Important Device Adresses)

應用程序可能需要知道它的設備地址和父親地址。使用下面的函數(shù)獲取設備地址(在ZStack API中定義) :

● NLME_GetShortAddr()——返回本設備的16位網(wǎng)絡地址

● NLME_GetExtAddr()—— 返回本設備的64位擴展地址

使用下面的函數(shù)獲取該設備的父親設備的地址:

● NLME_GetCoordShortAddr()——返回本設備的父親設備的16位網(wǎng)絡

地址

● NLME_GetCoordExtAddr()—— 返回本設備的父親設備的64位擴展

地址

4. 綁定(Binding)

綁定是一種兩個(或者多個) 應用設備之間信息流的控制機制。在ZigBee2006發(fā)布版本中,它被稱為資源綁定,所有的設備都必須執(zhí)行綁定機制。

綁定允許應用程序發(fā)送一個數(shù)據(jù)包而不需要知道目標地址。APS 層從它的綁定表中確定目標地址,然后將數(shù)據(jù)繼續(xù)向目標應用或者目標組發(fā)送。

注意:在ZigBee 的1.0版本中,綁定表是保存在協(xié)調(diào)器(Coordinator當中) 。現(xiàn)在所有的綁定記錄都保存在發(fā)送信息的設備當中。

,

4.1 建立綁定表(Building a Binding Table)

有三種方法可以建立一個綁定表:

● Zigbee Device Object Bind Request ——一個啟動工具可以告訴設備創(chuàng)建一個綁定記錄

● Zigbee Device Object End Device Bind Request——兩個設備可以告訴協(xié)調(diào)器它們想要建立一個綁定表記錄。協(xié)調(diào)器來協(xié)調(diào)并在兩個設備中創(chuàng)建綁定表記錄。

● Device Application——一個設備上的應用程序建立或者管理一個綁定表

4.1.1 ZigBee Device Object Binding Request

任何一個設備都可以發(fā)送一個ZDO 信息給網(wǎng)絡中的另一個設備,用來建立綁定表。稱之為援助綁定,它可以為一個發(fā)送設備創(chuàng)建一個綁定記錄。

4.1.1.1 啟動申請(The Commissioning Application)

一個應用程序可以通過ZDP_BindReq()函數(shù)(在ZDProfile.h) ,并在綁定表中包含兩個請求(地址和終點) 以及想要的群ID 。第一個參數(shù)(目標dstAddr) 是綁定源的短地址即,16位網(wǎng)絡地址。

確定你已經(jīng)在ZDConfig.h 允許了這個功能(ZDO_BIND_UNBIND_REQUEST)。 你也可以使用ZDP_UnbindReq()用同樣的參數(shù)取消綁定記錄。

目標設備發(fā)回ZigBee Device Object Bind 或者Unbind Response信息,該信息是ZDO 代碼根據(jù)動作的狀態(tài),通過調(diào)用ZDApp_BindRsq()或者ZDApp_UnbindRsq()函數(shù)來分析和通知ZDApp.c 的。

對于綁定響應,從協(xié)調(diào)器返回的狀態(tài)將是ZDP_SUCCESS,ZDP_TABLE_FULL或者ZDP_NOT_SUPPORTED。

對于解除綁定響應,從協(xié)調(diào)器返回的狀態(tài)將是ZDP_SUCCESS,ZDP_NO_ENTRY或者ZDP_NOT_SUPPORTED。

4.1.1.2 ZigBee Device Object End Device Bind Request

這個機制是在指定的時間周期(timeout period) 內(nèi),通過按下選定設備上的按鈕或者類似的動作來綁定。協(xié)調(diào)器在指定的時間周期內(nèi),搜集終端設備的綁定請求信息,然后以配置ID(Profile ID) 和群ID(Cluster ID) 協(xié)議為基礎,創(chuàng)建一個綁定表記錄作為結(jié)果。默認的設備綁定時間周期(APS_DEFAULT_MAXBINDING_TIME)是16秒鐘(在nwk_globals.h中定義) 。但是將它添加到f8wConfig.cfg 中,則可以更改。

在“用戶指南”中的應用程序就是一個終端設備綁定的例子(在每個設備上按

,

下SW2按鍵) 。

你應該注意到,所有的例程都有處理關鍵事件的函數(shù)(例如:在TransmitApp.c 中的TransmitApp_HandleKeys()函數(shù)) 。這個函數(shù)調(diào)用ZDApp_SendEndDeviceBindReq()(在ZDApp.c 中) 。這個函數(shù)搜集所有終端節(jié)點的請求信息,然后調(diào)用ZDP_EndDeviceBindReq()函數(shù)將這些信息發(fā)送給協(xié)調(diào)器。

協(xié)調(diào)器調(diào)用函數(shù)ZDP_IncomingData()【ZDProfile.c 中】函數(shù)接收這些信息,然后再調(diào)用ZDApp_ProcessEndDeviceBindReq ()【ZDObject.c 中】函數(shù)分析這些信息,最后調(diào)用ZDApp_EndDeviceBindReqCB【ZDApp.c 中】函數(shù),這個函數(shù)再調(diào)用ZDO_MatchEndDeviceBind()【ZDObject.c 中】函數(shù)來處理這個請求。

當收到兩個匹配的終端設備綁定請求,協(xié)調(diào)器在請求設備中啟動創(chuàng)建源綁定記錄的進程。假設在ZDO 終端設備中發(fā)現(xiàn)了匹配的請求,協(xié)調(diào)器將執(zhí)行下面的步驟:

● 發(fā)送一個解除綁定請求給第一個設備。這個終端設備鎖定進程,這樣解

除綁定被首先發(fā)送來去掉一個已經(jīng)存在的綁定記錄。

● 等待ZDO 解除綁定的響應,如果響應的狀態(tài)是ZDP_NO_ENTRY,則發(fā)送

一個ZDO 綁定請求在源設備中創(chuàng)建一個綁定記錄。如果狀態(tài)是ZDP_SUCCESS,則繼續(xù)前進到第一個設備的群ID 。

● 等待ZDO 綁定響應,如果收到了,則繼續(xù)前進到第一個設備的下一個群

ID 。

● 當?shù)匾粋€設備完成后,用同樣的方法處理第二個設備。

● 當?shù)诙€設備也完成之后,發(fā)送ZDO 終端設備綁定請求消息給兩個設

備。

4.1.1.3 Device Application Binding Manager

另一種進入設備綁定記錄的方式是應用自己管理綁定表。這就意味著應用程序需要通過調(diào)用下面的綁定管理函數(shù)在本地進入并且刪除綁定記錄:

● bindAddEntry()——在綁定表中增加一個記錄

● bindRemoveEntry()——從綁定表中刪除一個記錄

● bindRomoveClusterIdFromList()——從一個存在的綁定表記錄中刪除一個

群ID

● bindAddClusterIdToList()——向一個已經(jīng)存在的綁定記錄中增加一個群ID ● bindRemoveDev()——刪除所有地址引用的記錄

● bindRemoveSrcDev()——刪除所有源地址引用的記錄

● bindUpdateAddr()——將記錄更新為另一個地址

● bindFindExisting()——查找一個綁定表記錄

● bindIsClusterIdInList()——在表記錄中檢查一個已經(jīng)存在的群ID

● bindNumBoundTo()——擁有相同地址(源或者目的) 的記錄的個數(shù)

● bindNumEntries()——表中記錄的個數(shù)

● bindCapacity()——最多允許的記錄個數(shù)

● bindWriteNV()——在NV 中更新表

,

4.1.2 配置源綁定(Configuring Source Binding)

為了在你的設備中使能源綁定在f8wConfig.cfg 文件中包含REFLECTOR 編譯標志。同時在f8wConfig.cfg 文件中查看配置項目NWK_MAX_BINDING_ENTRIES和MAX_BINDING_CLUSTER_IDS。NWK_MAX_BINDING_ENTRIES是限制綁定表中的記錄的最大個數(shù),MAX_BINDING_CLUSTER_IDS是每個綁定記錄的群ID 的最大個數(shù)。 綁定表在靜態(tài)RAM 中(未分配) ,因此綁定表中記錄的個數(shù),每條記錄中群ID 的個數(shù)都實際影響著使用RAM 的數(shù)量。每一條綁定記錄是8字節(jié)多(MAX_BINDING_CLUSTER_IDS * 2字節(jié)) 。除了綁定表使用的靜態(tài)RAM 的數(shù)量,綁定配置項目也影響地址管理器中的記錄的個數(shù)。

5. 路由(Routing)

5.1 概述(Overview)

A mesh network is described as a network in which the routing of messages is performed as a decentralized ,cooperative process involving many peer devices routing on each others’ behalf.

路由對與應用層來說是完全透明的。應用程序只需簡單的向下發(fā)送去往任何設備的數(shù)據(jù)到棧中,棧會負責尋找路徑。這種方法,應用程序不知道操作是在一個多跳的網(wǎng)絡當中的。

路由還能夠自愈ZigBee 網(wǎng)絡,如果某個無線連接斷開了,路由功能又能自動尋找一條新的路徑避開那個斷開的網(wǎng)絡連接。這就極大的提高了網(wǎng)絡的可靠性,同時也是ZigBee 網(wǎng)絡的一個關鍵特性。

5.2 路由協(xié)議(Routing Protocol)

ZigBee 執(zhí)行基于用于AODV 專用網(wǎng)絡的路由協(xié)議。簡化后用于傳感器網(wǎng)絡。ZigBee 路由協(xié)議有助于網(wǎng)絡環(huán)境有能力支持移動節(jié)點,連接失敗和數(shù)據(jù)包丟失。 當路由器從他自身的應用程序或者別的設備那里收到一個單點發(fā)送的數(shù)據(jù)包,則網(wǎng)絡層(NWK Layer)根據(jù)一下程序?qū)⑺^續(xù)傳遞下去。如果目標節(jié)點是它相鄰路由器中的一個,則數(shù)據(jù)包直接被傳送給目標設備。否則,路由器將要檢索它的路由表中與所要傳送的數(shù)據(jù)包的目標地址相符合的記錄。如果存在與目標地址相符合的活動路由記錄,則數(shù)據(jù)包將被發(fā)送到存儲在記錄中的下一級地址中去。如果沒有發(fā)現(xiàn)任何相關的路由記錄,則路由器發(fā)起路徑尋找,數(shù)據(jù)包存儲在緩沖區(qū)中知道路徑尋找結(jié)束。

ZigBee 終端節(jié)點不執(zhí)行任何路由功能。終端節(jié)點要向任何一個設備傳送數(shù)據(jù)包,它只需簡單的將數(shù)據(jù)向上發(fā)送給它的父親設備,由它的父親設備以它自己的名義執(zhí)行路由。同樣的,任何一個設備要給終端節(jié)點發(fā)送數(shù)據(jù),發(fā)起路由尋找,

,

終端節(jié)的的父親節(jié)點都已它的名義來回應。

注意ZigBee 地址分配方案使得對于任何一個目標設備,根據(jù)它的地址都可以得到一條路徑。在Z-Stack 中,如果萬一正常的路徑尋找過程不能啟動的話(通常由于缺少路由表空間) ,那么Z-Stack 擁有自動回退機制。

此外,在Z-Stack 中,執(zhí)行的路由已經(jīng)優(yōu)化了路由表記錄。通常,每一個目標設備都需要一條路由表記錄。但是,通過把一定父親節(jié)點記錄與其子所有子結(jié)點的記錄合并,這樣既可以優(yōu)化路徑也可以不喪失任何功能。

ZigBee 路由器,包括協(xié)調(diào)器執(zhí)行下面的路由函數(shù):(i)路徑發(fā)現(xiàn)和選擇;(ii)路徑保持維護;(iii)路徑期滿。

5.2.1 路徑的發(fā)現(xiàn)和選擇(Route Discovery and Selection)

路徑發(fā)現(xiàn)是網(wǎng)絡設備憑借網(wǎng)絡相互協(xié)作發(fā)現(xiàn)和建立路徑的一個過程。路由發(fā)現(xiàn)可以由任意一個路由設備發(fā)起,并且對于某個特定的目標設備一直執(zhí)行。路徑發(fā)現(xiàn)機制尋找源地址和目標地址之間的所有路徑,并且試圖選擇可能的最好的路徑。

路徑選擇就是選擇出可能的最小成本的路徑。每一個結(jié)點通常持有跟它所有鄰接點的“連接成本(link costs)”。通常,連接成本的典型函數(shù)是接收到的信號的強度。沿著路徑,求出所有連接的連接成本總和,便可以得到整個路徑的“路徑成本”。路由算法試圖尋找到擁有最小路徑成本的路徑。

路徑通過一系列的請求和回復數(shù)據(jù)包被發(fā)現(xiàn)。源設備通過向它的所有鄰接節(jié)點廣播一個路由請求數(shù)據(jù)包,來請求一個目標地址的路徑。當一個節(jié)點接收到RREQ 數(shù)據(jù)包,它依次轉(zhuǎn)發(fā)RREQ 數(shù)據(jù)包。但是在轉(zhuǎn)發(fā)之前,它要加上最新的連接成本,然后更新RREQ 數(shù)據(jù)包中的成本值。這樣,沿著所有它通過的連接,RREQ 數(shù)據(jù)包攜帶著連接成本的總和。這個過程一直持續(xù)到RREQ 數(shù)據(jù)包到達目標設備。通過不同的路由器,許多RREQ 副本都將到達目標設備。目標設備選擇最好的RREQ 數(shù)據(jù)包,然后發(fā)回一個路徑答復數(shù)據(jù)包(a Route Reply)RREP給源設備。

RREP 數(shù)據(jù)包是一個單點發(fā)送數(shù)據(jù)包,它沿著中間節(jié)點的相反路徑傳送直到它到達原來發(fā)送請求的節(jié)點為止。

一旦一條路徑被創(chuàng)建,數(shù)據(jù)包就可以發(fā)送了。當一個結(jié)點與它的下一級相鄰節(jié)點失去了連接(當它發(fā)送數(shù)據(jù)時,沒有收到MAC ACK),該節(jié)點向所有等待接收它的RREQ 數(shù)據(jù)包的節(jié)點發(fā)送一個RERR 數(shù)據(jù)包,將它的路徑設為無效。各個結(jié)點根據(jù)收到的數(shù)據(jù)包RREQ 、RREP 或者RERR 來更新它的路由表。

5.2.2 路徑保持維護(Route maintenance)

網(wǎng)狀網(wǎng)提供路徑維護和網(wǎng)絡自愈功能。中間節(jié)點沿著連接跟蹤傳送失敗,如果一個連接被認定是壞鏈,那么上游節(jié)點將針對所有使用這條連接的路徑啟動路徑修復。節(jié)點發(fā)起重新發(fā)現(xiàn)直到下一次數(shù)據(jù)包到達該節(jié)點,標志路徑修復完成。如果不能夠啟動路徑發(fā)現(xiàn)或者由于某種原因失敗了,節(jié)點則向數(shù)據(jù)包的源節(jié)點發(fā)送一個路徑錯誤包(RERR),它將負責啟動新路徑的發(fā)現(xiàn)。這兩種方法,路徑都自

,

動重建。

5.2.3 路徑期滿(Route expiry)

路由表為已經(jīng)建立連接路徑的節(jié)點維護路徑記錄。如果在一定的時間周期內(nèi),沒有數(shù)據(jù)通過沿著這條路徑發(fā)送,這條路徑將被表示為期滿。期滿的路徑一直保留到它所占用的空間要被使用為止。這樣,路徑在絕對不使用之前不會被刪除掉的。在配置文件f8wConfig.cfg 文件中配置自動路徑期滿時間。設置ROUTE_EXPIRY_TIME為期滿時間,單位為秒。如果設置為0,則表示關閉自動期滿功能。

5.3 表存儲(Table storage)

路由功能需要路由器保持維護一些表格。

5.3.1 路由表(Routing table)

每一個路由器包括協(xié)調(diào)器都包含一個路由表。設備在路由表中保存數(shù)據(jù)包參與路由所需的信息。每一條路由表記錄都包含有目的地址,下一級節(jié)點和連接狀態(tài)。所有的數(shù)據(jù)包都通過相鄰的一級節(jié)點發(fā)送到目的地址。同樣,為了回收路由表空間,可以終止路由表中的那些已經(jīng)無用的路徑記錄。

路由表的容量表明一個設備路由表擁有一個自由路由表記錄或者說它已經(jīng)有一個與目標地址相關的路由表記錄。在文件“f8wConfig.cfg ”文件中配置路由表的大小。將MAX_RTG_ENTRIES設置為表的大小(不能小于4) 。

5.3.2 路徑發(fā)現(xiàn)表(Route discovery table)

路由器設備致力于路徑發(fā)現(xiàn),保持維護路徑發(fā)現(xiàn)表。這個表用來保存路徑發(fā)現(xiàn)過程中的臨時信息。這些記錄只在路徑發(fā)現(xiàn)操作期間存在。一旦某個記錄到期,則它可以被另一個路徑發(fā)現(xiàn)使用。這個值決定了在一個網(wǎng)絡中,可以同時并發(fā)執(zhí)行的路徑發(fā)現(xiàn)的最大個數(shù)。這個可以在f8wConfig.cfg 文件中配置MAX_ RREQ_ENTRIES。

5.4 路徑設置快速參考(Routing Settings Quick

reference)

標簽: