Zigbee解析: NWK層作用

tanqiuwei發表於2013-12-11


在實際應用中,對MAC及下層的直接修改較少,因此直接看比較重要的NWK層。

首先看一下NWK層的通訊方式及支援的拓撲結構:

·    協調器的NWK層為網路中每一個裝置分配一個短地址。同時NWK層會限制資料幀傳送     的跳數(Hops),這個引數通常稱為Radius,即通訊半徑。另外,通訊機制分為三種:Broadcast,Multicast和Unicast。

o  廣播時,目的地址是0xffff,PAN ID也是0xffff;任何一個裝置的APS子層可以呼叫NWK介面來傳送一個廣播資料;廣播資料不需要ACK,所有廣播資料會被協調器和路由器記錄在一個叫BTT(Broadcast Transaction Table)的表中。

o  多播時,訊息傳送到網路中具有相同Group ID的節點,即同級節點。每個節點可以屬於多個不同的Group,同時會保留這種身份記錄在多播表中。多播有兩種模式:MemberMode和Nonmember Mode,前者多播由組成員傳送訊息,後者由非成員將訊息轉發到成員節點。在Zigbee中,多播只限於資料,對命令不進行多播。

·   除了上述基本模式,還有一種Many-to-One,即多個節點向單個節點傳送資料,非常適用於WSN。只不過是所有節點(包括協調器和路由器)向Sink節點傳送資料。

接下來,看一下Zigbee中NWK支援的兩種常用拓撲:

1.Hierarchical Topology(Tree)

·    Zigbee支援樹形拓撲(即Mesh網狀拓撲的一種),特別是提供了一種叫預設分散式地址分配的方式,可以為樹形拓撲結構中每一個節點單獨分配地址,分配地址時只需要知道樹的深度和最大孩子節點數即可。這種演算法會用到一個CSkip函式,引數d表示深度,其示意圖如下:

深圳市無線龍電子有限公司 徐霞0755-83690635-607

      2.  Mesh拓撲:這種拓撲允許節點自動選擇路由,因此可以自修復路由,更加健狀,但是需要更多自行處理。

 

再接下來,看一下NWK層最最重要的功能:Route,分為以下幾個部分

·             Route Discover:路由發現由協調器節點和路由器節點完成,它們會根據LQI(Link Quality Indicator)來評估包傳輸成功率。在這個過程中,會用到Routing Table,Routing Discovery Table及每個節點都有一個Neighbor Table(如下表)。此外,APL層可以呼叫NLME-Route-Discoery.request原語來請求NWK實現路由發現。如果RD請求只包含一個目的地址,那就是為Unicast通訊找路由;否則如果目的地址是一個16位的Group ID,則是多播尋路由;如果APL層沒有提供任何目的地址,那麼就是請求Many-to-one方式尋路由。對於廣播方式,不需要也不允許請求Routing Discovery。

深圳市無線龍電子有限公司 徐霞0755-83690635-607

深圳市無線龍電子有限公司 徐霞0755-83690635-607

·    Route Maintenance and Repair

最後,看一下NWK層提供的管理服務功能這一點對於理解組網過程十分重要。主要包括網路發現、網路形成等。

·    Network Discovery:由APL層呼叫,NWK層就會利用MAC層的通道掃描來發現是否存在其它網路,掃描完成後會向APL層返回相關的引數。

·    Network Formation(生成協調器):NWK層在收到APL的請求後,可以將一個節點設定為協調器。首先,在上一步的主動掃描後,會進行一個ED掃描,該請求是由NLME向MLME提出。根據ED掃描結果,NWK層會選擇一個Frequency Channel和一個PAN ID。通常協調器為設定0x0000作為 它自身的MAC地址。

·    Establishing the device as a router:由APL呼叫NWK層的NLME-START-ROUTER原語來完成。

·    Joining and Leaving a network:協調器和路由器的NWK層允許其它裝置通過請求MLME並設定macAssociationPermit=TRUE,來完成加入或者退出一個網路。當然,節點的高層可以呼叫NLME-JOIN原主來請求NWK層將節點加入到一個已經存在的網路;相反,應用層也可以呼叫NLME-LEAVE原語來離開一個網路。

·    Resetting the NWK Layer:由APL層呼叫NLME-RESET原語實現;

·    Synchronization:由NLME-SYNC原語實現,主要用於節點間同步或者從協調器或路由器提取資料。

NWK層資料幀(Frame)格式:

深圳市無線龍電子有限公司 徐霞0755-83690635-607

NWK層資料按型別分為Data和Command,格式如下:

深圳市無線龍電子有限公司 徐霞0755-83690635-607

 

其中,Command包括以下:

深圳市無線龍電子有限公司 徐霞0755-83690635-607

以下是每一種命令中,NWK Payload的格式:

深圳市無線龍電子有限公司 徐霞0755-83690635-607

我們據此來分析一下前面提到的,TI Packet Sniffer收到的每一個資料包中的NWK Payload內容:

深圳市無線龍電子有限公司 徐霞0755-83690635-607

根據上面看到的,該包是Link Status查詢包,這是Zigbee-PRO新增的命令,上面沒有這個包的格式,無法繼續分析,但是已經知道該包的含義。因此可以確定Collector路由器節點啟動後會週期性傳送NWK層的Link Status以測試鏈路層的狀態,該訊息的Radius是1。

相關文章