原文:Thread Stack Fundamentals
介紹
一般特點(diǎn)
Thread協(xié)議棧是可靠褐缠,經(jīng)濟(jì)高效,低功耗岛都,無線D2D(設(shè)備到設(shè)備)通信的開放標(biāo)準(zhǔn)律姨。它是專為連接家庭應(yīng)用而設(shè)計(jì)的,其中需要基于IP的網(wǎng)絡(luò)臼疫,并且可以在協(xié)議棧中使用各種應(yīng)用層线召。
這些是Thread協(xié)議棧和網(wǎng)絡(luò)的一般特性:
- 簡單的網(wǎng)絡(luò)安裝,啟動和運(yùn)行:用于形成多矮,加入和維護(hù)Thread網(wǎng)絡(luò)的簡單協(xié)議允許系統(tǒng)自動配置和修復(fù)路由問題。
- 安全:除非被授權(quán)且所有通信是加密和安全的,否則設(shè)備不被加入Thread網(wǎng)絡(luò)塔逃。
- 小型和大型網(wǎng)絡(luò):家庭網(wǎng)絡(luò)從幾個設(shè)備到數(shù)百個設(shè)備無縫通信讯壶。網(wǎng)絡(luò)層被設(shè)計(jì)為基于預(yù)期的使用來優(yōu)化網(wǎng)絡(luò)操作(optimize the network operation based on the expected use)。
- 范圍:與網(wǎng)格網(wǎng)絡(luò)(Mesh Networks)結(jié)合的典型設(shè)備湾盗,提供足夠的范圍來覆蓋正常的家庭伏蚊。物理層采用擴(kuò)頻技術(shù),提供良好的抗干擾能力格粪。
- 無單點(diǎn)故障:即使在單個設(shè)備發(fā)生故障或丟失的情況下躏吊,協(xié)議棧也可以提供安全可靠的操作。
- 低功耗:主機(jī)設(shè)備通痴饰可以使用合適的占空比在AA型電池上運(yùn)行數(shù)年比伏。
圖1顯示了Thread協(xié)議棧的概述。
IEEE 802.15.4
該標(biāo)準(zhǔn)基于在2.4GHz頻帶中以250kbps運(yùn)行的IEEE 802.15.4 [IEEE802154] PHY(物理層)和MAC(媒體訪問控制層)疆导。該規(guī)范的IEEE 802.15.4-2006版本用于Thread協(xié)議棧赁项。
802.15.4 MAC層用于基本的消息處理和擁塞控制。該MAC層包括設(shè)備用于監(jiān)聽干凈信道的CSMA(Carrier Sense Multiple Access澈段,載波偵聽多路訪問)機(jī)制悠菜,以及用于處理重試和確認(rèn)消息的鏈路層以用于相鄰設(shè)備之間的可靠通信“芨唬基于由軟件協(xié)議棧的較高層建立和配置的密鑰悔醋,被MAC層用于對消息的加密和完整性保護(hù)。網(wǎng)絡(luò)層建立在這些基礎(chǔ)機(jī)制上兽叮,以在網(wǎng)絡(luò)中提供可靠的端對端通信芬骄。
沒有單點(diǎn)故障
在由運(yùn)行Thread協(xié)議棧的設(shè)備組成的系統(tǒng)中,這些設(shè)備都不代表單點(diǎn)故障充择。雖然系統(tǒng)中有許多設(shè)備執(zhí)行特殊功能德玫,但是Thread協(xié)議棧的設(shè)計(jì)使得它們可以被替換,而不會影響Thread網(wǎng)絡(luò)中正在進(jìn)行的通信椎麦。例如宰僧,一個常眠的子設(shè)備需要一個父設(shè)備進(jìn)行通信,因此這個父設(shè)備代表它的通信失敗單點(diǎn)观挎。但是琴儿,如果常眠設(shè)備的父設(shè)備不可用,常眠設(shè)備可以并將會選擇另一個父設(shè)備嘁捷,因此該轉(zhuǎn)換不應(yīng)該對用戶可見造成。
雖然系統(tǒng)設(shè)計(jì)用于沒有單點(diǎn)故障,但在某些拓?fù)浣Y(jié)構(gòu)下雄嚣,將存在沒有備份功能的單個設(shè)備晒屎。例如喘蟆,在具有單個網(wǎng)關(guān)的系統(tǒng)中,如果網(wǎng)關(guān)斷電鼓鲁,則無法切換到另一個網(wǎng)關(guān)蕴轨。
路由器或邊界路由器可以為Thread網(wǎng)絡(luò)中的某些功能承擔(dān)Leader角色。這個Leader需要在網(wǎng)絡(luò)內(nèi)作出決定骇吭。例如橙弱,Leader分配路由器地址并允許新的路由器請求。Leader角色是被選舉的燥狰,如果Leader失敗棘脐,會由另一個路由器或邊界路由器承擔(dān)Leader角色。正是這種自主操作確保沒有單點(diǎn)故障龙致。
設(shè)備類型
邊界路由器(Border Routers)
邊界路由器是一種特定類型的路由器蛀缝,提供從802.15.4網(wǎng)絡(luò)到其他物理層(例如,Wi-Fi和以太網(wǎng))上的相鄰網(wǎng)絡(luò)的連接净当。邊界路由器為802.15.4網(wǎng)絡(luò)中的設(shè)備提供服務(wù)内斯,包括用于離網(wǎng)操作(off-network operations)的路由服務(wù)。Thread網(wǎng)絡(luò)中可能有一個或多個邊界路由器像啼。
路由器(Routers)
路由器為網(wǎng)絡(luò)設(shè)備提供路由服務(wù)俘闯。路由器還為嘗試加入網(wǎng)絡(luò)的設(shè)備提供加入和安全服務(wù)。路由器是設(shè)計(jì)為不休眠的忽冻。路由器可以降級其功能并成為REED(Router-eligible End Devices真朗,符合路由器的終端設(shè)備)。
符合路由器的終端設(shè)備(Router-eligible End Devices)
REED有能力成為路由器僧诚,但是由于網(wǎng)絡(luò)拓?fù)浠驐l件遮婶,這些設(shè)備不作為路由器工作。這些設(shè)備通常不轉(zhuǎn)發(fā)消息或?yàn)門hread網(wǎng)絡(luò)中的其他設(shè)備提供加入或安全服務(wù)湖笨。如果需要旗扑,Thread網(wǎng)絡(luò)管理REED成為路由器,且無需用戶交互慈省。
常眠終端設(shè)備(Sleepy End Devices)
常眠終端設(shè)備是主機(jī)設(shè)備臀防。他們只通過他們的父路由器進(jìn)行通信,不能轉(zhuǎn)發(fā)其他設(shè)備的消息边败。
IP協(xié)議椄ぶ裕基礎(chǔ)
尋址
Thread協(xié)議棧中的設(shè)備支持[RFC 4291]中指定的IPv6尋址架構(gòu)。設(shè)備配置1個或多個ULA(Unique Local Address笑窜,唯一本地地址)或GUA(Global Unicast Address致燥,全局單播地址)地址。
啟動網(wǎng)絡(luò)的設(shè)備選擇一個/64前綴排截,然后在整個Thread網(wǎng)絡(luò)中使用嫌蚤。該前綴是本地分配的全局ID(Locally Assigned Global ID)辐益,通常稱為ULA前綴[RFC 4193],可以稱為網(wǎng)格本地ULA前綴(mesh local ULA prefix)搬葬。Thread網(wǎng)絡(luò)還可以具有一個或多個邊界路由器荷腊,每個邊界路由器可以具有或可以不具有可以用于生成附加GUA的前綴。Thread網(wǎng)絡(luò)中的設(shè)備使用其擴(kuò)展MAC地址(Extended MAC address)來導(dǎo)出其[RFC 4944]第6節(jié)中定義的接口標(biāo)識符(interface identifier)急凰,并且基于此,通過已知的本地前綴FE80 :: 0/64配置鏈路本地IPv6地址猜年,如[RFC 4862]和[RFC 4944]所述抡锈。
設(shè)備還支持適當(dāng)?shù)亩嗖サ刂罚╩ulticast addresses)。這包括鏈路本地所有節(jié)點(diǎn)組播(link-local all node multicast)乔外,鏈路本地全路由器組播(link-local all-router multicast)和區(qū)域本地組播(realm-local multicast)床三。
加入Thread網(wǎng)絡(luò)的每個設(shè)備都將分配一個16位短地址,如[IEEE 802.15.4]中所規(guī)定杨幼。對于路由器撇簿,該地址使用地址字段中的較高位分配,低位設(shè)置為0差购,表示路由器地址四瘫。然后,對于子設(shè)備使用其父設(shè)備的高位和適當(dāng)?shù)牡臀粊頌槠涞刂贩峙湟粋€16位的短地址欲逃。這允許Thread網(wǎng)絡(luò)中的任何其他設(shè)備通過使用其地址字段的高位來了解子設(shè)備的路由位置找蜜。
圖2說明了Thread短地址。
6LoWPAN
所有設(shè)備使用[RFC 4944]和[RFC 6282]中定義的6LoWPAN稳析。
在Thread網(wǎng)絡(luò)中使用頭部壓縮(Header compression)洗做,設(shè)備傳輸消息盡可能多地壓縮IPv6報(bào)頭,以最小化發(fā)送的數(shù)據(jù)包的大小彰居。
支持網(wǎng)格包頭(mesh header)诚纸,用于更有效地壓縮網(wǎng)格內(nèi)的消息,以及針對如“路由和網(wǎng)絡(luò)連接”部分中所述的鏈路層轉(zhuǎn)發(fā)(link layer forwarding)陈惰。網(wǎng)格標(biāo)頭(mesh header)還允許消息的端到端分段(end-to-end fragmentation)畦徘,而不是[RFC 4944]中指定的逐跳分段(hop by hop fragmentation)。Thread協(xié)議棧使用路由選擇配置(route-over configuration)奴潘。
這些設(shè)備不支持[RFC 6775]中規(guī)定的鄰居發(fā)現(xiàn)(neighbor discovery)旧烧,因?yàn)镈HCPv6用于向路由器分配地址。終端設(shè)備和REED由他們的路由器父節(jié)點(diǎn)分配短地址画髓。然后掘剪,該短地址用于配置用于網(wǎng)絡(luò)內(nèi)通信的網(wǎng)格(Mesh)本地ULA。
有關(guān)6LoWPAN使用和配置的更多詳細(xì)信息奈虾,請參見“6LoWPAN的Thread用法(Thread Usage of 6LoWPAN)”白皮書夺谁。Thread規(guī)范的第3章詳細(xì)說明了使用的具體6LoWPAN配置廉赔。
ICMP
設(shè)備支持ICMPv6(Internet Control Message Protocol version 6,Internet控制消息協(xié)議版本6)協(xié)議[RFC 4443]和ICMPv6錯誤消息匾鸥,以及回顯請求(echo request)和回顯回復(fù)消息(echo reply messages)蜡塌。
UDP
Thread協(xié)議棧支持在[RFC 768]中定義的UDP(用戶數(shù)據(jù)報(bào)協(xié)議),用于設(shè)備之間的消息傳遞勿负。
網(wǎng)絡(luò)拓?fù)?/h1>
網(wǎng)絡(luò)地址和設(shè)備
Thread協(xié)議棧支持Thread網(wǎng)絡(luò)中所有路由器之間的全網(wǎng)格連接(full mesh connectivity)馏艾。
實(shí)際拓?fù)浠赥hread網(wǎng)絡(luò)中路由器的數(shù)量。如果只有一個路由器或邊界路由器奴愉,則形成具有單個路由器的基本星形拓?fù)淅拍ΑH绻卸鄠€路由器,則自動形成網(wǎng)格(Mesh)拓?fù)涠稹D3說明了Thread網(wǎng)絡(luò)的基本拓?fù)浣Y(jié)構(gòu)和設(shè)備類型房资。
網(wǎng)格網(wǎng)絡(luò)(Mesh Networks)
網(wǎng)格網(wǎng)絡(luò)(Mesh Networks)通過允許射頻轉(zhuǎn)發(fā)其他射頻的消息,使射頻系統(tǒng)更可靠檀头。例如轰异,如果節(jié)點(diǎn)不能直接向另一個節(jié)點(diǎn)發(fā)送消息,則網(wǎng)格網(wǎng)絡(luò)(Mesh Networks)通過一個或多個中間節(jié)點(diǎn)轉(zhuǎn)發(fā)消息暑始。如“路由和網(wǎng)絡(luò)連接”一節(jié)中所討論的搭独,Thread網(wǎng)絡(luò)的性質(zhì)使得所有路由器節(jié)點(diǎn)彼此之間保持路由和連接,因此網(wǎng)格不斷維護(hù)和連接蒋荚。Thread網(wǎng)絡(luò)中通常有最多32個活動路由器的限制戳稽。但是,64個路由器地址用于允許回收路由器地址期升。
在網(wǎng)格網(wǎng)絡(luò)(Mesh Networks)中惊奇,常眠終端設(shè)備或REED不會為其他設(shè)備路由。這些設(shè)備將消息發(fā)送到作為路由器的父設(shè)備播赁。該父路由器處理其子設(shè)備的路由操作颂郎。
路由和網(wǎng)絡(luò)連接(Routing and Network Connectivity)
Thread網(wǎng)絡(luò)通常最多有32個活動路由器,它們使用基于設(shè)備路由表的消息的下一跳路由(next-hop routing)容为。設(shè)備路由表由協(xié)議棧維護(hù)乓序,以確保所有路由器都具有Thread網(wǎng)絡(luò)中任何其他路由器的連接和最新路徑。使用RIP(Routing Information Protocol坎背,路由信息協(xié)議)算法(來自[RFC 1058]和[RFC 2080]的算法替劈,但不采用其特定的消息格式)。所有路由器與其他路由器使用MLE(Mesh Link Establishment)得滤,以壓縮格式交換其到Thread網(wǎng)絡(luò)中的其他路由器的路由成本(cost of routing)陨献。
注意:從IP的角度來看,Thread網(wǎng)絡(luò)支持路由器和主機(jī)懂更。主機(jī)是常眠終端設(shè)備或REED眨业。
MLE消息(MLE Messages)
MLE消息(請參閱“Thread規(guī)范”第4章“消息鏈路建立(Message Link Establishment)” 中針對Thread進(jìn)行的擴(kuò)展[draft-kelsey-intarea-mesh-link-establishment-06]) 用于建立和配置安全射頻鏈路急膀,檢測鄰近設(shè)備,以及維護(hù)Thread網(wǎng)絡(luò)中設(shè)備之間的路由成本龄捡。使用單跳鏈路本地單播(single-hop link local unicasts)和路由器之間多播(multicasts between Routers)來傳輸MLE消息卓嫂。
隨著拓?fù)浜臀锢憝h(huán)境的變化,MLE消息用于識別聘殖,配置和保護(hù)鄰近設(shè)備的鏈路晨雳。MLE還用于分發(fā)跨Thread網(wǎng)絡(luò)共享的配置值,如通道(channel)和PAN(Personal Area Network就斤,個人區(qū)域網(wǎng)絡(luò))ID悍募。這些消息可以由MPL(Multicast Protocol for Low power and Lossy Networks,低功耗和有損網(wǎng)絡(luò)的多播協(xié)議)指定的簡單洪泛轉(zhuǎn)發(fā)(forwarded with simple flooding)洋机。(有關(guān)詳細(xì)信息,請參閱[draft-ietf-roll-trickle-mcast-09])洋魂。
在建立兩個設(shè)備之間的路由成本時(shí)绷旗,MLE消息還確保考慮了非對稱鏈路成本(asymmetric link costs)副砍。802.15.4網(wǎng)絡(luò)中的非對稱鏈路成本(asymmetric link costs)很常見衔肢。為了確保雙向通信是可靠的,考慮雙向鏈路的成本是很重要的豁翎。
路線發(fā)現(xiàn)和修復(fù)
按需路由發(fā)現(xiàn)(On-demand route discovery)通常用于低功耗802.15.4網(wǎng)絡(luò)角骤。然而,由于路由發(fā)現(xiàn)請求洪泛網(wǎng)絡(luò)(route discovery requests flooding the network)心剥,按需路由發(fā)現(xiàn)(on-demand route discovery)在網(wǎng)絡(luò)開銷和帶寬方面是昂貴的邦尊。
在Thread網(wǎng)絡(luò)中,所有路由器定期交換包含到所有鄰居路由器鏈路成本信息(link cost information to all neighbor Routers)的單跳MLE廣告包(single-hop MLE advertisement packets)优烧,以及到Thread網(wǎng)絡(luò)中所有其他路由器的路徑開銷(path costs to all other Routers)蝉揍。通過這些定期的本地更新,所有路由器都具有Thread網(wǎng)絡(luò)中任何其他路由器的最新路徑開銷信息畦娄,因此不需要按需路由發(fā)現(xiàn)又沾。如果路由不再可用,路由器可以在到達(dá)目的地的下一個最合適的路由上進(jìn)行選擇熙卡。這種自愈路由機(jī)制允許路由器快速檢測其他路由器是否已經(jīng)脫離Thread網(wǎng)絡(luò)杖刷,并計(jì)算最佳路徑以維護(hù)與Thread網(wǎng)絡(luò)中所有其他設(shè)備的連接。
每個方向的鏈路質(zhì)量(link quality in each direction)基于來自該鄰近設(shè)備的傳入消息的鏈路成本(link cost on incoming messages from that neighboring device)驳癌。此傳入鏈路成本(incoming link cost)映射到從0到3的鏈路質(zhì)量(link quality)滑燃。值為0表示未知成本。鏈路成本(link cost is a measure of RSSI)是接收到的消息高于接收等級的RSSI(接收信號強(qiáng)度指示)的度量喂柒。
表1總結(jié)了鏈路質(zhì)量和鏈路成本不瓶。
圖4示出了Thread網(wǎng)絡(luò)上的各種鏈路成本的示例禾嫉。
Thread網(wǎng)絡(luò)中任何其他節(jié)點(diǎn)的路徑開銷就是到達(dá)該節(jié)點(diǎn)的鏈路成本的最小值。路由器監(jiān)控這些成本蚊丐,即使網(wǎng)絡(luò)的射頻鏈路質(zhì)量或拓?fù)渥兓醪危⑼ㄟ^使用周期性MLE廣告消息在Thread網(wǎng)絡(luò)傳播新的成本。路由成本基于兩個設(shè)備之間的雙向鏈路質(zhì)量麦备。
為了說明一個簡化的例子孽椰,想象一下預(yù)先委托的網(wǎng)絡(luò)(pre-commissioned network),其中共享安全材料凛篙,所有的設(shè)備同時(shí)啟動黍匾。每個路由器將周期性地發(fā)送初始填充的到單跳鄰居成本的廣告。在內(nèi)部呛梆,每個路由器將存儲未在廣告中發(fā)送的下一跳信息(next hop information)锐涯。
前幾個廣告的路徑成本等于鏈路成本,因?yàn)橐阎奈ㄒ宦酚善魇橇⒓脆従犹钗铮鐖D5所示纹腌。
但是,隨著路由器開始收聽來自鄰居的廣告滞磺,其中包含兩跳或更多跳的其他路由器的成本升薯,它們的表填充了多跳路徑成本,然后傳播得更遠(yuǎn)击困,直到最終在所有路由器之間存在如圖6和圖7所示的連接信息網(wǎng)絡(luò)涎劈。
當(dāng)路由器從鄰居接收到新的MLE廣告時(shí),它或者已經(jīng)具有該設(shè)備的鄰居表項(xiàng)阅茶,或者添加一個蛛枚。MLE廣告包含來自鄰居的進(jìn)入成本(incoming cost from the neighbor),因此在路由器的鄰居表中更新(updated in the Router’s neighbor table)目派。MLE廣告還包含其他路由器的更新的路由信息??(updated routing information for other Routers)坤候,并且該信息在設(shè)備路由表中更新(updated in the device routing table)。
通過查看子設(shè)備的地址的高位來確定父路由器地址(Parent Router address)企蹭,可以實(shí)現(xiàn)到子設(shè)備的路由白筹。一旦設(shè)備知道父路由器,它就具有該設(shè)備的路徑開銷信息和下一跳路由信息(path cost information and next-hop routing information)谅摄。
活動路由器的數(shù)量僅限于可以包含在單個802.15.4數(shù)據(jù)包中的路由和成本信息的數(shù)量徒河。此限制目前為32個路由器,但提供了64個活動路由器地址以允許老化掉路由器地址(aging out of Router addresses)送漠。
路由
設(shè)備使用IP路由轉(zhuǎn)發(fā)數(shù)據(jù)包(IP routing to forward packets)顽照。設(shè)備路由表(device routing table)填充有路由器的網(wǎng)格本地ULA地址的壓縮形式和適當(dāng)?shù)南乱惶╟ompressed form of a mesh local ULA address for Routers and the appropriate next hop)。
距離向量路由(Distance vector routing)用于獲取到Thread網(wǎng)絡(luò)上路由器地址的路由(get routes to Router addresses)。當(dāng)在Thread網(wǎng)絡(luò)上進(jìn)行路由時(shí)代兵,該16位地址的高6位定義了目標(biāo)路由器的路由器地址尼酿。如果目的地址的低位為0,則路由器為最終目的地址植影。否則裳擎,目的路由器負(fù)責(zé)根據(jù)16位目的地址的較低位轉(zhuǎn)發(fā)到最終目的地。
對于超出Thread網(wǎng)絡(luò)的路由思币,邊界路由器通知Leader其所服務(wù)的特定前綴(particular prefix(es) it serves)鹿响,并且該信息作為MLE數(shù)據(jù)包中的Thread網(wǎng)絡(luò)數(shù)據(jù)分發(fā)(distributed as Thread Network data within the MLE packets)。Thread網(wǎng)絡(luò)數(shù)據(jù)包括:前綴數(shù)據(jù)(prefix data)谷饿,它是前綴本身惶我,6LoWPAN上下文(6LoWPAN context),邊界路由器(Border Routers)和該前綴的DHCPv6服務(wù)器(DHCPv6 server for that prefix)博投。如果設(shè)備要使用該前綴配置IPv6地址绸贡,則使用SLAAC(Stateless Address Autoconfiguration,無狀態(tài)地址自動配置)或聯(lián)系相應(yīng)的DHCP(Dynamic Host Configuration Protocol毅哗,動態(tài)主機(jī)配置協(xié)議)服務(wù)器恃轩。Thread網(wǎng)絡(luò)數(shù)據(jù)還包括路由服務(wù)器列表(a list of routing servers),它們是默認(rèn)的邊界路由器的路由器地址黎做。
Leader被指定做出決策,選擇REED成為路由器或允許路由器降級為REED松忍。Leader也分配和管理路由器地址蒸殿。然而,此路由Leader中包含的所有信息都存在于其他路由器中鸣峭,并且如果路由Leader變得無法訪問宏所,則另一個路由器將自主被選擇并作為Leader接管,而無需用戶干預(yù)摊溶。
重試和應(yīng)答
雖然在Thread協(xié)議棧中使用UDP消息傳遞爬骤,但仍然需要可靠的消息傳遞。這是使用一系列輕量級機(jī)制完成的莫换,如下所示:
- MAC級別重試:每個設(shè)備使用下一跳的MAC確認(rèn)霞玄,并且如果未收到MAC ACK消息,則將在MAC層重試一條消息拉岁。
- 應(yīng)用程序級別重試:應(yīng)用程序級別可以確定消息可靠性是否是關(guān)鍵參數(shù)坷剧,并且可以在必要時(shí)實(shí)現(xiàn)自己的重試機(jī)制。
加入Thread網(wǎng)絡(luò)
加入設(shè)備(joining device)必須經(jīng)歷各個階段才能參與Thread網(wǎng)絡(luò):
- 發(fā)現(xiàn)(Discovery)
- 調(diào)試(Commissioning)
- 附加(Attaching)
所有加入都是Thread網(wǎng)絡(luò)中用戶啟動的喊暖。一旦加入惫企,設(shè)備就可以完全參與Thread網(wǎng)絡(luò),并可以與Thread網(wǎng)絡(luò)內(nèi)外的其他設(shè)備和服務(wù)交換應(yīng)用層信息陵叽。
發(fā)現(xiàn)(Discovery)
加入設(shè)備(joining device)必須發(fā)現(xiàn)Thread網(wǎng)絡(luò)狞尔,并與路由器建立聯(lián)系(establish contact with a Router)以進(jìn)行調(diào)試(commissioning)丛版。加入設(shè)備掃描所有信道(scans all channels),在每個信道上發(fā)出信標(biāo)請求(issues a beacon request)偏序,并等待信標(biāo)響應(yīng)(waits for beacon responses)页畦。信標(biāo)包含一個有效載荷,包括網(wǎng)絡(luò)SSID(Service Set Identifier禽车,服務(wù)集標(biāo)識符)和允許加入信標(biāo)的許可證(a permit joining beacon)寇漫,指示Thread網(wǎng)絡(luò)是否正在接受新的成員。一旦設(shè)備發(fā)現(xiàn)Thread網(wǎng)絡(luò)殉摔,它將使用MLE消息來建立一個相鄰的路由器(establish a neighboring Router)州胳,通過它可以執(zhí)行調(diào)試(perform commissioning)。
如果設(shè)備已經(jīng)獲得了調(diào)試信息(obtained commissioning information)逸月,因?yàn)樗呀?jīng)有足夠的信息直接附加到Thread網(wǎng)絡(luò)栓撞,則不需要發(fā)現(xiàn)。
調(diào)試
Thread提供兩種調(diào)試方法:
- 使用帶外方法將調(diào)試信息(commissioning information)直接配置到設(shè)備上碗硬。調(diào)試信息(commissioning information)允許加入設(shè)備在引入網(wǎng)絡(luò)后立即附加到適當(dāng)?shù)腡hread網(wǎng)絡(luò)瓤湘。
- 在智能手機(jī),平板電腦或網(wǎng)絡(luò)上的加盟設(shè)備和調(diào)試應(yīng)用程序(commissioning application)之間建立調(diào)試會話(commissioning session)恩尾。調(diào)試會話(commissioning session)安全地向加入設(shè)備提供調(diào)試信息(commissioning information)弛说,允許在完成調(diào)試會話(commissioning session)后將其附加到正確的Thread網(wǎng)絡(luò)。
注意:僅在通過信標(biāo)有效載荷中的許可證加入標(biāo)志(joining solely via the permit joining flag in the beacon payload)的典型802.15.4加入方法不在Thread網(wǎng)絡(luò)中使用翰意。這種方法最常用于沒有用戶界面或到設(shè)備的帶外頻道的按鈕類型加入(push button type joining)木人。在有多個網(wǎng)絡(luò)可用的情況下,該方法可能存在設(shè)備轉(zhuǎn)向(device steering)問題冀偶,并且也可能存在安全問題醒第。
附加
具有調(diào)試信息(commissioning information)的加入設(shè)備(joining device)與父路由器聯(lián)系,然后通過父路由器交換MLE鏈路配置消息(exchanging MLE link configuration messages)附加到Thread網(wǎng)絡(luò)进鸠。設(shè)備作為終端設(shè)備(end device)或REED附加到Thread網(wǎng)絡(luò)稠曼,并由父路由器分配16位短地址,如圖8所示客年。
一旦REED已經(jīng)附加到Thread網(wǎng)絡(luò)霞幅,它可能會發(fā)出一個地址請求(issue an address request)成為一個路由器,然后由Leader分配一個路由器地址搀罢。
MLE消息
一旦設(shè)備連接到Thread網(wǎng)絡(luò)蝗岖,就需要有各種各樣的信息來保持其在網(wǎng)絡(luò)中的參與。MLE提供服務(wù)以在整個網(wǎng)絡(luò)中分發(fā)網(wǎng)絡(luò)數(shù)據(jù)榔至,并在鄰居之間交換鏈路成本(link costs)和安全幀計(jì)數(shù)器(security frame counters)抵赢。
MLE消息分發(fā)或交換以下信息:
- 相鄰設(shè)備的16位短地址和64位EUI 64長地址
- 設(shè)備功能信息,包括是否是一個常眠的終端設(shè)備(sleepy end device)和常眠主機(jī)設(shè)備的常眠周期(sleep cycle of the sleepy host device)
- 鄰居鏈路成本(如果是路由器)
- 設(shè)備之間的安全材料和幀計(jì)數(shù)器(Security material and frame counters )
- Thread網(wǎng)絡(luò)中到所有其他路由器的路由成本(Routing costs)
- 更新MAC中使用的信道,PAN ID和信標(biāo)有效載荷 (channel, PAN ID, and the beacon payload parameter)等網(wǎng)絡(luò)數(shù)據(jù)
注意:MLE消息是被加密的铅鲤,除非是在發(fā)現(xiàn)時(shí)划提,加入設(shè)備獲得所需的安全資料過程中。
DHCPv6
DHCPv6 [RFC 3315]是一種基于UDP的客戶端 - 服務(wù)器協(xié)議邢享,用于管理網(wǎng)絡(luò)中設(shè)備的配置鹏往。DHCPv6使用UDP從DHCP服務(wù)器請求數(shù)據(jù)。
邊界路由器上的DHCPv6服務(wù)用于配置:
- 網(wǎng)絡(luò)地址(Network addresses)
- 設(shè)備所需的組播地址(Multicast addresses)
- 主機(jī)名服務(wù)(Hostname services)
管理
ICMP
所有設(shè)備都支持ICMPv6錯誤消息骇塘,以及回顯請求( echo request)和回顯回應(yīng)消息( echo reply messages)伊履。
設(shè)備管理
設(shè)備上的應(yīng)用層可以訪問一組設(shè)備管理和診斷信息,這些信息可以在本地使用或收集并發(fā)送到其他管理設(shè)備款违。
Thread協(xié)議棧從802.15.4 MAC層使用的信息包括:
- EUI 64地址
- 16位短地址
- 能力信息(Capability information)
- PAN ID
- 發(fā)送和接收的數(shù)據(jù)包
- 發(fā)送或接收數(shù)據(jù)包丟失
- 安全錯誤
- MAC重試次數(shù)(Number of MAC retries)
Thread協(xié)議棧從網(wǎng)絡(luò)層使用的信息包括:
- IPv6地址丟失(IPv6 address lost)
- 鄰居表(Neighbor table)
- 子設(shè)備表(Child table)
- 路由表(Routing table)
持久數(shù)據(jù)
由于各種原因唐瀑,在現(xiàn)場操作的設(shè)備可能會意外重置或故障重置。已重置的設(shè)備需要重新啟動網(wǎng)絡(luò)操作插爹,無需用戶干預(yù)哄辣。為此,需要將一組信息存儲在非易失性存儲中赠尾。這包括:
- 網(wǎng)絡(luò)信息力穗,如PAN ID
- 安全材料(Security material )(使用的每個秘鑰key)
- 來自網(wǎng)絡(luò)的尋址信息以形成設(shè)備的IPv6地址