CTP源码分析3 CTP链路质量估计层结构及源码分析(二)----LEEP协议中的Trickle算法

LEEP帧的发送的时间间隔不是固定的,而是采用了非常巧妙的方法兼顾了链路质量估计的变化和广播帧发送的开销。

受到Trickle算法加持的LEEP协议实现是下面的效果:当链路刚刚开始构建的时候这个时候拓扑还没有构成,那么就需要进行大量的LEEP帧发送,来进行链路估计和路由建立;当拓扑结构逐渐趋向于稳定的时候,这个时候LEEP帧的发送频率会逐渐降低(但降低到一定程度便不再降低了)。但是如果一旦发现了路由没有形成或者路由需要变换以及有新节点的加入,那么就会将LEEP帧的发送频率重新置到最高。


Trickle(涓流)算法

Trickle做到了LEEP帧发送频率的逐渐减弱的效果。

Trickle算法的核心在于计时器,和一个时间区间[Imin,Imax],以及一个时间点t。时间区间I一开始是是Imin,但是这个I并不是最终的间隔时间,时间点t是最终发送LEEP帧的时间点,t和I满足下面的关系,t在区间[I/2,I]中随机取一个值,如果在一次LEEP帧发送之后没有出现任何意外,整个系统的拓扑结构稳定,那么就I就翻倍,然后重新选出一个t时间点然后在t的时间点发送LEEP帧,这样子就达到了发送间隔逐渐边长的效果,并且整个系统发送的平均时间间隔达到了3I/4。当然I的增加不是无限的,只要达到了Imax就不再增加。其实看结果是在不断扩大t的取值,但是实际上是在让3I/4这个值(系统平均的LEEP发送时间间隔)在链路质量稳定的情况下不断翻倍。一旦检测到类似于节点的物理空间转变或者新节点的加入,那么就要重置I为Imin,然后重复这个过程。而Imin和Imax是要人为设定的。当然TinyOS中的实现也有些出入,不过大体就是这个思路。


Trickle算法的精神在路由引擎中得以实现,因为正如前文所说路由帧和LEEP帧2位一体,所以Trickle算法来路由引擎中发送路由帧的计时器上得以体现。


下一篇将会开始进入看源码实现的环节。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值