Thread协议栈分析.docx
- 文档编号:8618488
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:9
- 大小:224.42KB
Thread协议栈分析.docx
《Thread协议栈分析.docx》由会员分享,可在线阅读,更多相关《Thread协议栈分析.docx(9页珍藏版)》请在冰豆网上搜索。
Thread协议栈分析
Thread协议栈的基本原理
重庆邮电大学“新一代无线通信与
网络关键技术研究与实现”项目组
2016.4
Thread协议栈的基本原理
Thread协议栈的修订版本:
2014年11月29日初次修订,2015年7月13日第二次修订。
Thread协议栈的基本特性:
Thread协议栈是一种可靠、性价比高、低功耗、无线D2D(Device-to-Device)通信的开放标准。
它是基于IP网络并在协议栈上能用多种应用层,是专门为连接家庭应用而设计的标准。
Thread协议栈的基本特性主要表现在以下6个方面。
1.网络的安装、启动、运行简单。
Thread网络允许在必要的时候进行自我修复并解决路由问题,对于网络的形成、连接以及维护Thread协议都是很简单的。
2.安全性高。
所有的设备只有在授权以及所有通信都是加密和安全的情况下才会加入到网络中。
3.网络的规模可以是小型化的也可以是大型的。
家庭网络中的设备可以是几个到上百个之间进行变化,并且这些设备之间可以进行无缝通信。
Thread协议的网络层是在预期使用的基础上对网络的操作进行了优化设计。
4.通信范围。
典型的设备与网狀网络进行连接所提供的足够范围足以覆盖一个正常的家庭,并且Thread协议栈的物理层使用扩频技术能够提供较为良好的抗干扰能力。
5.无单点故障。
Thread协议栈能够提供安全与可靠的操作,即使在网络中的个别设备出现了故障或是离开网络,也不会对网络的可靠性与安全性造成影响。
6.低功耗。
Thread网络中的主机设备通过合适的工作周期能保证让两节AA类型的电池工作数年。
Thread协议栈
IEEE802.15.4
Thread标准是基于IEEE802.15.4的物理层(PHY)与MAC层工作在2.4GHz频带上,传输速率为250Kbps。
Thread协议栈使用的是IEEE802.15.4-2006版本的物理层(PHY)与MAC层。
802.15.4MAC层是用基本的消息处理和拥塞控制,MAC层包括设备用于来监听信道的CSMA机制,以及链路层处理重传和对相邻设备之间可靠通信和ACK帧的发送。
MAC层中用于消息上的加密和完整性保护是基于密钥的建立和协议栈软件上更高层的配置,网络层是建立在这些基本机制的基础上,以保证网络中端到端通信的可靠性。
无单点故障
运行Thread协议栈的设备所组成的系统,没有一个设备能表现出单一节点的故障。
尽管在系统中存在某些设备是在执行一特殊的功能,但是Thread协议栈的设计是可以把这样的设备进行替代,而对网络进行持续通信并没有什么影响。
例如,一个正在休眠的子节点要求和父节点进行通信,那么在通信的过程中其父节点就代表了单一故障节点。
但是休眠的设备在它的父节点不能用时,能够并将选择另外一个父节点进行通信,并且这一过程对于用户而言是看不见的。
虽然Thread协议栈是专门为没有单一节点故障而设计的,但是在某些拓扑结构下,可能会存在某些个别的节点没有备份的功能。
例如,在一个系统中只有一个网关,如果网关的能量已经耗尽,网络中没有另外可供选择的网关,网络也就没有办法切换到另外一个网关上面。
Thread网络中的路由器或边界路由器可以在网络的某些功能中承担Leader角色,Leader要求在网络中做出决策。
例如,Leader为网络中的路由器分配地址,同意新路由节点的请求。
Leader节点是通过选举产生,当一个Leader节点失效后,另外一个路由器或是或边界路由器承担Leader的角色。
这整个过程是网络中的节点自主完成的,可以确保网络中没有单一节点的故障。
设备类型
边界路由器
边界路由器是一种特殊类型的路由器,提供从802.15.4网络到其它网络的连接,如:
Wi-Fi和以太网。
边界路由器为用802.15.4标准的网络提供服务,包括非网络路由的服务。
在Thread网络中可能有一个或是多个边界路由器。
路由器
路由器为网络设备提供路由服务,路由器还为试图加入网络的设备还提供连接和安全服务。
路由器在设计的时候是不能够休眠的,但是路由器能够降级处理,能为能够符合条件的终端设备REEDs(Router-eligibleEndDevices)。
路由器——符合条件的终端设备
REEDs能够成为路由器,但是由于网络的拓扑或是条件的限制使得这些设备不能够成为路由器。
这些设备不能为Thread网络中的其它设备提供数据的转发,或是为试图加入网络的设备还提供连接和安全服务。
如果Thread网络中没有数据的交互,Thread网络能够通过管理将REEDs变为路由器。
休眠的终端设备
休眠的终端设备就是主机,这些类型的终端设备只与其父节点进行通信,而且不能为其它设备提供数据转发。
Thread协议栈中的IP栈结构
寻址
在Thread协议栈中的设备支持IPv6的寻址体系,设备配置一个或是多个本地网络地址ULA(UniqueLocalAddress)或是全局单播地址GUA(GlobalUnicastAddress)。
设备在网络启动的时候就选择一个/64的前缀,并在整个Thread网络中使用它,前缀是分配给本地的全局ID,通常称之为一个ULA前缀,也通常称为局部网格ULA前缀。
Thread网络可能有一个或是多个边界路由器,这些边界路由器可能有,也可能没有ULA前缀,这个可用于生成额外的GUA。
在Thread网络中使用其扩展的MAC地址来推导其接口标识符,并且从这个配置链路本地IPv6地址前缀与当地fe80:
:
0/64。
Thread网络中的设备还支持适当的多播地址。
包括连接本地的所有节点的多播,连接本地的所有路由器的组播,以及本地域的组播。
每一个加入到Thread网络中的设备都会分配一个16位的短地址。
对于路由器而方,为其分配的地址主要是用到了高比特位的地址域,其低比特位设置成为0,用于表明该是路由器地址。
对于子节点所分配的16位短地址,是使用其父节点的高比特位和适当的低比特位所构成的。
这样就可以允许Thread网络中的任何其他设备通过地址域中的高比特位简单了解子节点的路由位置。
6LoWPAN
Thread网络使用了头部压缩,Thread网络中的设备在发送消息的时候都会尽可能的压缩IPv6数据包的头部,以达到传输数据包尽可能小的目的。
在网状网络中,链路层转发的消息的更有效的压缩支持其头部压缩。
Thread网络不支持邻居发现,指定用DHCPv6协议为路由器分配地址。
终端设备和REEDs的地址由其父节点路由器来分配地址。
这个短地址是用来配置局部网格的ULA,是用于内部网络通信。
ICMP
Thread网络中的设备支持ICMPv6(InternetControlMessageProtocolversion6)协议,ICMPv6错误消息,以及重复请求和重复应答。
UDP
Thread网络中的设备支持UDP协议,用该协议进行设备之间消息的传输。
网络拓扑
Thread网络支持网络中所有路由器之间的全网连接。
实际中的Thread网络是基于网络中路由器的数量,如果只有一个路由器或是边缘路由器,那么就会形成一个单一路由器的星形拓扑。
如图为一个基本的Thread网络拓扑。
MESH网络
Mesh网络使无线电系统更可靠,它允许用网络中其它节的无线电进行转发数据。
例如,如果网络中的一个节点不能直接给另一个节点发送消息,Mesh网络可以通过一个或是多个节点进行转发消息。
Thread网络的一个本质特征是网络中的所有路由节点能够和其它的节点维持路由与连通,所以Thread网络是不断的维护与连接。
Thread网络中通常有一个限制,网络中的活跃的路由节点限制在32个。
Mesh网络中的休眠的终端设备与REEDs是不能作为其它设备的路由。
这些设备发送消息给它们的父路由节点发送消息,父路由节点就为其子节点进行路由操作。
路由与网络的连通
Thread网络通常有多达32个活跃的路由器,在基于设备路由表的基础上,其路由表中的下一跳对消息进行路由转发。
设备的路由表是通过协议栈来维护的,主要是用于确保所有的路由是连通的,以及为Thread网络中的路由器更新路径。
在Thread网络还用到了RIP(RoutingInformationProtocol)算法。
Thread网络中所有的路由器与其它的路由器交换它们到达其它路由的成本,而这个成本是放在Mesh链路建立MLE(MeshLinkEstablishment)的一个压缩格式里面。
MLE消息
在Thread网络,MLE消息用于建立和配置安全的无线链路、探测邻近设备、维护网络中的设备之间的路由成本。
MLE消息在路由器之间的传输可以是通过单播,也可以是组播。
当拓扑或是网络的物理环境发生了变化时,MLE消息要用于识别、配置、以及保护相邻设备之间的链路。
MLE消息还可以通过Thread网络的信道和PANID分发配置值,这些消息可以通过简单的洪泛方式进行转发。
MLE消息也确保了链路的成本,因为在设备间建立链路的时候,考虑到了非对称链路成本。
非对称链路成本在802.15.4网络是常见的,要保证双向通讯是可靠的,考虑双向链路的成本是很重要的。
路由发现与修护
在低功耗的802.15.4网络中按需路由发现协议是很常用的。
但是,由于在路由发现请求进在网络中需要进行洪泛,对于网络的开销和带宽是很大的。
在Thread网络中所有的路由器周期性交换单跳的MLE广播包,MLE广播包中包含了所有的邻居路由器的链路成本信息、到达Thread网络中其它路由器的路径成本,通过这些周期性的、本地更新的信息,所有的路由器有到达Thread网络中其它路由器的最新路径成本信息,因此,需路由发现协议是不需要的。
在Thread网络中如果一个路由器不能用了,路由器可以在下一个最合适的路线上进行选择一个到达目的节点的路由器。
这种自我修护的机制允许路由器能够快速检测其它路由器何时离开了Thread网络,同时计算出最佳的路径,保持和Thread网络中的其它设备的连通。
在Thread网络中每一个方向的链路质量都是基于来自该相邻设备传入消息的链路成本,这个输入链路的成本被映射到一个链路质量,链路质量为从0到3的值,数值0代表着未知的成本,链路成本是衡量接收信号强度指示值RSSI(ReceivedSignalStrengthIndicator)接收信息的接收等级。
在Thread网络中,到达网络其它任何节点的路径成本是到达这些节点的路径成本的总和是最小的。
路由器监控这些成本,即使是网络的无线链路质量或网络拓扑的发生了变化,也会通过Thread网络中的MLE周期性的广播消息获取新的成本值。
路由成本是建立在两个设备间双向链路质量的基础上的。
路由选择
设备使用IP路由转发数据包。
一个设备的路由表包含着所在mesh网络中多个路由器压缩形式的ULA地址和适配的下一跳地址。
距离向量路由是用于获取thread网络中路线上的路由器地址。
当路由路线在thread网络上,16位地址中的高6位定义了目的路由器的地址。
如果目的地址的低位是0,则该路由器就是最终的目的地。
否则,目的路由器负责根据目的地址的低16位转发到最终的目的地。
如果路由超过了thread网络的范围,则边界路由器负责通知提供特殊prefix服务的leader,并且这个消息被作为包含MLE包在内的thread网络数据进行发布。
而thread网络数据包括:
prefix信息、6lowpan环境、边界路由器、prefix的DHCPv6服务器。
如果一个设备配置一个使用前缀的IPv6地址,它使用SLAAC(无状态地址自动配置)或适当的DHCP(动态主机配置协议)来提供这些服务。
thread网络数据也包括系统默认的边界路由器地址的服务列表。
leader被设计为可以指定一个REEDS升格为Router或者把一个Router降格为REEDS。
Leader也被设定为可以安排路由地址。
但是,如果一个包含所有信息的leader路由正被其他路由占用并且变得不可及时,其他的独立路由就会无需用户干预的被选为leader路由来接管这些信息。
重试和确认
当UDP消息被应用于thread协议栈,仍然需要可靠的信息传递。
这时就会需要使用如下机制:
1)、MAC层重试:
每个设备都会从下一跳中获得MAC确认,如果没有接收到MAC确认消息,就进行MAC层的消息重试。
2)、应用层重试:
应用层可以决定消息是否可靠的关键参数,如果需要,其可以实施自己的重试机制。
Thread网络的加入
一个设备加入thread网络之前,要经过如下步骤:
1)、发现
2)、调试
3)、融合
发现
一个加入设备发现了thread网络,然后建立路由链路为下一步的调试做准备。
这个加入设备可以扫描所有的信道,每个信道的问题请求信标,并等待信标回应。
这个信标包括一个负载,这个负载有包含这个网络的服务集标识符(SSID)和允许加入信标的命令(如果这个thread网络接收这个新成员的话)。
一旦设备发现thread网络,它将使用MLE消息去建立一个邻居路由,直到它可以进行下一步的调试。
如果设备已经调试信息,则发现步骤就不再是必要的了,因为它已经获得的了足够的信息去直接附着在thread网络中。
调试
Thread网络提供了两种调试方法:
1)、使用一个外带的方法去直接给设备配置调试信息,调试信息允许加入设备连接到适当的thread网络以便其尽快加入网络。
2)、建立一个调试会话连接加入设备和调试应用程序的智能手机,平板电脑,或者网络。
调试会话安全地将调试信息传递给加入设备,当完整地完成调试会话后,加入设备就可以适当的加入thread网络中。
注意:
典型的802.15.4提供加入服务的方法仅仅通过一个信标负载附着许可命令,但是信标负载并不在thread网络中使用。
这种方法是最常用在按钮加入没有用户界面或带外信道的设备中。
这种方法用在存在多个可用的网络的情况下设备的转向问题并且还具有一定的安全性。
融合
加入设备通过调试信息与一个父路由建立连接,然后凭借父路由通过交换MLE链路配置消息融入thread网络。
设备要么作为终端节点要么作为一个REED融入thread网络,然后由父路由分配一个16位的短地址,如下图所示:
使用已有密钥融入thread网络
一旦,一个REED融入thread网络,它可以潜在地发送地址请求成为一个路由器
于是它被leader路由器分配一个路由地址。
MLE消息
如果一个设备已经融入thread网络,那它就需要各种消息去维持自身参与thread网络。
MLE提供这样一个服务,它可以分发thread网络数据并贯穿整个网络,并且可以交换链路开销和邻居节点之间的安全性的帧计数器。
MLE消息可以分发或者交换一下信息:
1)、16位短和相邻设备的64位EUI64长地址。
2)、设备性能信息,包括:
休眠终端和休眠主设备的休眠周期。
3)、相邻链路开销。
4)、安全性和相邻设备的帧计数器。
5)、单个路由相对thread网络中其他路由的开销。
6)、更新网络数据,诸如:
信道、PANID、MAC层的网络信标负载参数。
注意:
MLE消息在发现期间将会被加密,除非加入设备在加入之前获得安全密钥。
DHCPv6
DHCPv6[RFC3315]是一个基于UDP协议的客户端服务器协议在网络内管理设备的配置信息。
DHCPv6使用UDP协议从DHCP服务器请求数据。
DHCPv6服务于边界路由器并被用于配置如下信息:
1)、网络地址
2)、设备需要的多播地址
3)、主机服务
管理
ICMP
所有设备支持DHCPv6的错误信息,同时也支持请求回复消息和应答回复消息。
设备管理
设备上的应用层可以访问一组设备的管理和诊断的信息,可以在本地使用或者收集并发送至其他的管理设备。
这些从IEEE802.15.4的MAC层获得并可以被thread使用的信息如下:
ØEUI64位地址
Ø16位短地址
Ø信息容量
ØPANID
Ø数据包的发送和接收
Ø发送或接收的丢包
Ø安全错误
ØMAC层重试次数
被thread使用的网络层信息如下:
ØIPV6地址丢失
Ø邻接表
Ø子表
Ø路由表
储存区:
在该领域工作的器件可用于多种原因被偶然或故意复位。
已被重置的设备需要重新启动的网络操作无需用户干预。
对于此需要一组存储在非易失性存储的信息。
这些信息包括:
Ø网络信息如PANID
Ø安全材料
Ø从网络寻址信息以形成设备的IPv6地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Thread 协议 分析