[ IoT ] OpenThread - Network Discovery

OpenThread - Network Discovery

內容

  • Thread 網路
  • Mesh Link Establishment ( MLE )
  • 建立新的網路
  • 加入到存在的網路

Thread 網路

資料來源: openthread.io

  • 當建立一個新的 Thread 網路或搜尋加入到存在的網路時,Thread 裝置會掃描範圍內的 802.15.4 網路並進行下列的動作:
    • ① 裝置在特定的通道 ( Channel ) 發送一個 802.15.4 的 Beacon 請求
    • ② 在範圍內的 Routers 或 Router Eligible End Devices ( REEDs ) 廣播一個 Beacon,其內容包含 Thread 網路的 PAN IDXPAN ID網路名稱
    • ③ 裝置在每個通道 ( Channel ) 重複上述兩個動作
  • 一旦 Thread 裝置已發覺完範圍內的所有網路時
    • 如果有網路存在,則裝置能加入到存在的網路
    • 如果沒有網路被發覺時,則可以建立一個新的網路

Mesh Link Establishment ( MLE )

  • Thread 使用 Mesh Link Establishment ( MLE ) 協定 ( protocol ) 來配置鏈接並向 Thread 裝置傳播有關網路的資訊
  • 用途
    • 發覺相鄰裝置的連結
    • 確定到相鄰裝置的連結品量
    • 建立與相鄰裝置間的鏈接
    • 與對等方協商連結的參數( 如:device type、frame counters、timeout )
  • Mesh Link Establishment ( MLE ) 傳播下列資訊給裝置以建立連結
    • Leader data ( Leader RLOC、Partition ID、Partition weight )
    • Network data ( on-mesh prefixes、address autoconfiguration、more-specific routes )
    • Route propagation
  • 補充說明
    • 在 Thread 網路中的路由傳播相似於 Routing Information Protocol ( RIP ),是一種距離向量路由協定 ( distance-vector routing protocol )
    • Mesh Link Establishment ( MLE ) 只在 Thread 裝置經由 Thread Commissioning 時獲得 Thread 網路憑證

建立新的網路

  • 如果裝置選擇建立一個新的網路,裝置選擇最少的忙錄通道與 PAN ID 未被其他網路所使用,隨後變為路由角色與推選自己成為 Leader
  • 此裝置傳送 Mesh Link Establishment ( MLE ) 廣告訊息給其他 802.15.4 裝置以通知連結狀態
  • 其他 Thread 裝置執行主動掃描以回覆 Beacon 請求

加入到存在的網路

  • 如果裝置選擇加入到存在的網路時,它透過 Thread Commissioning 時,以它的 ChannelPAN IDXPAN IDNetwork Name 來匹配目標網路,隨後透過 MLE Attach 程序來做為 End Device ( Child ),此程序使用 Child-Parent 連結。
  • 步驟

    • 在目標網路中 Child 透過廣播的方式傳送 Parent Request 給相鄰的 Routers 與 REEDs
    • Parent Request

      • Parent Request 是從附加裝置所發送的一個廣播 ( multicast ) 請求,目的是用來發覺目標網路中相鄰的 Routers 與 Router Eligible End Devices ( REEDs )

      資料來源: openthread.io

      • 訊息內容

  • 所有相鄰的 Routers 與 REEDs ( 如果 Parent Request Scan Mask 包含 REEDs ) 傳送擁有自身資訊的 Parent Responses

    • Parent Response

      • Parent Response 是一種單播 ( unicast ) 回覆給 Parent Request 以提供有關 Router 或 REED 的資訊

      資料來源: openthread.io

      • 訊息內容

  • Child 選擇一個 Parent 裝置與傳送 Child ID Request 給此 Parent 裝置

    • Child ID Request

      • Child ID Request 是一種來自附加裝置 ( Child ) 的單播 ( unicast ) 請求,他傳送給 Router 或 REED ( Parent ) 以建立 Child-Parent 連接
      • 如果請求是傳送給 REED 節點的話,REED 節點在接受請求前會自我升級為 Router 角色

      資料來源: openthread.io

      • 訊息內容

  • Parent 傳送 Child ID Response 以確認連接建立

    • Child ID Response

      • Child ID Response 是一種來自 Parent 的單播 ( unicast ) 請求, Parent 傳送給 Child 確認 Child-Parent 連接被建立

      資料來源: openthread.io

      • 訊息內容

  • 補充說明
    • 每個裝置,無論是否擁有路由能力,最初都以 End Device ( Child ) 角色連接到 Thread 網絡

Reference
GitHub
List of blogs
ALL RIGHTS RESERVED. COPYRIGHT © 2018. Designed and Coded by Makee.io