RPL协议、6blr边界路由和6lowpan技术解释

无线传感器网络协议

6Lo WPAN协议是IETF推出的物联网标准协议,其目的是在低功耗无线个域网上使用IPv6技术实现万物互联,该协议完全适合于资源受限传感器节点构成的无线传感器网络。在无线传感器网络教科书中,一般把6LoWPAN协议也称为无线传感器网络标准协议。6Lo WPAN协议栈结构如图2所示。
RPL协议、6blr边界路由和6lowpan技术解释_第1张图片

RPL协议、6blr边界路由和6lowpan技术解释_第2张图片
上图中,表明了6LoWPAN协议、IPv6协议以及IEEE802.15.4协议之间的关系。左侧部分显示了那些非受限设备怎样接入互联网中,大多数Linux主机都是非受限制设备,这些设备通常拥有足够内存空间和强大的运算能力,如运行Openwrt系统的TL-WR703N,对于非受限制设备来说,能够将IPv4层作为网络层协议,物理层和链路层基于IEEE802.3协议来实现。对于资源受限制低功耗设备,由于基于IEEE802.15.4协议来实现无线传输数据,所以直接使用IPv6协议是不可能的,必须通过IPv6加6LoWPAN的方法,将IPv6数据包首部通过6LoWPAN协议压缩分组后添加到IEEE802.15.4协议中的有效载荷部分。6LoWPAN技术通过对IPv6协议非必要部分的裁剪和删除,保留和修改必需的部分,解决了低功耗的IEEE802.15.4协议的传输单元和IPv6的最大传输不匹配问题;最终实现低功耗有损传感器网络接入互联网。为了让传感器网络可以拥有更多的子节点,更大范围的利用:IETF工作组发布了用于传感器网络的RPL路由协议。而针对物联网的感知延伸层、网络层及应用层等三层结构,IETF制定了用于应用层的Coap协议,Coap协议用于低功耗受限制设备。感知延伸层主要实现无线传感器网络里的子节点上的传感器实现数据的采集,根据不同传感器和芯片编写相应的代码实现;网络层主要由6LoWPAN协议实现,它可实现IPv6网络与基于IEEE802.15.4标准的传统无线传感器网络的无缝连接。
在使用6LoWPAN协议栈的传感器网络中,物理层和链路层使用IEEE802.15.4协议,网络层使用RPL协议网,RPL协议是IETF专为低功耗有损网络LLN推出的路由协议。运输层一般使用传统TCP/IP协议簇运输层的UDP协议,应用层使用专为资源受限设备设计的类似于HTTP协议的无线传感器网络应用层协议CoAP协议。在目前流行的浏览器软件,如Firefox浏览器中安装插件copper就可支持CoAP协议。

一、RPL

RPL:link

RPL协议、6blr边界路由和6lowpan技术解释_第3张图片

6lbr:
6LBR是6LoWPAN网络边缘路由器,它在整个网络中起着适配的作用,是IEEE802.15.4协议和IPv6相互的连接层。

1、DODAG的构建过程

RPL路由协议规定了一系列的新的ICMPv6控制消息,以交换图的相关信息和构建拓扑。它们分别是:请求信息(DODAG Information Solicitation,DIS), DOD-AG信息对象(DODAG Information Object,DIO), 目的地通告(Destination Advertisement Object,DAO)。
图的构建过程从根或边界路由器(LoWPAN Border Router,LBR)开始。根首先使用DIO消息来广播有关图的信息。监听根节点的邻居节点收到并处理DIO消息,根据目标函数、DAG特点、广播路径开销等等来决定是否加入到这个图当中。一旦节点加入到图当中,它就有了一条通向DODAG根的路由,根则成为这个节点的父节点。节点接着会计算自己在图中的rank值。并向自己的父节点发送包含路由前缀信息的DAO消息。节点也可以使用DIS消息来主动向邻居节点来请求图信息。所有邻居节点重复这一过程,直至在整个网络中构建出一个以LBR为根节点的DOD-AG。DODAG的构建过程的简化流程图如下图所示。LBR发送包含图相关信息的DIO消息,监听LBR的节点A收到之后,加入到图中,并回复包含自己前缀信息的DAO消息给LBR;节点A发送DIO消息,其功率发送范围内的B接收后加入图中并回复DAO消息;网络启动后,节点B曾收到节点C发来的DIS消息,在节点B加入图之后,对节点C发送DIO,邀请其加入DODAG,节点C向其父节点B发送DAO消息,节点B收到后会整合信息,向其父节点发送DAO消息,逐级整合并回送DAO消息直到LBR,在LBR处包含所有节点的前缀信息。

