這一層是我最有興趣的,因為TI沒有提供原始碼,我們無法從source code level去得知精確的做法,只能由規格書與實驗中去驗證。但是這一層又很有趣,因為各種的組網都在這層控制,所以值得好好的了解。

 

這一層主要提供兩個服務,資料與管理。跟之前兩層一樣,有自己的預設值(constant) 與屬性(attribute) 記得,這層已經脫離802.15.4的規範,來到Zigbee標準的規範,所以預設值前面會掛 nwkc關鍵字,而屬性前面會掛nwk關鍵字。

資料由 資料進入點控制 NLDE (NWK Layer Data Entrity)

管理由 管里進入點控制 NLME (NWK Layer Menegement Entrity)

 

NWK層也管理一個訊息在整個網路內的傳播跳躍次數,這個叫半徑 (radius),若一個訊息的原始半徑為10,則每跳躍一次,這個值會減1。

 

通訊的方式大致上可以分為三種,

1. 廣播 (Broadcast): 所有device都會收到訊息。

2. 多重播送 (Multicast): 只有限定的一些群體會收到訊息。

3. 單一播送 (Unicast): 只有一台機器會收到訊息。

<廣播 Broadcast>

    每當device收到封包,他都會檢查一下封包內紀錄的目的地位址(destination address)是不是他,以此來判斷這是不是給他的訊息。根據IEEE 802.15.4規定,當要廣播時,要用短位址,也就16 bit那種,且目的地位只須為 0xFFFF。這樣所有的device都會接受其訊息。

 

由於廣播一次是給一群人,所以可不能大家都給一個認可回報(acknowledgment),這樣發送的人可能會瘋掉因為太多台,所以就有人發明了 被動式認可(passive acknowledgment)機制,這機制是說,當廣播的人發完,他就打開他的接收機,然後看看附近有沒有任何人轉播這個訊息,若有的話,那這個廣播訊息大概就成功了,要是沒有的話他就會再送一次。

再精確的說法,要了解每台機器內有一個表格用來記錄他曾經收到過那些broadcase,以及其發送位址,這個表格稱為BTT(broadcast transaction table),裡面的每一筆紀錄稱為BTR(broadcast transaction table)。規格書有規定每台router 要記路最後一筆的訊息在一個短暫的時間(nwkNetworkBroadcastDeliverTime)。所以當收到一筆廣播,他有責任再轉播一次在一個隨機的時間區間(nwkcMaxBroadcastJitter)內。所以這個步驟就變成,A廣播,B有收到,等到一個隨機時間,B因為剛剛有記下來,所以再廣播一次,被A收到了,因為A有收到別人的轉播,所以他就認為這次的訊息他有完成廣播了。那剛剛B的轉播,恰好又被C收到,C也等一個隨機的時間再轉播,剛好也被B收到。因為B有收到轉播,所以他就認為剛剛的訊息有轉播成功,就是用這種機制一個一個地把訊息傳出去。

 

<多重播送 Multicast>

    這個是要用來紙箱訊息送給某些特定群體,而不是所有人,在網路內的每一個群體(group)有一個ID (16 bit multicast group ID),在群體內的device稱為,成員(group member)。每台device可以隸屬於多個成員,他必須自己記錄這個群體成員的關西,紀錄在 多重播送表(multicast table, nwkGroupIDTable)。這個機制在使用時不是只有 成員 才可以用,非成員一樣可以做multicast。分為成員模式(member mode)與非成員模式(nonmember mode)。

在成員模式,multicast是由成員發起的,然後傳送給其他成員。在非成員模式,先假設路徑探索(route discovery)已經完成,所以來源機器知道怎樣送達目的機器,他會用unicast不斷的往下一站傳送,直到訊息打到目標群體的任一台機器。此後,目的位址就會被改成0xFFFF,也就是broadcast。一旦廣播出去,事情就如同上面講的發生,會被不斷的轉播,不管你是不是成員都可以收到,但是因為unicast可以限制重複轉播的次數,稱為 非成員半徑(nonmember radius),會記載一個轉播次數,當每次轉播就會減一,直到這個值為0,就停止轉播了。

<多對一通訊 Many-to-One Communication>

    就是有多台的router送訊息給一台機器,這台機器也稱為 sink。這個不知道合適的中文叫啥,下陷點? 我們還是稱呼 sink 比較傳神,如同洗手槽一樣,把所有的水吸到裡面。

<階層式拓樸 (Tree hierarchical topology)>

    階層式,也稱為樹狀拓樸,就跟一棵樹一樣,樹根是coordinator,旗下開枝散葉的都是router,所有的router(含coordinator)都可以接受end device的加入。這樣就成了父子關係,接受加入的roter稱為父親(parnet),加進來的人稱為兒子(child)。

對於路徑的計算,... 有好多數學,我還不是很了解,

 

累了,暫停

創作者介紹
創作者 oldmonkey的部落格 的頭像
oldmonkey

oldmonkey的部落格

oldmonkey 發表在 痞客邦 留言(0) 人氣( 641 )