Thread Network Data 包含 Border 路由器和 Thread 網路可用的其他伺服器相關資訊。邊界為路由器的路由器和裝置,皆會登錄其資訊。領先者會在 Thread 網路資料中收集及建構這類資訊,並將資訊散佈至 Thread 網路中的所有裝置。
邊界路由器可能會註冊指派給 Thread 網路的前置字串,以及提供路徑的前置字串。服務可以註冊與服務本身有關的任何資訊。
邊界路由器和服務資訊可以是穩定版或臨時服務。穩定的執行緒網路資料。發布資料會發布到所有裝置,包括睡眠結束裝置 (SED)。暫存網路資料會分散至所有節點,但 SED 除外。
網路資料指令
如需 netdata
指令的清單,請輸入 help
:
netdata help
help
full
length
maxlength
publish
register
show
steeringdata
unpublish
Done
full
指令
full
指令會回報標記狀態,或重新回報標記追蹤作業是否已叫用「淨資料完整」回呼。
這個指令需要 OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL。
length
和 maxlength
指令
length
指令會取得最新的執行緒網路資料長度,以位元組為單位。maxlength
指令會取得觀察到的長度上限,或重設追蹤的長度上限。
publish
指令
網路資料發布者會提供一項機制來監控網路資料,以及管理新增或移除項目的時機,藉此限制 Thread 網路資料中的類似 Service 和前置字串 (On-Mesh 前置字串或外部路徑) 項目數量。
發布商要求使用 OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE
。
形成網路並設定前置字串
產生新的網路設定。
dataset init new
Done顯示網路設定。
dataset
Active Timestamp: 1 Channel: 13 Channel Mask: 0x07fff800 Ext PAN ID: d63e8e3e495ebbc3 Mesh Local Prefix: fd3d:b50b:f96d:722d::/64 Network Key: dfd34f0f05cad978ec4e32b0413038ff Network Name: OpenThread-8f28 PAN ID: 0x8f28 PSKc: c23a76e98f1a6483639b1ac1271e2e27 Security Policy: 0, onrcb Done將新的資料集提交至非揮發性儲存空間中的有效作業資料集。
dataset commit active
Done啟用 Thread 介面
ifconfig up
Donethread start
Done顯示指派給執行緒介面的 IPv6 位址。
ipaddr
fd3d:b50b:f96d:722d:0:ff:fe00:fc00 fd3d:b50b:f96d:722d:0:ff:fe00:dc00 fd3d:b50b:f96d:722d:393c:462d:e8d2:db32 fe80:0:0:0:a40b:197f:593d:ca61 Done註冊指派給 Thread 網路的 IPv6 前置字串。
prefix add fd00:dead:beef:cafe::/64 paros med
Donenetdata register
Done顯示 Thread 網路資料。
netdata show
Prefixes: fd00:dead:beef:cafe::/64 paros med dc00 Routes: fd49:7770:7fc5:0::/64 s med 4000 Services: 44970 5d c000 s 4000 44970 01 9a04b000000e10 s 4000 Done前置字串和路徑包含引數對應和 RLOC 值。
服務記錄包含 otServiceConfig 值,包括
mEnterpriseNumber
、mServiceData
、otServerConfig::mServerData
和s
,用來表示otServerConfig::mStable
。RLOC 也會附加到記錄的結尾。顯示分區的 Thread 網路資料目前的長度 (以位元組為單位)。
netdata length
23 Done顯示指派給執行緒介面的 IPv6 位址,包括新增的前置字串。
ipaddr
fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa fd3d:b50b:f96d:722d:0:ff:fe00:fc00 fd3d:b50b:f96d:722d:0:ff:fe00:dc00 fd3d:b50b:f96d:722d:393c:462d:e8d2:db32 fe80:0:0:0:a40b:197f:593d:ca61 Done
連接至現有的網路
裝置只需要網路金鑰就能連接到 Thread 網路。
雖然這並非必要,但您可以指定管道來避免搜尋多個頻道,從而加快附加速度和效率。
當裝置成功連接至 Thread 網路後,裝置就會擷取完整的有效作業資料集。
建立部分有效的作業資料集。
dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
Donedataset commit active
Done啟用 Thread 介面。
ifconfig up
Donethread start
Done連接至現有網路後,顯示 Thread 網路資料。
netdata show
Prefixes: fd00:dead:beef:cafe::/64 paros med dc00 Routes: Services: Done顯示分區的 Thread 網路資料目前的長度 (以位元組為單位)。
netdata length
23 Done顯示指派給執行緒介面的 IPv6 位址。
ipaddr
fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa fd3d:b50b:f96d:722d:0:ff:fe00:fc00 fd3d:b50b:f96d:722d:0:ff:fe00:dc00 fd3d:b50b:f96d:722d:393c:462d:e8d2:db32 fe80:0:0:0:a40b:197f:593d:ca61 Done
偵錯與診斷
網路資料的大小上限為 254 位元組。如果 Border 路由器持續將項目 (例如前置字串、路徑或服務項目) 新增到網路資料,則可取得完整資料。發生這種情況時,主管拒絕新增項目的新要求會遭到領導者拒絕或忽略。主要情況下並不需要向邊界路由器發出拒絕要求,因此邊界路由器可能無法立即得知網路資料已用盡。不過,有幾種方法可偵測網路資料何時完整擷取。
在 Border 路由器和領先者實作的偵測方法會使用回呼 API 機制,讓使用者在網路資料已滿時收到通知。回呼可用於採取行動,例如移除過時的前置字串或服務項目。netdata full
指令的用途是追蹤是否已叫用「淨資料完整」回呼的旗標。這些指令可用來回報標記狀態或重設標記。
就 Thread 的常見用途而言,即使有多個邊界路由器,且所有新增路徑前置字串時,網路資料也不一定完整。
技術上來說,網路資料就能取得完整,但這通常是因為設定錯誤或邊界路由器發生問題。netdata length
和 netdata maxlength
指令有助於對網路資料完整錯誤進行偵錯。length
會取得目前網路資料的長度,回報為位元組,maxlength
則會取得最長可觀察長度,也可以重設追蹤的長度上限。