Thread1.2是对Thread1.1向后兼容的,但是也在1.1上增加了一些新的特性,在此做个介绍.

主要有以下几点:

  • IEEE 802.15.4 链路优化(IEEE 802.15.4 Link Optimizations)
  • 增强等待帧(Enhanced Frame Pending)
  • 增强心跳(Enhanced Keep Alive)
  • 同步休眠终端设备(Synchronized Sleepy End Devices)
  • 链路指标(Link Metrics)
  • 改善网络运行情况并降低功耗(Improving Network Health & Reducing Energy)
  • 可扩展的异构网络(Scalable Heterogeneous Networks)
  • 骨干路由器(Backbone Routers)
  • 协调大规模组播(Coordinated Large Scale Multicast)
  • 线程域单播寻址(Thread Domain Unicast Addressing)

IEEE 802.15.4 链路优化(IEEE 802.15.4 Link Optimizations)

这个主要是IEEE 802.15.4的底层优化,提升了效率与性能,特别是对SED设备(休眠终端设备)减少了网络开销(与Thread网络相关的唤醒次数与RF(CPU)运行时间),从而使功耗降低.

增强帧挂起(Enhanced Frame Pending)

该功能可以让SED设备(休眠终端设备)进一步减少与Thread网络相关RF发射次数而没有明显代价.实现方式是:在IEEE 802.15.4标准中,SED设备若想知道自己的父节点有没有为自己(本SED设备)缓冲的数据的唯一方式是通过发送MAC数据请求命令帧去轮询父节点,这个轮询会导致一些开销(空中流量,SED端功耗).增强帧挂起功能可以允许SED向父节点发送任何数据的时候都可以同时向父节点确认有没有为自己(本SED设备)缓冲的数据.这种顺带查询的操作对SED设备基本没有额外开销(因为本来就要给父节点发数据)从而间接减少与Thread网络相关的RF发射次数从而降低功耗(流程如下图).

增强心跳(Enhanced Keep Alive)

该功能也是为SED设备(休眠终端设备)进一步减少与Thread网络相关RF发射次数而准备的.在Thread1.1中SED设备若需要保持与网络的连接,需要主动发送MAC数据请求传输以保持跟父节点的连接.而本功能可以允许SED设备通过发送任何数据来保持跟父节点的连接,而不是只能通过MAC数据请求,所以对于一些基本上经常发送,但是很少接收的SED设备(例如温湿度传感器),配合增强帧挂起(Enhanced Frame Pending)功能,可以做到基本上永远不需要发送MAC数据请求,因为本功能可以替代MAC数据请求的定时心跳包功能,且增强帧挂起(Enhanced Frame Pending)功能允许在SED设备发送的任何数据后查询是否有为自己缓冲的数据.

同步休眠终端设备(Synchronized Sleepy End Devices)

该功能作为一个可选功能,它定义了一种新的设备类型:同步休眠终端设备(SSED)(相对于SED).SSED的应用场景是那种需要快速响应且需要低功耗的设备.类似人体传感器配合小夜灯场景中的小夜灯.SSED 设备通过使用 IEEE 802.15.4-2015的协调采样监听 (CSL) 功能来实现这一点.就是SSED设备与父节点做时间同步,并在约定的间隔打开SSED设备的 接收器来创造一个父节点向SSED设备发送数据的RF窗口.同样的,父节点会缓存需要发送给SSED设备的消息,并在下一个RF窗口发送给SSED设备.这样SSED设备可以处于一种频繁唤醒但又很快继续休眠的状态.以达到高实时性与低功耗.与非同步的SED设备不同,SSED设备的这个RF窗口时间更小(因为降低了传输的数据量,不是常规的MAC数据请求).由于每个设备(SSED设备)的RF时间窗口更小,所以同一空间里,可以共存的设备会更多,因为冲突的可能性更低.并可以通过调整RF窗口的频率与占空比,来实现功耗与实时性与多设备的平衡.

链路指标(Link Metrics)

该功能允许Thread设备全面评估与周边节点的链路.这允许SED(休眠终端设备)设备到其父节点的链路以获得最佳性能.这是通过调整发射功率,接收放大或者通过多天线来实现的.这些优化可用于最大限度地延长电池寿命,增加链路可靠性并改善网络健康状况.它们与可以降低传输功耗的SED和SSED以及大型密集网络尤其相关.设备可以对链路执行快速单次测量,也可以持续监控链路质量,从而实现简单评估或强大的动态链路优化.此功能的实用性和灵活性允许任何设备为上层应用提供合适的工具.Thread1.2听了三种方法来从链路中提取链路质量数据.首先,设备可以发送直接链路质量探测请求,被探测设备立即做出回应.其次,可以在两个节点之间开始一系列的链路质量探测行为.将来可以提取整合的链路测量数据(包括链路预算,消息计数,RSSI和IEEE 802.15.4链路质量指示).

