目前机会网络中的安全问题还没有一个有效的解决方案,传统基于加密和身份认证的方案难于在机会网络中实现。在这种情况下,若能对路由算法本身健壮性做出准确的评估,对建立高效的安全体系具有重要意义,可以减少安全体系的资源开销,甚至可以直接解决某些安全问题。
Direct Delivery(也称为Direct Transmission)算法[18]是单副本路由算法,即在整个网络中仅存在一个报文副本。该算法源节点仅在遇到目标节点时才将报文交付给下一个节点。
Epidemic 算法的基本思想是当2 节点相遇时交换对方没有的报文,经过足够的交换后,理论上每个非孤立的节点将收到所有的报文,从而实现报文的传输。在Epidemic 算法中,每个报文有一个全局唯一的标识,每个节点中保存一个概要向量用来记录节点中存在哪些报文。当2 节点相遇时,首先交换概要向量,获知对方存储报文情况后,双方仅传送对方没有的报文。Epidemic 算法本质上是一种洪泛算法,每个节点都将报文转发给所有遇到的邻居节点。其主要优点是能最大化报文传输的成功率,减少传输延迟[21],主要缺点是网络中存在大量的报文副本,会消耗大量的网络资源。
Spray and Wait 算法[22-23]分为两个阶段,Spray 阶段和Wait阶段。在Spray 阶段,源节点中的部分报文被扩散到邻居节点;在Wait 阶段,若Spray 阶段没有发现目的节点,那么包含报文的节点通过Direct Delivery方式把报文传送到目的节点。Binary Spray and Wait是Spray and Wait 算法的一种改进,算法机制是当源节点遇到新中继节点时,将一半报文发送给新中继节点,自己留下一半报文;随后源节点和中继节点重复进行上述过程,直到所有节点中只有一份报文,此时节点转入Wait阶段,采用直接传输给目的节点。Spray and Wait 算法优点是:传输量显著地少于Epidemic和其他泛洪算法;传输延迟较小,接近于最优;有更好的可扩展性,无论网络的规模大小、节点密度如何改变,都能保持较好的性能。
Prophet 算法定义了一个传输预测值来描述节点间成功传输的概率。当2 个节点相遇时,节点更新各自的传输预测值,并利用该值来决定是否转发报文。
MaxProp算法的核心是每个节点维护一个报文队列,按照该队列传输或删除报文,该队列是依据各报文到其目标节点传输开销排列的。传输开销是报文成功传输到目标节点概率的一个估计,是通过增量平均化方法来估算的。在MaxProp 算法中,节点可携带并多次转发报文,一个节点将持续地转发报文给任意其他节点直到报文超时、收到ack通知或由于缓冲区满等原因导致报文被抛弃。
MaxProp 算法基于传输开销来确定报文的优先级。若报文的传输成功概率较小,则会被赋予较低的优先级,使其不易得到传输机会,从而避免生成低效传输的报文副本,提高网络资源的利用率。
志愿节点的属性与普通节点一样:
Group1.groupID = p
Group1.nrofHosts=200
Group2.groupID = c
Group2.nrofHosts=[0;20;40;60;80;100]
## Message creation parameters
# How many event generators
Events.nrof = 1
# Class of the first event generator
Events1.class = MessageEventGenerator
# (following settings are specific for the MessageEventGenerator class)
# Creation interval in seconds (one new message every 25 to 35 seconds)
Events1.interval = 25,35
Events2.interval = 25,35
# Message sizes (500kB - 1MB)
Events1.size = 500k,1M
# range of message source/destination addresses
Events1.hosts = 0,199
Events2.hosts=[0;0,19;0,39;0,59;0,79;0,99]
# Message ID prefix
Events1.prefix = M
Events2.prefix = W
恶意节点的配置
Group1.groupID = p
Group1.nrofHosts=200
Group2.groupID = c
Group2.nrofHosts=[0;20;40;60;80;100]
## Message creation parameters
# How many event generators
Events.nrof = 1
# Class of the first event generator
Events1.class = MessageEventGenerator
# (following settings are specific for the MessageEventGenerator class)
# Creation interval in seconds (one new message every 25 to 35 seconds)
Events1.interval = 25,35
Events2.interval = 0,1//产生时间的间隔为正常节点的25-35倍
# Message sizes (500kB - 1MB)
Events1.size = 500k,1M
# range of message source/destination addresses
Events1.hosts = 0,199
Events2.hosts=[0;0,19;0,39;0,59;0,79;0,99]
# Message ID prefix
Events1.prefix = M
Events2.prefix = W
志愿节点的加入有助于改善网络的性能,为定量分析志愿节点加入机会网络后对各路由算法的影响,采用图1所示场景,共设置200个正常节点,0 到100个志愿节点,没有恶意节点。实验结果如图8至图10所示。
图8.志愿节点对传输成功率的影响
图9.志愿节点对传输延迟的影响
图10.志愿节点对路由开销的影响
图8表明,志愿节点的加入对Epidemic 和MaxProp算法的影响比较显著,当志愿节点数量较多时,对传输成功率的影响可以达到20%左右,所不同的是对两算法的影响截然相反。而对其他算法影响较小。
图9表明,志愿节点的加入会大大减少Epidemic和Prophet算法的网络延迟,但对其他算法影响不大。
图10表明志愿节点的加入会显著影响Epidemic 和Prophet算法路由开销,当志愿节点较多时路由开销增加了近100%。但对其他算法影响轻微。
综合考虑三个度量值,志愿节点的加入仅对MaxProp 算法和Spray and Wait 算法有积极的影响,而对其他算法或影响不显著,或3 指标增损各异。
为定量分析有志愿节点加入机会网络且志愿节点中存在部分恶意节点,恶意节点进行泛洪攻击对各路由算法的影响。采用表1 所示场景,共设置200 个正常节点,80 个志愿节点,在志愿节点中包括0到50 个恶意节点。实验结果如图11至图13所示。
图11.攻击对传输成功率的影响
图12.攻击对传输延迟的影响
图13.攻击对路由开销的影响
图11表明,在有志愿节点的情况下,泛洪攻击对Direct Delivery没有影响,而对其他四种算法有显著影响,且随着恶意节点的增加,传输成功率下降的趋势明显。
图12表明,泛洪攻击不会对Direct Delivery和MaxProp算法的传输延迟产生影响,而其他三种算法的传输延迟则显著下降。
图13表明,泛洪攻击会使Spray and Wait 算法的路由开销急剧增加,这将导致节点能量的大量损失。对Direct Delivery算法完全没有影响,而对其他三种算法影响不大。
为定量分析没有志愿节点仅有恶意节点进行泛洪攻击对各路由算法的影响,采用表1 所示场景,共设置200 个正常节点,0 到100个恶意节点。实验结果如图14至图16所示。
图14.攻击对传输成功率的影响
图15.攻击对传输延迟的影响
图16.攻击对路由开销的
图14和图11总体趋势类似,表明志愿节点是否存在不会改变总体的趋势。在无志愿节点参与的泛洪攻击下,同样是对Direct Delivery算法没有影响,其他四种算法性能下降明显。
图15和图12的总体趋势类似,Direct Delivery 和MaxProp算法的传输延迟稍有提高,而其他三种算法则明显下降。
图16表明泛洪攻击会使Spray and Wait 算法的路由开销急剧增加,对Direct Delivery 算法完全不能产生影响,对而其他三种算法影响相对轻微。
本次试验的结果表明,志愿节点对机会网络贡献有限,志愿节点的贡献不能抵消恶意节点攻击对网络的影响。本次实验还表明,当恶意节点数量较少时,攻击难以奏效,要攻击成功,需要有较大比例的恶意节点,且即便是攻击成功也难以令机会网络完全崩溃,从该角度而言,机会网络的各种路由算法和传统网络相比是相当健壮的。