選取路由器

在 GitHub 上查看來源

連線主宰集

OT 連線主宰集
Connected Dominating Set 範例

路由器必須形成連線主導集 (CDS),也就是:

  1. 任何兩部路由器之間都有路由器專用路徑。
  2. 只要 Thread 網路中的任何路由器完全位於路由器組內,就能連上任何其他路由器。
  3. Thread 網路中的每個終端裝置都會直接連線至路由器。

分散式演算法會維護 CDS,確保備援機制達到最低程度。每部裝置一開始都會以終端裝置 (子項) 的形式連結至網路。隨著 Thread 網路狀態變更,演算法會新增或移除路由器,以維護 CDS。

Thread 會將路由器新增至以下項目:

  • 如果網路低於路由器的 16 個門檻,請增加涵蓋範圍
  • 提高路徑多樣性
  • 維持最低冗餘程度
  • 擴大連線範圍,支援更多兒童

Thread 會移除 Router,以便:

  • 將轉送狀態減少至 32 個路由器的最高上限
  • 視需要在網路的其他部分允許新的路由器

升級至路由器

連線至 Thread 網路後,子裝置可能會選擇成為路由器。在啟動 MLE 連結要求程序之前,子節點會傳送位址索取訊息給領導節點,要求取得路由器 ID。如果領導者接受,則會回傳路由器 ID,子項也會將自己升級為路由器。

接著,MLE 連結要求程序會用於與鄰近的路由器建立雙向路由器連結。

  1. 新路由器會向鄰近的路由器傳送多播連結要求
  2. 路由器會回應「Link Accept and Request」訊息。
  3. 新路由器會以單播 Link Accept 回應每個路由器,以建立路由器-路由器連結。

連結要求是路由器向 Thread 網路中的所有其他路由器提出的要求。裝置首次成為路由器時,會將多重廣播連結要求傳送至 ff02::2。之後,透過 MLE 廣告發現其他路由器後,裝置會傳送單播連結要求。

OT MLE 連結要求
連結要求訊息內容
版本 執行緒通訊協定版本
挑戰 測試 Link Response 的即時性,以防範重播攻擊
來源地址 寄件者的 RLOC16
領導者資料 路由器領袖的相關資訊,儲存在傳送端 (RLOC、分區 ID、分區權重)

「連結接受和要求」是連結接受和連結要求訊息的組合。執行緒會在 MLE 連結要求程序中使用這項最佳化功能,將訊息數量從四個減少為三個。

OT MLE 連結接受和要求

「Link Accept」是對鄰近路由器連結要求的單播回應,該要求會提供自身資訊,並接受鄰近路由器的連結。

OT MLE Link Accept
連結接受訊息內容
版本 執行緒通訊協定版本
回應 測試 Link Response 的即時性,以防範重播攻擊
Link Frame 計數器 802.15.4 傳送端的 Frame Counter
MLE 影格計數器 傳送端的 MLE 影格計數器
來源地址 寄件者的 RLOC16
領導者資料 路由器領袖的相關資訊,儲存在傳送端 (RLOC、分區 ID、分區權重)

降級至 REED

當 Router 降級為 REED 時,其 Router-Router 連結會中斷,裝置會啟動 MLE Attach 程序,建立子裝置與父裝置的連結。

如要進一步瞭解 MLE 附加程序,請參閱「加入現有網路」。

在某些情況下,您可能需要建立單向接收連結。

路由器重設後,鄰近的路由器可能仍與重設的路由器有有效的接收連結。在這種情況下,重新設定的路由器會傳送連結要求訊息,重新建立路由器-路由器連結。

終端裝置也可能會想與鄰近的非父項路由器建立接收連結,以提升多播的可靠性。我們會在討論多播路由時進一步說明這一點。

重點回顧

您學到的內容:

  • Thread 網路中的路由器必須形成連線主導集 (CDS)
  • Thread 裝置會升級為路由器,或降級為終端裝置,以便維護 CDS
  • MLE 連結要求程序用於建立路由器-路由器連結

進行隨堂測驗

下列哪些規則不會由連線主導集 (CDS) 強制執行?
任何兩部路由器之間都有路由器專用路徑。
答錯了。
只要 Thread 網路中的任何路由器都位於路由器組合內,就能連上任何其他路由器。
答錯了。
Thread 網路中的每個終端裝置都會直接連線至路由器。
答錯了。
Thread 網路中只有一個路由器可以是邊界路由器。
沒錯。Thread 網路可能有多個邊界路由器。
為什麼路由器可能會從 Thread 網路中移除?
將轉送狀態減少至 32 個 Router 以下。
沒錯。Thread 網路會盡力維持最佳的路由器數量。任何 Thread 網路最多可有 32 個路由器。
釋出管道。
答錯了。路由器數量與管道使用率或容量無關。
允許在必要時,在網路的其他部分選出新的 Router。
沒錯。減少 Thread 網路某部分的有效路由器數量,可提高網路在其他地方提升路由容量的能力。
在嘗試成為路由器的 REED 能夠與其他路由器建立直接連結之前,必須先發生什麼事?
REED 必須向網路領導者傳送 AddressSolicit 訊息。
答對了。
領導者必須將 Router ID 授予 REED。
沒錯。如果沒有 Router ID,REED 仍會是子裝置。
REED 必須傳送 MLE 連結要求。
答錯了。MLE 連結要求是指裝置成為路由器後,如何建立與其他路由器的連結。
下列哪個敘述正確描述路由器降級時會發生的情況?
裝置會自動保留在網路上,但以子裝置 (REED) 的形式存在。
答錯了。路由器降級時,需要執行更多步驟。
裝置必須啟動 MLE 附加程序,才能建立與網路的新連線。
沒錯。從路由器降級至 REED 的裝置會中斷連線,並必須重新協商與網路的連線。
建立路由器-路由器連結的程序為何?
MLE 連結要求程序。
答對了。
連結接受和要求程序。
答錯了。並沒有所謂的連結接受和要求程序。 路由器會在 MLE 連結要求程序中,傳送連結接受和要求訊息,以回應連結要求訊息。
MLE 附加程序。
答錯了。MLE 附加程序是裝置加入現有 Thread 網路的程序。