无线传感器网络中PECR协议的改进
张涌逸
摘 要:PECR协议中对下游节点是否拥塞仅仅是一种预测,这种预测有时是不准确的,且在下游节点没有满足条件拥塞度和剩余能量的时候,传输层的问题要回到网络层去处理。为了解决PECR协议中存在的这些问题,文章引入了具有发送优先级的两个队列,优先发送优先级高的数据,在实际出现拥塞时会通知上游节点减少发送速率,并先抛弃掉优先级低的数据。在拥塞严重的时候也会抛弃掉优先级高的数据,但不会再回到网络层去处理问题。
关键词:拥塞控制;可靠性;拥塞度;队列
无线传感器网络在刚出现的时候由于数据传输量小,基本不需要传输层协议。无线传感器网络数据传输量的增加,对传输层提出了新的要求,人们也提出了各种各样的传输层协议。这些协议主要是用来提供可靠性保证和进行拥塞控制的。提供可靠性保证的协议有速率单调小任务(Rate Monotonic Small Task,RMST)、无线承载控制(Radio Bearer Control,RBC)、协议地极方向(Conventional Terrestrial Pole,CTP)、保留和终止计划的执行(Executive Retention and Termination Plan,ERTP)和慢存入快取出(Pump Slowly Fetch Quickly,PSFQ)等,进行拥塞控制的有CODE,CCF,PCCP和基于能量优先的阻塞缓解机制(Priority of Energy Congestion Relief,PECR)等。PECR协议也能提供一定的可靠性。利用缓存来进行拥塞检测,通过对过去缓存的变化来预测下一次的变化,进而确定是否出现了拥塞。由于使用前一次的变化值来预测下一单位时间间隔的变化值,这会发生没有拥塞而预测出现拥塞的情况,也会在有拥塞出现而预测到没有拥塞的情况。PECR协议在出现拥塞的时候没有任何的处理方法,甚至在出现拥塞度和剩余能量不能满足选择下一跳的时候还要把任务交到网络层去处理,这是不合实际的[1-3]。因为网络层实际上已把最合理的下一跳路由传达给节点了。为了解决上述的问题,文章在传输层引入了数据传输的优先级,通过传输的优先等级在出现拥塞的时候能把实时信息及时地传输出去,对于那些不是实时的信息可抛弃掉,不需要再把任务交给网络层来处理。
1 PECR协议的改进
PECR协议通过对过去数据增量[1]:
C(k)=b(k)-b(k-1),b(k)表示在时刻k缓存占用大小)的考察,來推测过一个单位时间间隔缓存数据增量仍为C(k)。利用C(k)可预测出在下一个单位时间间隔缓存的拥塞度:
CGT=(b(k)+ C(k))/B (B为缓存大小)
当CGT>a认为出现了拥塞(a拥塞的阈值) 。
既然是预测就会和实际情况有出入。为了解决PECR协议预测时出现的问题我们提出了利用数据发送的优先级来解决此问题。实时信号的优先级较高,非实时信号的优先级较低。为此,在传输层建立了两个队列用来存放数据,每个队列的大小为B。优先级高(比如实时信号)的数据放在一个队列中,优先级低(比如非实时信号)的放在一个队列中。节点对接收到的数据根据包头中的优先级位(可设为0,1,为1时数据优先级较高)进行划分,把数据分配给两个队列。在发送的时候优先发送优先级高的数据。具体在实现的时候如果可能采取每发送n个优先级高的数据后才发送一个优先级低的数据;如果出现有一个队列为空,则只发送另一个队列的数据。仍利用PECR协议来预测拥塞度。利用预测的拥塞度来进行分流。在拥塞真的发生的时候,先抛弃掉优先级低的数据,也就是不发送低优先级的数据。当然,如果只发送优先级高的数据,优先级高的队列如果仍旧拥塞,优先级高的队列中的数据也会被抛弃。
2 改进的BPEC协议流程
改进的BPEC协议在预测到拥塞的时候会采取分流、减少数据传输的速率等措施。在实际出现拥塞的时候会抛弃掉优先级低的数据,在拥塞严重的时候优先级高的数据也会被抛弃。为了适应无线传感器网络计算能力简单的特点,在计算拥塞度、在考察节点是否实际出现拥塞,只以优先级高的队列作为预测出现拥塞和实际出现拥塞的判断依据。当节点优先级高的队列数据超过一半的时候,看作节点实际出现了拥塞[2];拥塞度仍采用BPEC协议的计算方法。
(1)节点根据路由表(由网络层提供)信息确定自己的下一跳信息;(2)节点建立两个缓存队列,一个队列是优先级高的队列,一个队列是优先级低的队列;(3)节点对接收到的数据根据包头中的优先级位(可设为0,1,为1时数据优先级较高)进行划分,分别把收到的数据按优先级放入两个队列。优先级高的队列数据超过缓存的1/2,不再接收数据(也即把接收的数据抛弃);优先级低的队列数据超过缓存的1/2,不再接收数据。(4)每个节点确定自己的C(k),CGT、剩余能量等信息,然后周期性地向其邻居节点进行广播。(5)根据自己的下游节点C(k),CGT、剩余能量等信息确定是否需要分流。如果现在的下一跳节点的剩余能量及预测的拥塞值不超过a,仍选择此节点作为下一跳节点;否则,要重新确定下一跳节点。(6)除去(5)中的下一跳节点,在自己的其余的下游节点中,选择一个节点,使得剩余能量>p(p为可做路由节点剩余能量的阈值),并且取这些节点中拥塞度CGT最小的节点作为自己的下一跳节点。(7)如果优先级高的队列数据超过缓存的1/2,向其邻居节点通报出现了拥塞,上游节点的发送速率减半。此时,向下一跳节点不再发送低优先级队列中的数据,只发送高优先级队列中的数据。如果没出现拥塞,向下一跳节点每发送n个优先级高的数据包才发送一个优先级低的数据包,如果有一个队列为空,只发送另一个队列中的数据。
3 结语
随着无线传感器网络数据通信量的增加,人们对传输层的研究越来越多。PECR协议是一种较早提出的传输层协议,能自适应地进行拥塞控制,也能有一定可靠性保证,还能节约能量。但PECR协议进行拥塞控制时采用的是根据现在缓存的情况来预测下一单位时间间隔缓存情况的方法。仅用这种方法会带来预测不准确的问题,并在实际出现拥塞时PECR协议也不会采取任何措施,有时还需要回到网络层去处理。本文在PECR协议的基础上引入了两个队列,采用优先发送实时信息的方式来发送优先级高的信息,在实际发生拥塞的时候先抛弃优先级低的信息,并通知上游节点减小发送速率的方法来解决这些问题,且不再需要网络层的参与。
[参考文献]
[1]蒋禧,齐建东,曹永洁,等.能量优先的无线传感器网络拥塞缓解机制[J].计算机工程与设计,2011(2):416-419.
[2]卜长清.无线传感器网络实时传输协议的研究和实现[D].重庆:重庆大学,2009.
[3]刘伟荣,何云.物联网与无线传感器网络技术[M].北京:电子工业出版社,2013.