改善网络运行情况并降低功耗(Improving Network Health & Reducing Energy)

通过使用链路测量功能来降低发射功率,以改进整个网络的健康状况.IEEE802.15.4使用载波侦听多路访问/冲突避免(CSMA/CA)机制.有了CSMA/CA,发射设备会首先检查通道是否畅通,然后再尝试传输数据,如果发射设备观察到信道是空闲的,则开始传输数据,如果通道不是空闲的,则会等待随机时间间隔后重新判断通道是否空闲,若空闲则开始传输数据.当所有节点都有能力检测到所需信道是否空闲,这在大型网络中很少见,如果一个节点不能发现超出其范围的正在发生的RF传输事件,由于接收节点可能在干扰源存在的情况下工作,因此其传输可能导致冲突.这就是所谓的"隐藏节点问题",此问题影响大多数无线通信协议,并且由于通讯冲突导致重试,可能导致吞吐量降低并增加延迟与功耗.当然,提高发射节点的发射功率也就提高了它在其他非接收节点中检测到干扰的概率,反之亦然.这就是链路质量的用处.减少发射功率不仅可以节省功耗,而且对于大型网络,它会带来一个更健康的网络状态.

可扩展的异构网络(Scalable Heterogeneous Networks)

家庭和建筑物中的联网的物联网设备在数据处理,功耗和连接特性上有着广泛而又不同的要求.有些设备可能需要外部电源供电,并具有高带宽连接,而有些传感器和执行器由电池供电,只需要较低的带宽但是需要更灵活的无线连接.Thread1.2引入了协议增强功能,可以轻松地将具有不同特性的IoT设备相互连接,或者连接到本地或远程服务器.通过这些增强,受限的无线低功耗物联网环境可以集成在跨商业办公楼的大型装置内,多住宅单元甚至校园网络的大规模安装中.Thread1.2还描述了如何创建多个无线Thread网络或多个Thread网络如何通过更大带宽的网络(例如基于以太网或Wi-Fi网络)互连,以及Thread网络边界上的设备如何帮助以标准化的方式管理跨子网边界的IP转发.为了实现这一点,Thread1.2继续依赖于端到端IP/IPv6技术提供坚实基础.这些技术具有广泛的现有硬件设施基础,可以轻松地与现有网络基础设施集成,以进行云或边缘计算.此外,这些技术和管理管理基础设施已经为我们所熟悉.(下图显示了一个使用主干链路的多段网络的示例,主干链路将多个thread网络或多thread网络分区与其他本地或远程IPv6基础设施相连接.)

骨干路由器(Backbone Routers)

骨干路由器(BBR)是驻留在Thread边界路由器中的函数,用于:

  • 促进范围大于本地无线mesh网络的入站和出站多播IPv6数据包在Thread网络分区之间的流动.
  • 还可以跟踪共享Thread域配置中的Thread设备,也可以与其他BBR一起跟踪.

在Thread网络或子网内,BBR向其服务的Thread网络上的其他节点广播特定的服务器数据,以描述其骨干路由器功能.在实现BBR功能时,边界路由器可以与其他BBR同步信息和操作.如果BBR共享到同一非Thread网段(例如家庭LAN,楼宇管理网络或VLAN)的外部接口,则通过实现新定义的Thread骨干链路协议,使用该外部网络作为骨干链路来执行BBR同步.正如Thread1.1规范所描述的,一个Thread网络可以有多个活动边界路由器.这具有提供冗余,恢复能力和防止外部通信单点故障的优点.因此,BBR功能也可以在连接到同一Thread网络的多个边界路由器上使用.为了允许特征协调,BBR功能在两个设备中的一个设备中运行,从辅助BBR状态开始,然后多个BBR参与选举算法以选择主BBR.

主BBR保存由Thread域设备在其Thread网络中注册的所有域单播地址(dua)的列表.这使得主BBR能够代表已注册的Thread域设备回答骨干链路上的IPv6邻居用于发现设备的查询.可以回答这些查询是使外部网络中的IPv6节点可以访问Thread域设备的原因.任何辅助BBR都处于备用状态,如果当前主BBR停止运行,则可能会接管主BBR角色.

对于具有配置的Thread域IPv6前缀的网络,BBR为具有可由外部(非Thread)设备发起的Thread域地址目的地的分组提供路由和转发.在骨干链路上,使用Thread骨干链路协议和邻居发现(ND)代理操作实现该功能.

协调大规模组播(Coordinated Large Scale Multicast)

