網路探索與架構

在 GitHub 上查看來源

Thread 網路

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

  • 2 個位元組個人區域網路 ID (PAN ID)
  • 8 個位元組的 Extended Personal Area Network ID (XPAN ID)
  • 使用者可判讀的網路名稱

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

ID
PAN ID 0xBEEF
XPAN ID 0xBEEF1111CAFE2222
網路名稱 yourThreadCafe
主動掃描

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

  1. 裝置會在特定頻道上廣播 802.15.4 信標要求。
  2. 回傳時,範圍內的任何路由器或路由器適用終端裝置 (REED) 都會廣播含有其 Thread 網路 PAN ID、XPAN ID 和網路名稱的訊號。
  3. 裝置會針對每個管道重複上述兩個步驟。

當 Thread 裝置發現範圍內的所有網路後,可以連結至現有網路,或在未發現任何網路的情況下建立新網路。

Thread 會使用 Mesh Link Establishment (MLE) 通訊協定,設定連結並將網路相關資訊散布到 Thread 裝置。

在連結設定中,MLE 可用於:

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

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

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

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

建立新的網路

如果裝置選擇建立新的網路,就會選取最不繁忙的管道,以及其他網路未使用的 PAN ID,然後成為 Router,並選取自己為 Leader。這部裝置會將 MLE 廣告訊息傳送至其他 802.15.4 裝置,通知對方連線狀態,並回應其他執行主動掃描的 Thread 裝置發出的訊號要求。

加入現有網路

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

  1. 子路由器會將多點廣播的「Parent Request」傳送至目標網路中所有相鄰的路由器和 REED。
  2. 所有相鄰的 Router 和 REED (如果父項要求掃描遮罩包含 REED) 都會傳送父項回應,其中包含自身資訊。
  3. 孩子選擇家長裝置,並傳送孩子 ID 要求
  4. 上層傳送子項 ID 回應,確認連結建立。

1. 家長要求

父項請求是來自連結裝置的多播要求,用於在目標網路中找出鄰近的路由器和可使用路由器的終端裝置 (REED)。

OT MLE Attach Parent Request
家長要求訊息內容
眾數 說明連接裝置
挑戰 測試父項回應的即時性,以防範重播攻擊
掃描遮罩 將要求限制為僅限路由器,或路由器和 REED 皆可

2. 父項回應

父項回應是對父項要求的單播回應,可為連接裝置提供 Router 或 REED 的資訊。

OT MLE Attach Parent Response
家長回應訊息內容
版本 執行緒通訊協定版本
回應 家長要求驗證的副本
Link Frame 計數器 路由器/REED 上的 802.15.4 影格計數器
MLE 影格計數器 路由器/REED 上的 MLE 影格計數器
來源地址 路由器/REED 的 RLOC16
連結邊界 接收 Router/REED 的訊號品質
連線能力 說明 Router/REED 的連線層級
領導者資料 路由器/REED 領導者的相關資訊
挑戰 測試子項 ID 要求的時間準確性,以防範重送攻擊

3. 兒童 ID 要求

子裝置 ID 要求是從連結裝置 (子裝置) 傳送至 Router 或 REED (家長裝置) 的單播要求,目的是建立子裝置與家長裝置的連結。如果要求傳送至 REED,REED 會在接受要求前將自己升級為 Router

OT MLE 附加子項 ID 要求
兒童 ID 要求訊息內容
版本 執行緒通訊協定版本
回應 父項回應挑戰的副本
Link Frame 計數器 子項上的 802.15.4 影格計數器
MLE 影格計數器子項中的 MLE 影格計數器
眾數 說明子項
逾時 上層物件移除子項前的閒置時間長度
地址註冊 (僅限 MED 和 SED) 註冊 IPv6 位址

4. 子項 ID 回應

子項 ID 回應是來自上層的單播回應,會傳送至子項,以確認已建立子項-上層連結。

OT MLE Attach Child ID Response
兒童 ID 回覆訊息內容
來源地址 父項 RLOC16
Address16 子項的 RLOC16
領導者資料 父項領導者 (RLOC、分區 ID、分區權重) 的相關資訊
網路資料 Thread 網路相關資訊 (網格前置字串、位址自動設定、更具體的路徑)
路徑 (僅限 RED) 路由傳播
逾時 上層物件移除子項前的閒置時間長度
地址註冊 (僅限 MED 和 SED) 確認已註冊的地址

重點回顧

您學到的內容:

  • Thread 裝置對現有網路執行主動掃描
  • Thread 會使用 Mesh Link Establishment 設定連結,並散布網路裝置的相關資訊
  • MLE 廣告訊息會將裝置的網路和連結狀態通知其他 Thread 裝置
  • MLE 附加程序會建立子項與父項的連結

進行隨堂測驗

哪個 ID 不是用於識別 Thread 網路?
2 個位元組的個人區域網路 ID (PAN ID)。
答錯了。會話串網路的部分資訊會透過 PAN ID 識別。
8 個位元組的 Extended Personal Area Network ID (XPAN ID)。
答錯了。會話串網路的部分資訊會透過 XPAN ID 識別。
使用者可解讀的網路名稱。
答錯了。線程網路的識別方式,部分是透過人類可讀的網路名稱。
32 個半形字元的 SSID。
沒錯。與 802.11 WiFi 網路不同,Thread 網路 ID 不會使用 SSID。
家長要求的用途為何?
在目標網路中,尋找鄰近的路由器和符合路由器規範的終端裝置 (REED)。
沒錯。裝置會在嘗試連線至網路時發出父項要求。
宣告 Router 成為父項。
答錯了。路由器不會與其他網路裝置建立上層/子項關係。網路裝置會選取路由器成為子項。
要求將符合路由器資格的終端裝置升級為路由器。
答錯了。
家長要求使用哪種類型的地址?
單播
答錯了。
Anycast
答錯了。
多點傳播
答對了。
廣播訊息
答錯了。
裝置首次連上 Thread 網路時,其裝置分類為何?
子女 (終端裝置)
沒錯。加入 Thread 網路的裝置一開始會是該網路上的終端裝置。
FTD (完整 Thread 裝置)
答錯了。
REED (Router-Eligible End Device)
答錯了。