基于消息聚合的RPL协议控制开销精简算法
2019-09-09
1 引言
随着物联网技术[1]的快速发展,被广泛应用于多种领域。其中节点能量受限[2],节点内存大小受限,无线链路不稳定的低功耗有损网络(low power and lossy networks,LLN)[3]成为当下的研究热点。国际互联网工程任务组(internet engineering task force,IETF)针对LLN网络为其制定了一种基于IPv6的LLN路由协议(routing protocol for LLN,RPL)[4]。当前,对RPL路由协议的研究主要集中在网络负载均衡[5]及网络拥塞检测与控制[7]等。近年来针对RPL路由协议组网的相关问题,已经进行了一定的研究。文献[9]中对RPL路由协议进行了仿真实验,文献指出在RPL路由协议在组网时,网络中存在大量的控制消息且控制开销较大的原因是由于网络中DAO控制消息以及DAO-ACK控制消息的数目较多,文献[10]针对RPL路由协议在组网时下行路由构建中存在大量目的地通告对象(Destination Advertisement Object, DAO)控制消息的现象,提出了一种聚合DAO控制消息机制,但该方案增加了组网时延。文献[11]针对RPL路由协议在非存储模式下大量通告对象消息聚积, 导致网络拥塞, 并且转发过程中占用节点缓冲区的问题,提出了一种Delay DAO定时器的新算法。通过向子节点发送后向压力消息及时调整Delay DAO定时器的值, 从而控制中间节点对消息的转发,但该方案本质上是一种拥塞缓解策略,并未减少RPL路由协议中控制开销的数目。
本文针对RPL组网中目的地通告对象确认消息(Destination Advertisement Object Acknowledgement,DAO-ACK)消息数目较多的问题,提出了一种RPL中精简DAO-ACK控制消息的算法,并通过仿真实验对所提的算法进行了验证。
2 RPL基本原理
RPL协议构建网络拓扑的过程如图1所示。在LLN中构建面向目的地有向无环图(Destination Oriented Directed Acyclic Graph, DODAG)的过程中主要用到以下4种控制消息:
图1 现有网络拓扑构建过程
(1)DODAG信息对象(DODAG Information Object, DIO);DIO消息主要用于构建上行路由和路由维护,由细流计时器控制发送,网络拓扑构建由根节点发起。根节点在构建DODAG时,首先广播DIO消息。邻居节点接收到DIO消息后决定是否加入到该DODAG中。如果邻居节点选择加入到该DODAG中,则根据DIO消息中的目标函数(Objective Function,OF)选择最优父节点,并且计算自身Rank值,在自身入网完成后将相关信息添加至DIO消息中,继续广播发送DIO消息;
(2)DAO:DAO消息主要用于构建下行路由,由每个新加入DODAG中的节点向其父节点发送携带自身及其子节点的路由前缀信息的DAO消息。子节点对DAO消息进行转发,直至所有的DAO消息在根节点处汇聚。在存储模式中,除叶子节点外,DODAG中其余所有节点均会存储其子节点发回的DAO消息中的路由前缀信息,从而建立下行路由表。在非存储模式中,只有根节点存储DODAG中所有节点发回的DAO消息中的路由前缀信息,从而建立下行路由表;
(3)DODAG信息请求(DODAG Information Solicitation, DIS);DIS消息主要用于节点主动加入DODAG中时发送的请求加入信息。当节点长时间未接收到DIO消息时,节点广播DIS消息,其邻居节点接收到DIS消息后,均会向其回复一个DIO消息,从而根据接收到的DIO消息选择父节点,节点加入DODAG;
(4)目的地通告对象确认消息(Destination Advertisement Object Acknowledgement,DAO-ACK);DAO-ACK消息主要用于对DAO消息的回复确认,网络中所有的DAO消息都被转发汇聚到根节点,根节点会对每一个收到的DAO消息单播回复DAO-ACK确认消息,从而保证链路的可靠性。至此节点入网完成,已入网节点继续广播DIO消息直至所有节点入网。
3 聚合DAO-ACK新算法
聚合DAO-ACK消息的新算法的基本思路为:取消根节点对收到的每个DAO消息均单独回复DAO-ACK消息的机制,由根节点在一定的时间周期内,对收到的所有DAO消息,统一回复一个包含了多个目的地址的DAOACK消息,具体过程如图2所示。
图2 新算法构建网络拓扑过程
新算法的具体操作步骤如下:
步骤一:根节点广播DIO消息,邻居节点接收到该DIO消息后,选择加入到该DODAG当中节点向根节点单播发送DAO消息,申请入网。
步骤二:根节点对接收到的多个来自邻居节点的DAO消息,提取相关信息,建立路由表。同时将DAO消息的源地址写入待发的DAO-ACK消息头部的目的地址当中。
步骤三:根节点在定时器时间t到期后,将包含了多个目的地地址的DAO-ACK消息发送至多个子节点,定时器时间t的定义如下式所示:
式中T为网络拓扑的构建时间, 为节点对数据进行处理所需的最大时间,为待入网节点到根节点的最大距离,本文用跳数(hop)来指代距离。
步骤四:节点接收到DAO-ACK消息后,查找其中的目的地地址字段,若包含自身地址,则DAO入网申请控制消息已经成功至发送根节点,节点入网完成。节点继续广播发送添加了自身信息的DIO消息。
步骤五:若节点接收到DAO-ACK消息后,查找DAO-ACK消息的目的地地址字段后,未包含自身地址,则节点发送的DAO消息未被根节点成功接收,节点重发DAO消息,重新申请入网。
步骤六:若节点接收到的DAO-ACK消息中包含其下行链路中的节点则节点继续将控制消息转发至子节点处,否则节点删除控制消息包。
步骤七:节点入网完成,添加相关信息发送自身的DIO广播消息,子节点接收到该DIO消息后若选择加入该DODAG则重复步骤二,三,四,五,否则丢弃该广播包。
步骤八:所有节点入网完成,DODAG拓扑构建完成。
4 仿真实验及结果分析
本文使用opnet modeler 14.5仿真软件对所提出算法进行仿真验证。本文从控制开销,DAO-ACK控制消息数目,根节点放置位置,数据包端到端传输时延以及数据包传输成功率对RPL路由协议原算法与新算法进行了对比分析。
4.1 网络场景及参数设置
在为200×200的正方形区域中,设置4种网络场景,4种网络场景中节点数目分别为10,20,30,40。网络中节点均为随机均匀分布的固定节点,节点发射功率约为30 mW,最大通信半径约为50 m,初始能量为5 J,数据分组设置为128 bit,每1 s发送一个数据包,仿真时间设置为100 s。
4.2 控制开销
控制开销数目指的是网络中的DIO,DAO,DAOACK以及DIS这4种控制消息的总比特数。从0可以看出,随着网络中节点数的增加,RPL协议与新算法中的总比特数目均不断增加。但新算法的增加速率要小于原RPL路由协议,这是由于需要中间节点进行转发的DAO-ACK数目不断减小。新算法的控制开销远小于原RPL路由协议,这是由于在控制开销中DAO-ACK的比重较大,通过所提出的精简DAO-ACK消息算法,极大地减少了网络中的DAO-ACK消息的数目。如图3所示。
图3 控制开销比较
4.3 DAO-ACK数目
如图 4所示,两种方案中所需发送的DAO-ACK消息数目。在原RPL路由协议中,除根节点外的所有节点都需通过来自根节点发送的DAO-ACK消息完成入网。即若网络中节点数为10个,则需要根节点发送的DAOACK消息数目为9个,故如图4所示DAO-ACK数目随着网络节点数增加。在新算法中,由于采用了一个DAOACK消息来回复多个DAO消息的思路,导致网络中的DAO-ACK消息数目大幅减少。
4.4 根节点放置位置
如图 5所示,根节点处于网络边缘部分时所需发送的DAO-ACK数目大于根节点处于网络中心。这是由于根节点处于网络边缘时,在节点分布均匀的网络中,以树形拓扑的组网方式中最终所有节点完成入网后的网络深度应高于当节点处于中心位置组网完成后的节点的网络深度。网络深度越大根节点所需回复的DAO-ACK消息数目越多即总的DAOACK消息的数目与网络深度相关。
图5 根节点位于不同位置DAO-ACK数目对比
4.5 数据包平均端到端时延
如图6所示在RPL协议与新算法中,随着网络中网络节点数量的增加,数据包传输的平均端到端时延均逐渐增长,这是由于随着节点数目的增长,网络规模越来越大,RPL路由协议在组网完成后形成的树形拓扑中的网络深度也在不断增加。同时可以看出新算法的数据包的平均传输时延与RPL协议相比时延的差距均在0.3 ms范围内,可见新算法法未对平均端到端时延造成较大影响。
图6 数据包平均端到端时延对比
4.6 数据包传送成功率
显示了数据包传送成功率的具体数值,从中可看出,随着网络节点数目的增加,RPL协议与新算法的数据包传输成功率均维持在1,可见新算法能够在不改变网络中其余性能的状态下有效减少网络中DAO-ACK控制消息的数目。
表1 数据包传输成功率对比
5 结束语
本文针对RPL路由协议在组网时,网络中控制消息数目较多的问题,提出一种基于消息聚合精简RPL中
DAO-ACK控制消息的新算法。新算法通过一个DAO-ACK消息回复多个DAO消息实现减少网络中DAOACK消息的数目。仿真结果表明提出的新算法,能够在不影响网络其他性能的情况下有效减少网络中的DAOACK消息带来的控制开销。