研究Zigbee的protocol stack時,除了一個好的模擬版,可幫助你容易的理解書上所學,同時,有一台sniffer (封包監聽)更可以讓你實時的體會到程式碼的運行。由於兩台device中間的傳輸是無線環境,所以無法像往常的單晶片程式一樣,拉LED 印message來debug。事情怪異時,唯有公正的第三方(sniffer)探測到的訊息可以解答。我買的是這台,
他有一個SMA的天線接口,也送了一個鞭刑天線,另一邊是USB接頭,很簡單。上面有一個燈,亮了 代表有電。也有一個reset鈕,你覺得怪怪時,就按一下看看吧 代表有電。也有一個reset鈕,你覺得怪怪時,就按一下看看吧!
軟體方面,要去TI的官網抓
http://www.ti.com/tool/packet-sniffer
我這邊的最新版是 2.17.3
oldmonkey 發表在
痞客邦
留言(0)
人氣()
無線電傳輸的資料,最怕就是被別人竊取,甚至是偽造再重新發送。防止竊取的做法就是資料加密(Encryption),而防止別人假造資料的方式就是認證(Authentication)。
<加密(Encryption)>
Zigbee支援先進加密標準 AES (Advanced Encryption Standard),AES是DES的下一代演算法,用來保護下一個世代(30年)的資料安全。AES屬於對稱式編加密的一種,所謂對稱式加密就是說要加密與解密適用同一個密碼。你拿到密碼你就可以用來做加密以及解密,你若要換密碼,加密端與解密端需要一併更換。他的流程是這樣的,假設你有一段訊息,稱為明文(plaintext),你想要用一個金鑰(key),把明文加密成,密文(ciphertext)。然後用密文在無線電上傳輸,這樣即使截取到的人,截到的也是密文,看不懂內容,這樣就達到加密保護的作用了。收到密文的一端,再用一樣的金鑰,把密文解成明文,這樣就完成整個通訊程序了。由此可以看的出來,金鑰,是最重要的事情,一旦流出去就毀了,所有的秘密也都守在這一個點上,你也可以說,當金鑰越長安全性也就越高,目前Zigbee只支援到AES 128,也就是每次加密的單位為128 bit,我猜是由於移動設備的運算能力關係,才沒有用目前安全性較高的AES256。
整個的操作上使用兩種key,
1. link key: 在兩台device間分享。
oldmonkey 發表在
痞客邦
留言(0)
人氣()
這一層是最上層了,包含三種東西
1. 應用程式支援 APS (Application Support)
2. 設備物件 ZDO (Zigbee Device Object)
3. 應用程式框架 AF (Application Framefork)
這一層一樣有預設值(constant)以及屬性(attribute),如同其他層一樣,預設值前面有apsc,屬性前面有aps關鍵字。這些東西存在APS IB內,而APS IB (APS Information Base) 屬於上面講的APS的管轄範圍。
oldmonkey 發表在
痞客邦
留言(0)
人氣()
這一層是我最有興趣的,因為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。
oldmonkey 發表在
痞客邦
留言(0)
人氣()
MAC層是IEEE 802.15.4定義的最後一層了,往上的層並沒有定義,所以各種網路都有可能,因為這裡是講ZigBee,所以我們可以假設上一層是網路層(NWK)。
再來要講第二個ZigBee 可以省點的秘密,第一個秘密是 無信標網路
<超級框架> Superframe (大陸人稱為 超禎,我超不習慣,所以以後還是稱為Superframe)
先來看一張圖,從規格書截出來的
在有信標網路中,可以由 保證時槽(GTS)存在,這個非常有用特別適用於需要低延遲的傳輸。而Superframe,就夾在兩次的信標(Beacon)之間。也因著這樣,Superfram只存在有信標的網路中。從上而下看出,可整個完整的週期(beacon interval) 可以分成兩種,活動(active)的週期與非活動(inactive)的週期,而整個活動周期,又分為兩種
oldmonkey 發表在
痞客邦
留言(0)
人氣()
服務就是要提供給別人呼叫的,ZigBee中遵循一套原生的服務概念(concept of primitive),以此來描述互動的關西。在層與層之間,是透過呼叫含式或是傳送訊的方式做溝通,稱為 原生(primitive)。
這個總共有四種,分成兩組看,第一組是 要求(request)與確認(confirm),2u4-4y 要求(request)與確認(confirm),第二組是通知(indicate)與回應(response)。
在第一組,通常是由上一層作要求,也就是由MAC層 要求(request)PHY層的資料傳輸,若傳輸順利,PHY要要回送一個確認(confirm)的訊息給MAC層。
第二組,通常是由下層回報給上層,例如PHY層要是收到資料,就要通知(indicate)給Mac層知道,MAC層收到之後,要回應(response)給PHY層。只是這個回應,不是必需的,要看該個通知,有沒有要求對方要回應,這個可以從sniffer的封包上面看到真實的情形。
oldmonkey 發表在
痞客邦
留言(0)
人氣()
實體層,就是最靠近硬體那一層,所以首先先來知道一下,無線傳輸最重要的,頻率到底是多少,我們買模組的時候,大概都有印象這是2.4GHz的模組,但是精確的頻率到底是多少?
在IEEE 802.15.4的規範中,通道(channel)是分頁的,定義了通道頁(Channel Page) 從0 ~31,但是目前為止只有通道0,1,2 有被定義,其他的3~31 都是預留給未來使用的。每個通道頁內部都分割成27個頻道(channel),頻道編號(channel number)從0~26。
以我們常見的通道頁0,又切成四個頻帶(band),他的頻道編號是這樣的
頻道0: 868MHz (BPSK調變)
頻道1~10: 915 MHz (BPSK調變)
oldmonkey 發表在
痞客邦
留言(0)
人氣()
我的資訊來源通常是IEEE 802.15.4 規格書,再來就是ZigBee 聯盟
http://www.zigbee.org/Standards/Downloads.aspx
根據這個資訊,可以做的事情很多啊,到今天為止總計有
大樓自動化 (ZIGBEE BUILDING AUTOMATION)
oldmonkey 發表在
痞客邦
留言(0)
人氣()
Zigbee有兩個主要的安全性議題
<資料機密 (data confidentiality)>
就是怕傳輸中的資料會被別人偷走或是洩漏,這邊的做法很簡單,就是把傳輸的資料加密就好,ZigBee支援AES (Advanced Encrypion Standard)加密法。
<資料鑑定 (data authentication)>
這個就是怕別人竄改,偽造資料,這邊的解法是用訊息完整碼MIC (Message integrity code)來解決。
oldmonkey 發表在
痞客邦
留言(0)
人氣()
往後會一個一個仔細地介紹每一層的內容,在此先來個總覽吧!
ZigBee的封包跟我們之前學的TCP/IP封包差不多,都是一層一層的包上去,收到之後在一層一層的脫掉外衣解出訊息,一樣的大腸包小腸的方式。
我們總共要認識的有四層,從下到上分別是
實體層 PHY
媒體層 MAC
oldmonkey 發表在
痞客邦
留言(0)
人氣()
在IEEE 802.15.4 定義了兩種定址法:
- 16 bits 短定址
- 64 bits 延伸定址
這個在開始組網時,可以設定要用哪一種,等到晚一點看到source code時,自然可以看到這個設定。使用短定址時,好處是縮短訊息的長度,因為這種未址的起訖充斥在每個訊息中,所以使用短定址可以明顯地縮短長度。這種短定址的方式缺點是只能用於同一個網路。要是你打算要用於兩個不相關網路的通訊就要使用64 bits的延伸定址了。
使用64 bits延伸定址有多大呢?理論上有2的64次方,這個好大,非常大,比IPv6的定址範圍還多,所以認知上可以認為是 沒有限制device數量了。
oldmonkey 發表在
痞客邦
留言(0)
人氣()
再IEEE 802.15.4的規範內,資料傳輸有三種
1. Device –> Coordinator
2. Coordinator –> Device
3. Device -> Device (也稱為peer-to-peer transfer)
第一種,Device傳輸到coordinator
oldmonkey 發表在
痞客邦
留言(0)
人氣()