網路探索與架構

在 GitHub 上查看來源

Thread 網路

Thread 網路會透過三種專屬 ID 識別:

  • 2 位元組的個人區域網路 ID (PAN ID)
  • 8 位元組的擴充個人區域網路 ID (XPAN ID)
  • 使用者容易理解的網路名稱

舉例來說,Thread 網路可能會有下列 ID:

ID
PAN ID 0xBEEF
XPAN ID 0xBEEF1111CAFE2222
網路名稱 yourThreadCafe
OT Active Scan

建立新的 Thread 網路或搜尋要加入的現有網路時,Thread 裝置會在無線電範圍內主動掃描 802.15.4 網路:

  1. 裝置會在特定頻道上廣播 802.15.4 Beacon Request。
  2. 範圍內的任何擴充器相容裝置 (ECD) 會廣播信標,其中包含 Thread 網路 PAN ID、XPAN ID 和網路名稱。
  3. 裝置會針對每個頻道重複前兩個步驟。

Thread 裝置偵測到範圍內的所有網路後,可以附加至現有網路,如果沒有偵測到任何網路,則可以建立新網路。

Thread 會使用網狀網路連結建立 (MLE) 通訊協定設定連結,並將網路相關資訊散布至 Thread 裝置。

在連結設定中,MLE 用於:

  • 探索鄰近裝置的連結
  • 判斷與鄰近裝置的連結品質
  • 建立與鄰近裝置的連結
  • 與對等互連裝置協商連結參數 (裝置類型、影格計數器、逾時)

MLE 會將下列類型的資訊散布給想要建立連結的裝置:

  • 領導者資料 (領導者 RLOC、分割區 ID、分割區權重)
  • 網路資料 (網路上前置字元、位址自動設定、更具體的路徑)
  • 路徑傳播

Thread 中的路徑傳播方式與距離向量路由協定 (RIP) 類似。

建立新的網路

如果裝置選擇建立新網路,會選取最不忙碌的頻道和未被其他網路使用的 PAN ID,然後成為網狀延伸器,並選取自己為領導者。這部裝置會將 MLE 廣告訊息傳送給其他 802.15.4 裝置,告知裝置的連結狀態,並回應執行主動掃描的其他 Thread 裝置傳送的 Beacon 要求。

加入現有網路

如果裝置選擇加入現有網路,會透過 Thread 委任程序設定通道、PAN ID、XPAN ID 和網路名稱,與目標網路相符,然後經過 MLE 附加程序,以子項 (終端裝置) 附加。這個程序適用於子項與父項的連結。

  1. 子項會將多點播送「家長要求」傳送至目標網路中所有可擴充的鄰近裝置。
  2. 所有鄰近的 Mesh 擴充器 (以及待機 ECD,如果父項要求掃描遮罩包含待機 ECD) 都會傳送父項回應,其中包含自身的資訊。
  3. 孩子選擇家長裝置,並傳送 Child ID Request 給該裝置。
  4. 家長傳送子 ID 回應,確認連結建立。

1. 上層要求

上層要求是來自附加裝置的多點播送要求,用於在目標網路中探索鄰近的擴充器相容裝置。

OT MLE Attach Parent Request
家長要求訊息內容
眾數 說明附加裝置
挑戰 測試父項回應的即時性,防範重送攻擊
掃描遮蓋 將要求限制為僅限 Mesh 擴充器,或所有支援擴充器的裝置

2. 家長回覆

父項回應是父項要求的單點播送回應,可向附加裝置提供支援擴充器的裝置相關資訊。

OT MLE Attach Parent Response
家長回覆訊息內容
版本 Thread 通訊協定版本
回應 家長要求驗證碼副本
連結影格計數器 支援擴充功能的裝置上的 802.15.4 訊框計數器
MLE 影格計數器 支援擴充器的裝置上的 MLE 影格計數器
來源 位址 支援擴充功能的裝置 RLOC16
連結 邊界 接收可做為訊號中繼器的裝置訊號品質
連線能力 說明可擴充裝置的連線等級
領導者 資料 可做為擴充器裝置領導者的裝置相關資訊
挑戰 測試子項 ID 要求是否及時,以防範重送攻擊

3. 子項 ID 要求

子項 ID 要求是來自附加裝置 (子項) 的單點傳播要求,會傳送至具備擴充功能的裝置 (父項),目的是建立子項與父項的連結。如果要求傳送至待機的支援擴充裝置,該裝置會先升級為網狀擴充裝置,再接受要求。

OT MLE Attach Child ID Request
子項 ID 要求訊息內容
版本 Thread 通訊協定版本
回應 家長回覆挑戰副本
連結影格計數器 子項的 802.15.4 影格計數器
MLE 影格計數器子項的 MLE 影格計數器
眾數 描述子項
逾時 家長移除孩子前的閒置時間長度
地址 註冊 (僅限 MED 和 SED) 註冊 IPv6 位址

4. 子項 ID 回應

子項 ID 回應是上層傳送給子項的單點傳播回應,用於確認已建立子項與上層的連結。

OT MLE Attach Child ID Response
子項 ID 回覆訊息內容
來源地址 上層 RLOC16
Address16 子項 RLOC16
領導者資料 父項領導者資訊 (RLOC、分割區 ID、分割區權重)
網路資料 Thread 網路的相關資訊 (網路上前置字串、位址自動設定、更具體的路徑)
路線 (僅限待機 ECD) 路徑傳播
逾時 家長移除孩子前的閒置時間長度
地址登記 (僅限 MED 和 SED) 確認登記地址

重點回顧

學到的內容:

  • Thread 裝置會主動掃描現有網路
  • Thread 會使用網狀網路連結建立功能設定連結,並散布網路裝置的相關資訊
  • MLE 廣告訊息會將裝置的網路和連結狀態告知其他 Thread 裝置
  • MLE Attach 程序會建立子項與父項的連結

隨堂測驗

下列哪一個 ID「不會」用來識別 Thread 網路?
2 位元組的個人區域網路 ID (PAN ID)。
答錯了。部分 Thread 網路是透過 PAN ID 識別。
8 位元組的擴充個人區域網路 ID (XPAN ID)。
答錯了。部分 Thread 網路是透過 XPAN ID 識別。
使用者可判讀的網路名稱。
答錯了。Thread 網路的部分識別方式是透過使用者可判讀的網路名稱。
32 個字元的 SSID。
答對了。與 802.11 Wi-Fi 網路不同,Thread 網路 ID 不會使用 SSID。
父項要求有何用途?
在目標網路中探索鄰近的擴充器相容裝置。
答對了。裝置要連上網路時,會發出父項要求。
宣布支援擴充功能的裝置即將成為父項。
答錯了。網狀延伸器不會與其他網路裝置建立上層/下層關係,網路裝置會選取「可做為延伸裝置的裝置」做為上層裝置。
如要要求將支援擴充功能的裝置升級為網狀延伸器,請按照下列步驟操作:
答錯了。
家長要求使用哪種地址?
單點傳播
答錯了。
任意播送
答錯了。
多點傳播
答對了。
廣播訊息
答錯了。
裝置首次連上 Thread 網路時,裝置分類為何?
子裝置 (終端裝置)
答對了。加入 Thread 網路的裝置一開始一定是該網路上的終端裝置。
FTD (完整 Thread 裝置)
答錯了。
網狀信號延伸器
答錯了。