RPL协议、6blr边界路由和6lowpan技术解释
⽆线传感器⽹络协议
6Lo WPAN协议是IETF推出的物联⽹标准协议,其⽬的是在低功耗⽆线个域⽹上使⽤IPv6技术实现万物互联,该协议完全适合于资源受限传感器节点构成的⽆线传感器⽹络。在⽆线传感器⽹络教科书中,⼀般把6LoWPAN协议也称为⽆线传感器⽹络标准协议。6Lo WPAN协议栈结构如图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:
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处包含所有节点的前缀信息。
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<K,且只有在C<K时允许发送数据包。
(5)当I到期就使I2,如I2>Imax.置l=Imax
(6)如果Trickle接收到不⼀致性传输,Trickle为响定外部events重置timer。
Trickle算法只有在第4步才传输,表⽰在检测到不⼀致性并做出反应之间有⼀个固定的时间间隔。⽴即反应有可能会引发⼴播风暴。
htmlborder⼆、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协议栈多了⼀个适配层
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数据包,其中数据帧⽤于请求功能的确认。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。