RPL协议、6blr边界路由和6lowpan技术解释_第4张图片

2、RPL的路由过程(边界路由就是6lowpan网络的中心节点)

(边建立路由边传输信息?–下行路由)
节点根据收到的DIO消息,选择父节点,添加路由,广播图信息。通过这种方式构建的图中每个节点都有通向自己的父节点的路由表项,这样叶子节点可以通过向自己父节点发送数据,一直发送至根节点,这种模型称为MP2P(Multi Point-To-Point),或是“向上”路由。
同样的,来自LLN网络外部的信息,从根节点或是某个中间节点,目的是某个叶子节点,这种模型称为P2MP(Point-To-MultiPoint),需要“向下”路由来实现。通常使用DAO消息来完成从上至下的路由建立过程。每个节点在加入图时,会给它的父节点集合发送DAO消息。其父节点在接收了DAO消息后,处理其前缀信息,并在路由表中加上一条路由条目。然后有选择性地聚合从不同节点收到的前缀信息,向它的父节点集合发送DAO消息。这一过程持续进行直到前缀信息到达根节点,建立出到某个前缀的完整路径。不过需要注意的是这种模式称为“存储”模式,要求所有的节点都有可用的存储空间来存储路由表。RPL也支持“非存储”模式,即所有的中间节点不存储任何的路由信息。RPL还支持一种P2P的通信模式,即在图中从某节点到其它节点的通信。
总之,节点需要向上路由时,只需传送给自己的父节点,父节点继续将之发送给自己的父节点,一直向上传送到根。然而,节点需要向下路由,或是需要执行点到点通信时,则根据网络中是“存储”或是“非存储”模式而有所不同。在“存储”模式下,节点存储子图内收到的所有DAO消息的前缀信息,所以P2MP只需根据节点存储的子图内的前缀信息,选择下一跳节点即可,P2P路由只需向上传送到与目的节点的共同祖先,再从祖先节点处选择下一跳节点发送直至目的节点。而在“非存储”模式下,节点存储空间非常有限,所有的前缀信息都存储在LBR处。节点向自己的父节点汇报DAO消息,在图的根节点处汇总整合所有的前缀信息,从而形成向下路由。P2MP或是P2P路由都需要将数据包传送到根节点处,这样当根节点收到了一个目的地为图中某个节点的数据包后,它会将数据包的源路由头部option-field加上路径上的所有节点前缀信息,然后将其发送到下一跳子节点。路径上的每一个中间节点检查源路由头部,再发送给下一跳节点。反复这一过程直至目的节点。
来自LLN网络外部的信息,从根节点或是某个中间节点,目的是某个叶子节点,这种模型称为P2MP(Point-To-MultiPoint),需要“向下”路由来实现;
MP2P(Multi Point-To-Point),或是“向上”路由,叶子节点可以通过向自己父节点发送数据,一直发送至根节点;
P2P:“储存模式”:共同祖先;
“非储存模式”:LBR;

3、环路避免和检测

在传统网络中,由于拓扑改变和节点间未及时同步的问题,可能会导致临时性的环路产生。为了减少数据包的丢失、链路拥塞的情况,必须尽快检测出环路。在LLN中,环路的影响是有限的,并且这种环路的产生可能是暂时的,所以过度反应反而会导致更大程度上的路由碰撞和能量消耗。因此,RPL的策略是不保证不会出现环路,而是试图避免环路的出现。RPL定义了两种规则来避免环路,这两种规则都依赖于节点的“rank”值。

