Thread网络协议简化家庭“万物”互联
时间:12-02
来源:互联网
点击:
作者: Greg Fyke
简介
Thread是无线网状网络的未来,它有望成为“万物”与Internet连接的关键技术。“万物”可以笼统的定义为功耗敏感、资源受限的设备,它们通常结合了MCU、传感器、RF技术和软件。这些设备通过无线连接桥接到网络,而且能够被远程控制和自动化运行。当前已经有多种无线技术能够支持这种相互连接,但是Thread是为满足家居互联的特殊需求而设计的。它基于现有标准,通过提供低功耗、安全和可扩展的基于IP的无线网状网络协议,Thread成为IoT实现的关键技术所在。
为什么选择IP
IP是Internet的主要通信协议。IP为IP网络数据中继提供了核心机制,它的路由能力实现了网络互连。在Internet数十年快速发展之后,IP已经无处不在。
本身不支持IP的网络技术必须首先在网关中适配IP。这种处理过程涉及到本地网络地址的映射,将网络层数据包重新打包为IP数据包。如图1所示,已加密的本地报文必须在网关中解密,然后重新在IP数据包中加密。
图1:本身不支持IP的本地网络
相比之下,本身支持IP的本地网络,例如Thread和Wi-Fi,能够无介入的转发和路由应用的有效载荷。本地网络加密的报文能够安全的端到端传输。如图2所示。
图2:本身支持IP的本地网络
IPv6对比IPv4
IPv4支持32位寻址。但是自从上世纪90年代起,大约43亿的地址空间越来越不能满足Internet连接的增长预期。IPv6把地址长度增加到128位,这使得地址空间达到约240涧(1涧=10的36次方)!具有IPv6全球唯一地址(GUA)的本地设备可直接通过广域网(WAN)寻址。
6LoWPAN
6LoWPAN是IPv6 over Low Power Wireless Personal Area Networks的缩写。它可实现在802.15.4连接上有效传输IPv6数据报,因此资源受限的设备(例如“万物”)能够自然的加入IoT。它支持三种关键功能:
●报文长度自适应
IPv6支持的最小MTU(最大传输单元)是1280字节。在使用UDP(User Datagram Protocol)和DTLS(Datagram Transport Layer Security)的802.15.4报文中,典型应用的有效载荷大小是63字节。6LoWPAN提供分段和重组机制以适配IPv6数据报到这些更小的802.15.4有效载荷。不合适大小的IPv6报文将被分成片段,并通过802.15.4在空中发送。不是所有的片段都能够以正确的顺序被接收。然而,6LoWPAN仅仅需要接收到所有片段,然后按照需要再重新排序分段。
●报头压缩
为了最大限度的减少在802.15.4帧中发送IPv6消息的开销,6LoWPAN利用协议间的跨层冗余(例如源和目标地址、负载长度、传输类型和流量标签)为IPv6和传输报头提供透明的压缩机制。Thread使用IPHC(Improved Header Compression)和NHC(Next Header Compression)。IPHC被用于压缩IPv6报头。NHC被用于压缩UDP报头。
●层间转发
Thread使用IP路由转发报文。IP路由表用于维护每一个目的和到达它的下一跳。6LoWPAN网状报头使用IP路由表来实现链路的下一跳转发。
实现互联
网络市场中存在多种无线技术。从长远来看,我们认为在互联家居和IoT领域中主要有三个领先的协议解决方案:Wi-Fi、Bluetooth Smart和802.15.4网状网络协议。
Wi-Fi是家庭网络中传输音频、视频和数据的骨干无线技术。它支持高数据率和输出功率,然而功耗较大。因此其在电池供电的应用中受到限制。
Bluetooth Smart适合连接智能手机的点对点解决方案,也适合在电池供电的设备上批量传输数据。虽然目前的解决方案本身不支持IP,但是Bluetooth Core Specification 4.2通过支持IPv6和6LoWPAN为支持IP奠定了基础。
网状网络技术(例如ZigBee PRO和Thread)构成了家居互联的骨干连接。这些自恢复网络已经被优化去支持低带宽控制和自动化应用,在这类应用中,支撑几年的长电池寿命是关键点。
在过去的10年中,ZigBee PRO一直在802.15.4网状网络解决方案中占主导地位。它支持可靠、安全和可扩展的网状网络,支持超过250个节点,也广泛支持电池供电操作的可休眠的终端节点。
Thread建立在ZigBee基础之上,具有安全、可靠和容错性好的优势。它也解决了市场中对于网状网络技术期待已久的需求:支持IPv6和6LoWPAN,为IoT中的每一个终端节点带来亟需的IP连接能力。表1列举了不同网络协议的特性。
表1:IoT无线技术
为什么是Thread,为什么是现在?
Thread Group成立于2014年7月15日,目的是协作、共享专长和开发满足这些需求的解决方案。成立一年后,Thread Group发布了Thread规范。该组织的创始成员包括Silicon Labs、Nest Labs、Yale Security、Samsung Electrics、Freescale Semiconductor、Big Ass Fans和ARM。
Thread的关注低功耗和固有支持IP实现了“万物”和网络之间无缝互联的承诺。它不仅在低成本、电池供电的设备之间提供有效通信,也提供到云和移动设备的简单接口。Thread提供具有吸引力的全新无线网状网络解决方案,设计旨在满足下列家居互联需求:
●基于标准的协议
开放基于标准的协议,实现跨厂商的互操作性和竞争性。Thread以目前的包括IEEE 802.15.4在内的IEEE和IETF标准为基础。官方的Thread Specification已经在2015年7月13日由Thread Group发布。
●简化的配置
Thread摒弃了一些之前网状网络标准的复杂性。只有两种不同的节点类型:Router Eligible和 End Device。
Router Eligible节点在需要支持网状网络时成为路由器。构建网络的第一个Router Eligible节点将自动的被指定为路由器并作为Leader。Leader执行额外的网络管理任务并代表网络做决定。网络中的其他Router Eligible节点也能够自动的担任Leader的角色,但是在一个时间内每一个网络中仅仅只能有一个Leader。
作为End Device加入的节点不支持任何路由功能。相反,它们把信息发送给指定为“父节点(parent)”的路由器,“父节点”代表它的“子节点(child)”执行路由操作。End Device通过父节点进行路由通信并且能够进入“Sleepy”状态来减少功耗。不能与它们的父节点通信的End Device在多次尝试后将自动扫描并连接到新的父节点。图3所示为带有REED(Router Eligible End Device)、一个Leader和Thread Router的Thread节点网络。
图3:Thread节点类型
●基于IP的信息传送
Thread全面支持IP。Thread网络中的所有设备都有一个IPv6地址,并且能够被HAN(Home Area Network,家庭局域网)中的本地设备或者离线网络中具有Thread能力的被称为Border Router(边界路由器)的IP路由器直接访问。图4显示典型的Thread网络连接。
图4:Thread网络连接
网络中的节点由Border Router分配的前缀构成IPv6全球地址,或者由本地自分配的前缀去构成ULA(Unique Local Address)。网络中使用的路由ID通过Leader分配。Thread使用UDP(User Datagram Protocol)进行消息传输,而不是使用TCP。与TCP不同,UDP是无连接的协议,它摒弃了一些TCP特性,例如错误检测、报文排序和重传以换取更快速和更高效的传输。这种效率相当于减少了传输成本,这对于电池供电、资源受限的设备是极其重要的。Thread使用CoAP(Constrained Application Protocol)结合UDP去保持高效性,同时克服了UDP的一些限制。CoAP实现了重构以支持重传和分组排序。CoAP进一步为GET、POST、PUT和DELETE方法的轻量级(版本提供支持,能够容易的转换成HTTP实现与万维网的连接)。利用离线网络CoAP到HTTP代理,Thread可以从浏览器中直接查询IoT设备!
●低功耗运行
Thread为低功耗运行的可休眠终端节点提供了特别支持。正如其名称所暗示,这些可休眠的终端设备大部分时间处于低功耗休眠状态。在Thread协议中,不检测处于休眠状态的设备,以此来延长电池寿命。发送给可休眠终端设备的消息由它们的父节点缓存。消息传输仅仅在休眠终端设备被唤醒并查询父节点时才被触发。
●可扩展性和弹性
Thread的网络设计目标是支持多于250个节点。在此约束下,多种特性和功能被优化用以提供最大化的吞吐量和最小化资源需求。在Thread网络中,活动路由器的最大数量是32个。这样产生的一个重要的结果是路由信息能够被有效的通过网络分发,并且所有路由器能够直观的维护网络中的所有路由。当节点添加到网络并且拓扑结构改变时,网络通过交换MLE(Mesh Link Establishment)消息做调整。如果有作为终端设备操作的Router Eligible设备,能够自主添加额外的路由器。这种Router Eligible终端设备或者REED,聆听路由信息,并且在需要提升网络的整体性能时,向网络中的Leader申请成为路由器。
Thread是强大的、能自我修复的网状网络,提供无单点故障能力。如果一个路由器发生了故障,网络将动态变向发送传输,绕过故障节点。如果一个Leader失效了,网络中的另一个路由器将被自动的选择成为新的Leader。多个边界路由器能够为离线网络通信提供故障失效安全的冗余。
●互操作性
Thread Group已经发布了标准的软件测试工具用于所有Thread协议栈和最终Thread产品认证。这种测试工具将被提供给所有Thread成员公司以便在Thread认证测试之前获得高质量的软件开发和测试。
所有Thread组件(IC、软件协议栈或模组)在作为终端产品提供给用户之前必须获得Thread认证。所有想要携带Thread标识的终端产品设备必须提交他们的设备到批准的实验室进行认证。
●安全和人性化
Thread网络易于使用并极其安全。Thread在MAC层使用AES-128保护所有网络传输,并且利用ECC和J-PAKE逻辑组合安全添加设备到网络(即Commissioning)。应用有能力选择利用基于标准的IP安全协议(例如DTLS)以实现额外的、安全的应用载荷。
Thread网络假定用户有一个可用的Commissioning设备用于添加新设备到Thread网络。Thread可以指定离线网络设备(例如智能电话和计算机)和在线网络Thread设备成为Commissioner。离线网络设备必须首先请求Thread Border Router以成为注册Commissioner,符合Thread指定的安全DTLS认证。一旦注册,Border Router将代表Commissioner候选人与Leader协商成为授权的Commissioner。在线网络设备不需要注册,但是可能需要与Leader协商以被授权(Leader确保网络中同一时间仅仅有一个Commissioner被激活)。一旦得到授权,激活的Commissioner将会以广播方式通知到整个Thread网络。
在加入Thread网络时,用户通知Commissioner设备有个新设备将要加入,并且输入一个唯一的与加入设备相关的密码。这种密码被用于建立安全的DTLS会话来认证并授权给加入的设备。仅仅在那时设备有权访问Thread网络。一旦设备加入到网络,Commissioner设备不再处于激活状态。
●加速产品上市
随着物联网设备的快速普及,对于产品来说,越来越重要的是尽快从概念阶段进展到产品上市。Thread和Silicon Labs有助于加速产品上市。
●应用开发
Thread没有规定应用层,而是为其提供基本的消息传送服务,例如使用UDP和CoAP的单播和组播消息服务。类似Wi-Fi,Thread关注消息的安全和可靠传输,使用低功耗的网状网络代替高功耗的星状网络。使用Silicon Labs AppBuilder工具,利用易于使用的回调函数(callback)和插件(plug-in)使协议栈层细节不再抽象化,以简化IP消息传输。在框架中开发的应用代码是高度可移植的,并且可以在支持的802.15.4设备之间重用。AppBuilder提供简单的GUI去配置设备和网络参数,例如设备类型、命令、组网和加入行为,以及安全模式和操作。Silicon Labs提供容易定制和扩展的Thread示例应用帮助用户快速启动项目开发。
●网络调试
在为网状网络开发应用时,理解、适配和调整网络层是重要的开发阶段。传统的解决方案使用无线sniffer去远程捕获空中网络传输包。Silicon Labs网络IC在芯片内部集成了这种能力,使用Packet Trace专用的双线接口,输出被设备发送接收的每个数据包以及链路质量信息。这些信息能够通过Desktop Network Analyzer工具收集起来,将完整的网络信息传输可视化。Desktop Network Analyzer通过事件联系所有通信活动并且解码Thread消息。网络活动可以被记录很长时间,从而识别网络中极少发生或间歇性发生的问题。
简介
Thread是无线网状网络的未来,它有望成为“万物”与Internet连接的关键技术。“万物”可以笼统的定义为功耗敏感、资源受限的设备,它们通常结合了MCU、传感器、RF技术和软件。这些设备通过无线连接桥接到网络,而且能够被远程控制和自动化运行。当前已经有多种无线技术能够支持这种相互连接,但是Thread是为满足家居互联的特殊需求而设计的。它基于现有标准,通过提供低功耗、安全和可扩展的基于IP的无线网状网络协议,Thread成为IoT实现的关键技术所在。
为什么选择IP
IP是Internet的主要通信协议。IP为IP网络数据中继提供了核心机制,它的路由能力实现了网络互连。在Internet数十年快速发展之后,IP已经无处不在。
本身不支持IP的网络技术必须首先在网关中适配IP。这种处理过程涉及到本地网络地址的映射,将网络层数据包重新打包为IP数据包。如图1所示,已加密的本地报文必须在网关中解密,然后重新在IP数据包中加密。
图1:本身不支持IP的本地网络
相比之下,本身支持IP的本地网络,例如Thread和Wi-Fi,能够无介入的转发和路由应用的有效载荷。本地网络加密的报文能够安全的端到端传输。如图2所示。
图2:本身支持IP的本地网络
IPv6对比IPv4
IPv4支持32位寻址。但是自从上世纪90年代起,大约43亿的地址空间越来越不能满足Internet连接的增长预期。IPv6把地址长度增加到128位,这使得地址空间达到约240涧(1涧=10的36次方)!具有IPv6全球唯一地址(GUA)的本地设备可直接通过广域网(WAN)寻址。
6LoWPAN
6LoWPAN是IPv6 over Low Power Wireless Personal Area Networks的缩写。它可实现在802.15.4连接上有效传输IPv6数据报,因此资源受限的设备(例如“万物”)能够自然的加入IoT。它支持三种关键功能:
●报文长度自适应
IPv6支持的最小MTU(最大传输单元)是1280字节。在使用UDP(User Datagram Protocol)和DTLS(Datagram Transport Layer Security)的802.15.4报文中,典型应用的有效载荷大小是63字节。6LoWPAN提供分段和重组机制以适配IPv6数据报到这些更小的802.15.4有效载荷。不合适大小的IPv6报文将被分成片段,并通过802.15.4在空中发送。不是所有的片段都能够以正确的顺序被接收。然而,6LoWPAN仅仅需要接收到所有片段,然后按照需要再重新排序分段。
●报头压缩
为了最大限度的减少在802.15.4帧中发送IPv6消息的开销,6LoWPAN利用协议间的跨层冗余(例如源和目标地址、负载长度、传输类型和流量标签)为IPv6和传输报头提供透明的压缩机制。Thread使用IPHC(Improved Header Compression)和NHC(Next Header Compression)。IPHC被用于压缩IPv6报头。NHC被用于压缩UDP报头。
●层间转发
Thread使用IP路由转发报文。IP路由表用于维护每一个目的和到达它的下一跳。6LoWPAN网状报头使用IP路由表来实现链路的下一跳转发。
实现互联
网络市场中存在多种无线技术。从长远来看,我们认为在互联家居和IoT领域中主要有三个领先的协议解决方案:Wi-Fi、Bluetooth Smart和802.15.4网状网络协议。
Wi-Fi是家庭网络中传输音频、视频和数据的骨干无线技术。它支持高数据率和输出功率,然而功耗较大。因此其在电池供电的应用中受到限制。
Bluetooth Smart适合连接智能手机的点对点解决方案,也适合在电池供电的设备上批量传输数据。虽然目前的解决方案本身不支持IP,但是Bluetooth Core Specification 4.2通过支持IPv6和6LoWPAN为支持IP奠定了基础。
网状网络技术(例如ZigBee PRO和Thread)构成了家居互联的骨干连接。这些自恢复网络已经被优化去支持低带宽控制和自动化应用,在这类应用中,支撑几年的长电池寿命是关键点。
在过去的10年中,ZigBee PRO一直在802.15.4网状网络解决方案中占主导地位。它支持可靠、安全和可扩展的网状网络,支持超过250个节点,也广泛支持电池供电操作的可休眠的终端节点。
Thread建立在ZigBee基础之上,具有安全、可靠和容错性好的优势。它也解决了市场中对于网状网络技术期待已久的需求:支持IPv6和6LoWPAN,为IoT中的每一个终端节点带来亟需的IP连接能力。表1列举了不同网络协议的特性。
表1:IoT无线技术
为什么是Thread,为什么是现在?
Thread Group成立于2014年7月15日,目的是协作、共享专长和开发满足这些需求的解决方案。成立一年后,Thread Group发布了Thread规范。该组织的创始成员包括Silicon Labs、Nest Labs、Yale Security、Samsung Electrics、Freescale Semiconductor、Big Ass Fans和ARM。
Thread的关注低功耗和固有支持IP实现了“万物”和网络之间无缝互联的承诺。它不仅在低成本、电池供电的设备之间提供有效通信,也提供到云和移动设备的简单接口。Thread提供具有吸引力的全新无线网状网络解决方案,设计旨在满足下列家居互联需求:
●基于标准的协议
开放基于标准的协议,实现跨厂商的互操作性和竞争性。Thread以目前的包括IEEE 802.15.4在内的IEEE和IETF标准为基础。官方的Thread Specification已经在2015年7月13日由Thread Group发布。
●简化的配置
Thread摒弃了一些之前网状网络标准的复杂性。只有两种不同的节点类型:Router Eligible和 End Device。
Router Eligible节点在需要支持网状网络时成为路由器。构建网络的第一个Router Eligible节点将自动的被指定为路由器并作为Leader。Leader执行额外的网络管理任务并代表网络做决定。网络中的其他Router Eligible节点也能够自动的担任Leader的角色,但是在一个时间内每一个网络中仅仅只能有一个Leader。
作为End Device加入的节点不支持任何路由功能。相反,它们把信息发送给指定为“父节点(parent)”的路由器,“父节点”代表它的“子节点(child)”执行路由操作。End Device通过父节点进行路由通信并且能够进入“Sleepy”状态来减少功耗。不能与它们的父节点通信的End Device在多次尝试后将自动扫描并连接到新的父节点。图3所示为带有REED(Router Eligible End Device)、一个Leader和Thread Router的Thread节点网络。
图3:Thread节点类型
●基于IP的信息传送
Thread全面支持IP。Thread网络中的所有设备都有一个IPv6地址,并且能够被HAN(Home Area Network,家庭局域网)中的本地设备或者离线网络中具有Thread能力的被称为Border Router(边界路由器)的IP路由器直接访问。图4显示典型的Thread网络连接。
图4:Thread网络连接
网络中的节点由Border Router分配的前缀构成IPv6全球地址,或者由本地自分配的前缀去构成ULA(Unique Local Address)。网络中使用的路由ID通过Leader分配。Thread使用UDP(User Datagram Protocol)进行消息传输,而不是使用TCP。与TCP不同,UDP是无连接的协议,它摒弃了一些TCP特性,例如错误检测、报文排序和重传以换取更快速和更高效的传输。这种效率相当于减少了传输成本,这对于电池供电、资源受限的设备是极其重要的。Thread使用CoAP(Constrained Application Protocol)结合UDP去保持高效性,同时克服了UDP的一些限制。CoAP实现了重构以支持重传和分组排序。CoAP进一步为GET、POST、PUT和DELETE方法的轻量级(版本提供支持,能够容易的转换成HTTP实现与万维网的连接)。利用离线网络CoAP到HTTP代理,Thread可以从浏览器中直接查询IoT设备!
●低功耗运行
Thread为低功耗运行的可休眠终端节点提供了特别支持。正如其名称所暗示,这些可休眠的终端设备大部分时间处于低功耗休眠状态。在Thread协议中,不检测处于休眠状态的设备,以此来延长电池寿命。发送给可休眠终端设备的消息由它们的父节点缓存。消息传输仅仅在休眠终端设备被唤醒并查询父节点时才被触发。
●可扩展性和弹性
Thread的网络设计目标是支持多于250个节点。在此约束下,多种特性和功能被优化用以提供最大化的吞吐量和最小化资源需求。在Thread网络中,活动路由器的最大数量是32个。这样产生的一个重要的结果是路由信息能够被有效的通过网络分发,并且所有路由器能够直观的维护网络中的所有路由。当节点添加到网络并且拓扑结构改变时,网络通过交换MLE(Mesh Link Establishment)消息做调整。如果有作为终端设备操作的Router Eligible设备,能够自主添加额外的路由器。这种Router Eligible终端设备或者REED,聆听路由信息,并且在需要提升网络的整体性能时,向网络中的Leader申请成为路由器。
Thread是强大的、能自我修复的网状网络,提供无单点故障能力。如果一个路由器发生了故障,网络将动态变向发送传输,绕过故障节点。如果一个Leader失效了,网络中的另一个路由器将被自动的选择成为新的Leader。多个边界路由器能够为离线网络通信提供故障失效安全的冗余。
●互操作性
Thread Group已经发布了标准的软件测试工具用于所有Thread协议栈和最终Thread产品认证。这种测试工具将被提供给所有Thread成员公司以便在Thread认证测试之前获得高质量的软件开发和测试。
所有Thread组件(IC、软件协议栈或模组)在作为终端产品提供给用户之前必须获得Thread认证。所有想要携带Thread标识的终端产品设备必须提交他们的设备到批准的实验室进行认证。
●安全和人性化
Thread网络易于使用并极其安全。Thread在MAC层使用AES-128保护所有网络传输,并且利用ECC和J-PAKE逻辑组合安全添加设备到网络(即Commissioning)。应用有能力选择利用基于标准的IP安全协议(例如DTLS)以实现额外的、安全的应用载荷。
Thread网络假定用户有一个可用的Commissioning设备用于添加新设备到Thread网络。Thread可以指定离线网络设备(例如智能电话和计算机)和在线网络Thread设备成为Commissioner。离线网络设备必须首先请求Thread Border Router以成为注册Commissioner,符合Thread指定的安全DTLS认证。一旦注册,Border Router将代表Commissioner候选人与Leader协商成为授权的Commissioner。在线网络设备不需要注册,但是可能需要与Leader协商以被授权(Leader确保网络中同一时间仅仅有一个Commissioner被激活)。一旦得到授权,激活的Commissioner将会以广播方式通知到整个Thread网络。
在加入Thread网络时,用户通知Commissioner设备有个新设备将要加入,并且输入一个唯一的与加入设备相关的密码。这种密码被用于建立安全的DTLS会话来认证并授权给加入的设备。仅仅在那时设备有权访问Thread网络。一旦设备加入到网络,Commissioner设备不再处于激活状态。
●加速产品上市
随着物联网设备的快速普及,对于产品来说,越来越重要的是尽快从概念阶段进展到产品上市。Thread和Silicon Labs有助于加速产品上市。
●应用开发
Thread没有规定应用层,而是为其提供基本的消息传送服务,例如使用UDP和CoAP的单播和组播消息服务。类似Wi-Fi,Thread关注消息的安全和可靠传输,使用低功耗的网状网络代替高功耗的星状网络。使用Silicon Labs AppBuilder工具,利用易于使用的回调函数(callback)和插件(plug-in)使协议栈层细节不再抽象化,以简化IP消息传输。在框架中开发的应用代码是高度可移植的,并且可以在支持的802.15.4设备之间重用。AppBuilder提供简单的GUI去配置设备和网络参数,例如设备类型、命令、组网和加入行为,以及安全模式和操作。Silicon Labs提供容易定制和扩展的Thread示例应用帮助用户快速启动项目开发。
●网络调试
在为网状网络开发应用时,理解、适配和调整网络层是重要的开发阶段。传统的解决方案使用无线sniffer去远程捕获空中网络传输包。Silicon Labs网络IC在芯片内部集成了这种能力,使用Packet Trace专用的双线接口,输出被设备发送接收的每个数据包以及链路质量信息。这些信息能够通过Desktop Network Analyzer工具收集起来,将完整的网络信息传输可视化。Desktop Network Analyzer通过事件联系所有通信活动并且解码Thread消息。网络活动可以被记录很长时间,从而识别网络中极少发生或间歇性发生的问题。
MCU 传感器 自动化 ZigBee Freescale ARM 物联网 相关文章:
- USB接口芯片的原理及应用 (04-15)
- 一种无线语音传输系统设计方案(08-28)
- TI 率先推出符合 ZigBee? 2006 标准的平台(01-29)
- 富士通载运业内首款针对基站和用户单元用途5.8GHz WiMAX系统芯片(04-24)
- 电子巡查系统中GPS智能移动终端设计(08-13)
- 公话网智能家居系统设计方案(05-05)