第三章 研究方法
3.2 系統架構
3.2.3 IPv6 Auto-Configuration
未來 IoT 中的設備會逐漸增長,要透過唯一的定址方式,令設備連接上網際網路衍 生各種多樣化的 IoT 應用,為保持設備與網路之間的互通性,IPv6 被視為目前應被廣 泛採用接受之解決方式,而且可提供2128個位址並滿足 IoT 中大量位址的需求,因此,
27
本文探討 IPv6 所提供的主要三種定址方式,並選擇適合於本系統之做法。IPv6 address 三種主要的類型,本系統採用 Link-local address 與 Global Unique address,Link-local
address 為 Single link 所設計,且會自動組成該位址。若本系統所設計之 Gateway 故障,
且無法提供 Prefix 之服務,Node 也可組成 IPv6 位址,但無法至網際網路上傳遞封包。
本系統令 Node 組成 Global Unique address,因此,可透過 CoAP 協定讓使用者取得感 測服務,此外,Gateway 的 IP 為管理者所配給,Node 則由 SLAAC 機制組成 IPv6 address。
以下將說明 Link-local address 與 Global Unique address 組成的過程。
3.2.3.1 IID 組成
IPv6 的位址由 64 bit 的 subnet prefix 與 64 bit 的 interface identifier (IID)組成[20],
其產生 IID 過程,如 Figure 16 所示,首先,Gateway 會利用 Bluetooth Dongle 搜尋所管 轄範圍內的 BLE Node,BLE Node 在未配對的情況下會一直主動發送藍牙封包給周圍 設備,Gateway 收到 Node 傳送的 48bitPublic Bluetooth Device Address。Gateway 上的 Bluetooth Dongle 與 BLE Node 進行配對之後,Node 會自行將 Public Bluetooth Device Address 轉換為 EUI-64 位址[43],執行填充的動作,把 0xFF 與 0xFE 放入 Bluetooth Device address 中間的位址。IPv6 Link-local address 為 128bit,並分為兩個部分,Prefix 64 bit 加上 IID 64bit 組成。因此,須將 EUI-64 位址轉換為 IID 的格式,並將位於 Figure 16 黃框處所示之 u 位置(universal/local bit 設為 1 表示 universal scope[20]),在第一個 byte(橘 框處)取得 0x02[26]。
28
Figure 16: IID 組成
3.2.3.2 Global Unique address 組成
128 bit Global Unique address,包含 64 bit Prefix 與 64bit IID 組成[20]。在 Linux Kernel 3.17.0-rc2 版本中開始支援以藍牙 L2CAP 為導向之 6LoWPAN 頻道,如 Figure 16 所示,
Node 要取得 IPv6 address 前,Gateway 與 BLE Node 之間必須建立 L2CAP Channel 連接 (於 4.1 節說明建立流程),才可利用 IPv6 提供之 Stateful Auto-Configuration 或 Stateless Address Auto-Configuration(SLAAC)[21]機制,自動取得 Global address。其中,Stateful 利用 DHCPv6 Server 取得 Prefix,由於 Stateful 需要額外維護一部管理設備配給之 IPv6 訊息的 DHCPv6 Server[44]。SLAAC 利用路由器給予 Prefix 之方式,可讓網管人員提供 相當大的便利性,若需要更改路由器發送之 Prefix,其他設備取得之 IPv6 位址則會自 動覆蓋舊的位址資訊[44],主動更新 IPv6 位址,因此,在本研究中利用 SLAAC 機制令 Gateway 發送自身的 Prefix 給 Node。SLAAC 機制可讓 Gateway 所傳遞的 Router Advertisement(RA)[45]訊息成為 IPv6 的 Prefix,在 Linux 中可利用 Router Advertisement
29
Daemon(RADVD)[46],RADVD 會先聆聽是否有收到 Router Solicitation(RS)訊息,需先 配置 RADVD 的設定,包含 AdvAutonomous 與 AdvSendAdvert ,其一,AdvAutonomous 為 RA 訊息中的一部分,配置 on 代表設備在收到 RA 訊息後,可將此 Prefix 組成 Global
address,其二,AdvSendAdvert 為令此 Gateway 定期的發送 RA 訊息,配置完成後存檔 並重新啟動 RADVD 功能即會生效改動的部分功能,且在 bt0 介面中會開始廣播 IPv6
Prefix。本系統 Node 取得 Global address 流程,如 Figure 17 所示,Gateway 以 L2CAP 連接上的 Node,Node 可主動發送 RS 訊息,Gateway 會回應包含 Prefix 的 RA 訊息,
Node 在收到 RA 訊息後可自主取得 Global address,與 3.2.3.1 節產生 Link-local address 方法相似,取得 Bluetooth Device address 填充為 EUI-64 格式,再轉成 64 bit IID,加上 先前取得的 Gateway Prefix,即形成 IPv6 Global address。
Figure 17: Global Address 組成