1、最大深度规则,不允许节点选择图中深度更大(rank值更大)的节点作为自己的父节点。
2、拒绝节点“贪婪”规则,不允许节点试图移动到图中更深的地方,以增加自己潜在父节点的数量。

RPL的环路检测策略是在RPL的路由头部中设置相关的bit位,通过这些bit位来检测数据的有效性。比如,当一个节点将数据包发向自己的一个子节点,将bit位置成“down”,然后将数据包发送到下一跳节点。收到“down”bit的数据包的节点,查询自己的路由表,发现数据包是在“向上”方向传输的,则证明出现了环路,此时数据包需要被丢弃,并触发本地修复。

4、全局修复与本地修复

RPL支持在链路或节点失效之后的修复机制。RPL支持两种修复机制:全局修复和本地修复。当检测到链路或邻居节点失效后,节点在向上方向上没有其他路由器,则本地修复被快速触发以寻找到替代父节点或路径。当本地修复发生时,有可能破坏了整个网络的最优模式,从而由根节点触发全局修复机制重建DODAG,图中的每个节点都重新运行目标函数来重新选择更优的父节点。

5、Trickle定时器管理{}

在LLN中,资源极度受限,RPL使用了一种称为“Trickle Timer”的定时器来完成自适应的定时器机制,它可以控制发送DIO消息的速率。算法将构建图的过程视为一个一致性问题(当节点检测到网络中出现环路,或是节点加入或移出网络都视为不一致现象。),使用Trickle计时器来决定何时广播D10消息。当网络趋于稳定时,RPL消息的数量减少;检测到不一致现象时,重置定时器加快发送DIO消息以便快速解决问题。
Trickle算法可描述如下:假设lmin为最小时间间隔,Imax为最大时间间隔,l为当前时间间隔,t为当前时间点,K为冗余常量,C为计数器,ldouble为l能够自乘2的最大次数。
(1)开始,设置l为[Imin,Imax]中的一个值。开始第一个时隙。
(2)第一个时隙开始,置C=0,t=[l/2,l)中的一个随机点。时隙终止在l处。
(3)Trickle收到一个一致性传输,就让C+=1。
(4)在时间t,Trickle检查是否有C (5)当I到期就使I2,如I2>Imax.置l=Imax
(6)如果Trickle接收到不一致性传输,Trickle为响定外部events重置timer。
Trickle算法只有在第4步才传输,表示在检测到不一致性并做出反应之间有一个固定的时间间隔。立即反应有可能会引发广播风暴。

二、6lowpan技术

1、背景

低功耗的有损网络LLNS总结起来具有如下特性:
(1)有损网络里设备的数量远远大于当前的局域网。
(2)要求芯片里的代码量不能过大,设备的内存空间受限。
(3)网络里节点之间的通信范围、节点的功耗以及节点所要处理的资源都受到限制。网络里所有的节点设备协同工作,减少能量损耗和提高带宽利用率。
作为低功耗里的基本单位,传感器网络中的设备由于不需要像互联网中的PC端处理极其复杂的功能,网络中的节点具有低速率、低性能、低成本和连接不稳定的特点。LoWPAN网络是低功耗有损网络里的一个特例,网络里的子节点设备遵循着IEEE802.15.4标准

低功率无线个域网(LoWPAN)网络具有如下的特点:
(1)由于物理层帧的长度最大为127字节,MAC层帧的长度最大为102字节,数据链路层的首部包含了一定的安全信息,所以包中的最大数据为81字节。
(2)IEEE802.15.4规定了多种编址方式:既可以用64位扩展的地址,也能够在个域网中使用16位的地址。
(3)带宽多采用2.4GHZ、915MHZ和868MHZ等低带宽的方式,对应的数据速率分别为250kbps、40kbps和20kbps。
(4)拓扑结构分为星形结构和网状型结构。
在LoWPAN技术的使用寿命内,大量的设备需要部署,设备的位置一般是不能预先设定的。由于是临时部署,不易到达设备所在位置,设备移动到新位置。
LoWPAN网络中的节点存在电池耗尽、设备被锁以及物理干扰等不确定的因素,LoWPAN中的设备是不可信的。
LoWPAN网络里的子节点设备为了节能会长时间处于休眠模式,在休眠期间设备不能正常工作。