在建筑物,校园网,甚至是大型住宅网络中,照明开关的切换等输入事件有可能需要同时向多个大规模的,具有良好时间同步性的灯具发送动作(例如使其开灯或关灯.会发送消费者可能感兴趣的传感器数据的设备也使用多播传输(例如煤气传感器传播煤气泄漏警报).

使用端到端标准化IP多播在由多个网段或子网组成的异构网络上传播多播降低了复杂性,并允许不依赖于链路层网段的具体情况的灵活配置.这允许模块化,去耦合的网络配置.为了实现更大规模的多播操作,Thread1.2主机可以为高于本地链路的多播作用域订阅IPv6多播组.

在较大的安装中,一个IPv6网络可以细分为多个IPv6子网.每个子网都可以使用不同的网络技术(例如Thread,以太网或Wi-Fi).在这种安装中,通常需要以统一的方式使用IPv6多播通信来寻址IPv6设备组,而不需要在应用层上了解网络拓扑(例如:不知道组成员在网络拓扑中的连接位置,也不知道使用什么网络技术或中间路由器来连接它们).任何IPv6节点都是IPv6多播消息的潜在生产者或侦听特定于应用程序的IPv6多播地址的消费者.

Thread1.2定义了Thread边界路由器的管理功能和其他线程设备的注册功能,以便在多个IPv6子网上实现无缝IPv6多播.启用的内容包括:

  • Thread设备可以接收来自其Thread网络外部的源的多播数据包.
  • Thread设备发送的多播数据包可以被转发到其Thread网络之外.
  • 将来自一个Thread网络的多播数据包转发到另一个Thread网络而不重复.

采用的主要方法是使用IETF RFC 3810定义的多播侦听器发现v2(MLDv2)协议定义的概念,同时避免在受限无线网格中直接使用MLDv2协议所导致的线程网络上的复杂性和通信开销.骨干由器上的功能被定义为,如果Thread网络上的至少一个Thread设备在BBR处注册为特定多播组的多播侦听器,该多播通信量由BBR通过ietfrfc7731定义的低功耗有损网络多播协议(multicast Protocol for Low Power and Lossy Networks,MPL)转发到Thread网络上.MPL提供了一种向节点传播多播通信量的优化方法,优于简单地用多播通信量淹没网段.

BBR使用灵活配置的传播功能,允许根据流量方向(入站或出站)和IPv6多播作用域跨网络边界传播多播流量.

骨干路由器直接在其骨干链路上实现MLDv2协议,以便于与标准IPv6(多播)路由器或MLD窥探交换机集成.BBR将在其外部接口上使用MLDv2,代表其本地Thread网络上的多播侦听器,与更广泛的IPv6 LAN/WAN就其需要侦听的IPv6多播组进行通信.它侦听的组是其多播侦听器表中的组.MLDv2允许Thread设备接收IPv6多播数据包,即使这些数据包需要通过一个或多个上行IPv6多播路由器.例如,骨干链路上的IPv6多播路由器将侦听BBR发送的MLDv2多播侦听器数据,并根据这些报告调整其多播路由拓扑.

默认情况下,主BBR将在其Thread接口上接收的管理本地或更高范围的IPv6多播数据包转发到骨干链路上.骨干链路上支持多播路由协议的非Thread IPv6路由器可以进一步将这些IPv6多播分组路由到其他网段(如果需要).如果骨干链路上的不同Thread网络的另一个主BBR的网络上存在这些包的侦听器,则可以使用MPL将这些包转发到其Thread网络上.同时遵循BBR组播包过滤规则,以减少Thread网络上不需要的组播流量负载.

线程域单播寻址(Thread Domain Unicast Addressing)

Thread域是一组接收和使用公共Thread网络的Thread设备

域操作配置.Thread域操作配置使Thread设备能够加入并参与超出单Thread网络限制的更大的互连系统.用户或网络管理员可以使用Thread调试或Thread边界路由器的功能来为属于不同Thread网络或具有潜在不同的每网络凭证的分区的Thread设备设置公共Thread域操作配置.驻留在Thread边界路由器中的BBR函数与属于同一Thread域的其他骨干路由器联合执行协调任务.

Thread域的主要属性是Thread域前缀,它是一个IPv6地址前缀,允许Thread设备配置域单播地址(DUA).

Thread域可以无缝集成多个Thread网络和非Thread IPv6网络.Thread域网络的一个主要优点是,设备可以加入配置了公共Thread域的任何可用Thread网络,从而在网络大小或数据量增大时减少了手动网络规划或麻烦的手动重新配置.一组连接多个Thread网络的同步BBR可以确保域地址可以在网络中找到和路由,从而将地址查询机制从单Thread网络扩展到多Thread网络,Thread网络分区或共享公共Thread域配置的网段.为了在骨干链路上提供到DUAs的IPv6连接,主BBR基于IETF RFC 4389实现IPv6邻居发现(ND)代理.主BBR仅作为其Thread网络分区中设备的注册域地址的选择性代理.这使得连接到骨干链路的常规IPv6路由器或另一BBR能够使用ND协议与Thread域设备进行交互,就像它是同一IPv6链路上的邻居一样.

Thread域前缀表示为骨干链路的on-link前缀.这使得BBR能够使用ipv6nd代理函数以标准方式处理在骨干链路上接收的Thread设备的ipv6nd查询.