可靠传输ReliableTransmission2014年/第1期物联网技术57无线传感网络中的RPL路由协议研究胡芹艳,尹长川(北京邮电大学信息与通信工程学院,北京100876)摘要:现有的低功耗有损网络路由协议RPL以跳数为唯一的路径选择度量,这样会导致Sink节点周边位置的节点数据压力过大,从而过早将其电量耗尽。为了更好地平衡网络能耗,缓解Sink周边节点的压力,文章在原路由协议的基础上,提出了考虑节点剩余能量的路径选择策略;即在路径选择时综合跳数和节点能量两方面因素,让数据尽量从能量充裕的节点传输。经计算机仿真验证:改进后的路由协议对平衡网络能耗、延长网络整体的生命长度具有较为显著的改善。关键词:无线传感网络;RPL;IP;能量路由中图分类号:TP393文献标志码:A文章编号:2095-1302(2014)01-0057-030引言低功耗有损网络路由协议(RPL)是IETF的ROLL(RoutingOverLowpowerandLossynetworks)工作组,专门针对低功耗有损网络LLN(LowpowerandLossynetwork)新提出来的路由协议[1]。低功耗有损网络是由功率、存储空间、处理能力等资源受限的嵌入式设备所组成的网络。它们可以通过多种链路连接,比如IEEE802.15.4、蓝牙、低功率Wi-Fi,甚至低功耗电力线通信(PLC)等等。ROLL将LLN网络的应用主要划分为四个领域[2]:城市网络(包括智能电网应用)、建筑自动化、工业自动化以及家庭自动化,并且分别制定了针对四个应用领域的路由需求[3-6]。由于LLN的独特性,传统的IP路由协议,比如OSPF、IS-IS、AODV、OLSR,无法满足其独特的路由需求,因此ROLL工作组制定了RPL协议,其协议标准RFC6550[1]发布于2012年3月。本论文首先介绍了RPL的应用场景及基本原理,并在路和点对点(P2P)的应用场景。图1所示为典型的DAG结构。其中的每一个节点至少有一条指向根节点的路径。图1DAG结构示意图1.1DODAG的形成DODAG(DestinationOrientedDirectedAcyclicGraph)是面向目的地的有向非循环图的简称,可以视为物理网络上的逻辑路由拓扑。RPL中定义了由多种ICMPv6消息来控制拓扑的形成。DIO消息用于通告有关DODAG的参数,例如DODAGID、[1]。径选择策略中加入了对节点剩余能量的考虑;最后通过仿真目标函数(OF)、DODAG版本号等其中OF规定了拓扑验证了改进后的路由协议的性能。1RPL协议工作原理RPL是一个矢量路由协议,通过构建有向非循环图(DAG)来形成拓扑结构,加入DAG中的节点自动形成一条指向根节点的路径。RPL主要为数据汇聚型的场景设计,即数据流量由叶节点指向根节点。当然RPL也扩展支持多点对点(MP2P)————————————————收稿日期:2013-11-14基金项目:国家自然科学基金(61271257);北京市自然科学基金(4122034);教育部博士点基金(20120005110007)可靠传输ReliableTransmission58物联网技术2014年/第1期建立及最优父节点的选择方式,规定了节点级别的计算方法,是路径选择的首要参考标准。级别决定了节点在DODAG中的相对位置,主要用于避免回路。DAO消息是用来建立从根节点到叶节点的“向下”的路径。根据节点的存储能力,RPL协议中将节点类型定义为可存储型和非存储型,两者的区别在于是否存储有路由表信息。在图1中,当D节点要和E节点通信时,如果B节点和C节点是非存储型,那么必须先追溯到根节点A,查找路由,即路径为D—C—B—A—B—C—E。若C为可存储型节点,则只需追溯到共同的祖先节点即可找到路由,即路径为D—C—E。DIS消息用于向邻居节点请求可靠传输ReliableTransmission2014年/第1期物联网技术59DODAG信息。当一个孤立的节点没有收到任何DIO消息的时候,可通过DIS向周围节点请求DODAG信息。收到DIS消息的节点会反馈DIO消息给DIS源节点。如图1所示,首先A节点通过DIO消息广播自己创建的DODAG信息,收到DIO消息的节点根据OF来决定是否应该加入该DODAG;加入之后然后再向自己周围的节点继续广播DIO消息;这样一层一层地建立拓扑结构。当节点加入DODAG之后,就自动创建一条“向上”汇聚到根节点的路径。“向下”的路径则由DAO消息完成。1.2定时器管理RPL中使用细流算法[7]来控制DIO消息的发送。细流算法是一个适应性的机制,用来限制控制协议的开销。与传统IP网络不同,LLN网络有着非常有限的资源,必须尽可能的减少控制协议消息所占的比例,但同时又必须要维护好网络结构。当网络改变时,节点会以较高的频率发送控制包;当网络趋于稳定时,则控制流的速率减少。算法中定义了控制消息发送间隔参数I,当网络很稳定时,则I成倍的增加;而网络有动荡时,则发送间隔迅速降为最小值,高频率的发送控制消息以修复网络。本文借助Contiki系统中的Cooja模拟器,对RPL协议进行了仿真。图2所示为节点布局图,并在图3中以节点5为例展示了DIO消息的发送控制过程。从图3中可以看到,当网络刚形成逐步趋于稳定的时候,DIO消息发送间隔成倍增加;图3中23:00和01:20附近陡峭的转折点表明此时监测到节点5和网络存在不一致性,迅速将控制消息发送间隔调至最小值以迅速修复网络。图2ContikiRPL在Cooja模拟器中的仿真图3细流算法对DIO消息发送频率的控制1.3环路避免机制RPL中规定,在沿着叶节点到根节点的路径上,节点级别必须是递减的[1],即父节点的级别必须小于子节点的级别。当节点在网络中位置发生改变时,必须根据父节点重新计算自己的级别。假设节点N的最优父节点为P,P的级别为R(P),那么N的级别R(N)计算公式为:R(N)=R(P)+rank_increaserank_increase为子节点和父节点级别的差值,其算法在OF中有定义。节点的级别在环路避免中有着重要的意义。RPL协议也通过在包头上设定标志位来附带路由控制数据,以避免数据包被循环转发。2考虑节点剩余能量的RPL协议2.1RPL协议原始路由方案目标函数决定了RPL协议的路径选择方式。目前RPL的官方文件中,只明确定义了零目标函数(OF0)[8],即以跳数(HC)为最佳路径选择的唯一标准,而其他的目标函数则由开发者根据需求灵活定义。比如对链路可靠性要求较高的应用,可将链路质量作为路由选择的首要考虑标准;而对能量受限的环境则可以定义在路径中尽量避开电池供电节点。在文档RFC6551[9]中,提出了多种可供开发者参考的路由度量。在选择路径时,若只考虑跳数因素,必然会导致Sink周边节点数据压力过大,从而使关键节点能量过早消耗而死亡。文献[10]将网络的生命长度定义为第一个节点死亡的时间。对于能量受限的低功耗有损网络,如何平衡能量消耗,延长网络整体寿命,是协议要考虑的重要因素。2.2优化之后的RPL路由方案目前已有多种针对无线传感网络能量优化的路由协议,比如分级能量路由协议LEACH和TEEN,以数据为中心的能量有效路由协议DD和SPIN,还有基于地理位置的路由协议GPSR和GEAR等[11]。但这些协议都很难实现和RPL协议的融合。RPL协议是通过在containermetric中,定义路径选择时所考虑的参数,然后再以一定的方式将所需要考虑的参数相结合,从而确定一个合理的路径选择方案。本篇论文中采取的是跳数(HC)和节点能量(EN)相结合的方式。结合方式有两种[12],一种是Lex,一种是Add。Lex是指优先考虑跳数,只有在跳数相同的情况下,才考虑节点能量;而Add则是采取两种参数综合考虑的方式,按照一定的比例相结合,即:其中:可靠传输ReliableTransmission58物联网技术2014年/第1期(a)HC路径选择方案节点能耗(b)HC+EN路径选择方案节点能耗本文对这两种不同的结合方式做了仿真对比。2.3RPL协议改进前后的仿真对比仿真工具采用的是美国UIUC大学开发的针对无线传感网络研究的J-Sim平台,该平台基于Java语言,和NS2相比具有内存消耗小、仿真速度快、有更好的可扩展性等优点。本文仿真了传感网络数据收集的场景。在100×100的区域里,规则的布置有100个节点,图4所示是网络节点布局图和OF0的拓扑结构,其中最左上侧的0号节点为数据汇聚节点,右下侧的49-99和94-98这11个节点为传感器数据采集节点。数据从右下侧的11个源节点发送到左上侧的0号节点。由于该网络具有对称性,1和10对称,2和20对称等,对称节点的能量消耗基本一致。本文中重点仿真了具有代表性的1、2、11、12、22这几个关键节点的能量消耗情况。图5两种路径选择方案的节点能耗本文也仿真了跳数(HC)和节点能量(EN)按照Lex的结合方式,即优先考虑最小跳数,当跳数相同的时候再考虑节点能量,以及在Add结合方式下按0.8HC+0.2EN和0.2HC+0.8EN的不同比例相结合的情况对比。最后得出的结论是,两种不同的结合方式对网络能耗均衡都有一定程度的改善;而Add的结合方式能耗更为均衡,且剩余能量所占的比例越高,改善的效果越为显著。图6所示是在不同路由策略下,关键节点能耗的对比情况。图4网络节点布局图和OF0的拓扑结构对于OF0,由于跳数是路径选择的唯一标准,节点位置固定的网络,其拓扑结构也相对保持不变。图4即为这种情况下的拓扑结构。由图4中可以看到,节点1和节点10承载了4结语图6不同路由策略下的节点剩余能量对比图大部分的数据量,几乎任何从下侧或者右侧源节点发过来的数据都要经过这两个节点转发到Sink节点。而节点11,则只有来自源节点99的数据由它转发。图5所示是系统节点能耗图。其中图5(a)为OF0方案下部分节点能量消耗图。从图中可以看出,最关键的节点1和节点10,能量很快就消耗殆尽。而节点11,则能耗相对较少。这对节点位置固定的网络是很不利的,会使数据量较大的节点在短期内能量迅速消耗完而死亡,而其他非位置关键节点,则一直被闲置。造成网络能耗分布极其不均匀,能量利用率不高。接下来可以仿真跳数和节点剩余能量相结合的路径选择方式,图5(b)为跳数和能量按照2∶8的比例加权所得到的能耗结果。从图5(b)可以看出,节点1、10和11的能耗更为均衡,第一个节点死亡的时间大为延长。跳数和节点剩余能量相结合的路径选择方式,能一定程度上改善以跳数为唯一度量所造成了能量消耗不均的情况,从而延长关键节点的生命长度。仿真中也能看到,最佳路径的拓扑图一直处于动态变化,原先经过节点1和节点10到达汇聚节点的数据,有一部分从节点11分流,从而缓解节点1和节点10的压力。本文描述了RPL协议的基本原理,并且对原路由协议的路径选择策略进行了改进,在只考虑跳数的基础上,加入节点剩余能量的考虑,从而平衡了网络能耗,延长网络整体寿命。由于RPL是近几年新提出的协议,随着实践的不断深入,越来越多的新问题被提出,还有很大的研究空间。RPL协议在物联网领域有着广阔的应用前景,值得广大学者进一步深入研究。5致谢本论文的工作得到了实验室项目的大力支持。感谢国家自然科学基金(61271257),北京市自然科学基金(4122034)和教育部博士点基金(20120005110007)对本文研究工作的支持。参考文献[1]WINTERT.RFC6550RPL:routingprotocolforlowpowerandlossynetworks[S].USA:InternetEngineeringTaskForce,2012.[2]VASSEURJP,DUNKELSA.基于IP的物联网架构、技术与应用[M].,田辉,徐贵保,译.北京:人民邮电出版社,2011.[3]DOHLERM.RFC5548routingrequirementsforurbanlow-powerandl