2、6lowpan体系架构

通过边界路由与外界通信
6LoWPAN的体系架构是由低功耗无线局域网(LoWPAN)构成的,这些LoWPAN可看做物联网的末端网络。LoWPAN可以被定义为三种类型,分别为简单LoWPAN、扩展LoWPAN以及自组织LoWPAN。每个LoWPAN里的节点拥有一个共同的IPv6地址前缀,因此只要节点处于LoWPAN中,无论在哪个位置,这些节点的IPv6地址都保持不变。

简单6LoWPAN网络里的节点拥有相同的64位IPv6地址前缀,专用的6LoWPAN没有与互联网连接,它的地址前缀有可能是唯一本地地址,相当于计算机网络中的局域网。多个简单6LoWPAN网络构成扩展6LoWPAN网络,同时也会拥有多个的边界路由器。6LoWPAN网络里的节点可以分为两类:简单节点和复杂节点,简单节点只负责将节点上的传感器数据进行收集,复杂节点除了收集数据信息外还提供路由转发的功能;每个网络都有一个边界路由器或多个边界路由器用于和外部网络通信。无论简单节点、复杂节点以及边界路由器,它们采用的都是基于IPv6协议与IEEE802.15.4协议结合起来的6LoWPAN协议栈,与传统的IP协议栈不同的是:6LoWPAN协议栈多了一个适配层
RPL协议、6blr边界路由和6lowpan技术解释_第5张图片

3、6lowpan适配层技术

功能如下:
(1)分片和重组:实现IPv6协议数据和IEEE802.15.4标准数据之间的转换。
(2)首部压缩:由于IPv6的头部占的大小为40字节,而UDP的首部占8字节,TCP的首部占20字节大小。鉴于最坏的情形,IEEE802.15.4帧所能提供的最大IP包为81字节,那么留给UDP协议装载的数据只有33字节大小,TCP协议所能装载的数据大小只有21字节,另外由于6LoWPAN协议栈中还存在一个适配层,那么也占用了一定的字节空间,留给数据装载的空间会更少了,为了提高传输率减小开销因此必须对首部进行压缩处理。???
(3)无状态自动配置:6LoWPAN无线传感器网络是一种自动配置地址、自组织的网络4;6LoWPAN传感器网络通过自动配置IPv6地址的方式减小主机端的负载。IPv6地址由节点设备的MAC地址映射形成,例如MAC地址为00-12-4B-00-0C-51-1F-6F。首先从左往右数将MAC地址的第7个比特位反转,即将00变为02,MAC地址变为02-12-4B-00-0C-51-lF-6F。然后加入网络前缀,例如边界路由器发来的网络前缀为FD-00-00-00-00-00,则IPv6地址最终可简写为FD00::212:4B00:C51:1F6F。而且6LoWPAN网络具有不稳定性,子节点随时会加入或者退出,所以需要改进传统的IP协议,引进新的方法来适应6LoWPAN网络自动获取网络地址,并自动发现和配置新邻居的要求。
(4)组网路由协议:在传统互联网里,网络层提供路由的功能,下层协议能够集中精力来处理链路层数据的传输。由于6LoWPAN传感器网络复杂的网络组织结构,为了能完成路由的选择功能,除了需要网络层提供路由功能外,还需要在链路层部署路由功能。路由功能究竟由谁来提供要根据节点芯片的存储空间、睡眠机制以及节点供电等实际情况来考虑。
(5)定义了四种类型的帧:IEEE802.15.4定义了信号帧、数据帧、MAC命令帧和确认帧,数据帧承载IPv6数据包,其中数据帧用于请求功能的确认。

你可能感兴趣的:(物联网)