THE ONE使用笔记(2)——路由算法顽健性分析

1.实验背景

目前机会网络中的安全问题还没有一个有效的解决方案,传统基于加密和身份认证的方案难于在机会网络中实现。在这种情况下,若能对路由算法本身健壮性做出准确的评估,对建立高效的安全体系具有重要意义,可以减少安全体系的资源开销,甚至可以直接解决某些安全问题。

2.路由算法分析

2.1 Direct Delivery算法

Direct Delivery(也称为Direct Transmission)算法[18]是单副本路由算法,即在整个网络中仅存在一个报文副本。该算法源节点仅在遇到目标节点时才将报文交付给下一个节点。

2.2 Epidemic算法

Epidemic 算法的基本思想是当2 节点相遇时交换对方没有的报文,经过足够的交换后,理论上每个非孤立的节点将收到所有的报文,从而实现报文的传输。在Epidemic 算法中,每个报文有一个全局唯一的标识,每个节点中保存一个概要向量用来记录节点中存在哪些报文。当2 节点相遇时,首先交换概要向量,获知对方存储报文情况后,双方仅传送对方没有的报文。Epidemic 算法本质上是一种洪泛算法,每个节点都将报文转发给所有遇到的邻居节点。其主要优点是能最大化报文传输的成功率,减少传输延迟[21],主要缺点是网络中存在大量的报文副本,会消耗大量的网络资源。

2.3 Spray and Wait算法

Spray and Wait 算法[22-23]分为两个阶段,Spray 阶段和Wait阶段。在Spray 阶段,源节点中的部分报文被扩散到邻居节点;在Wait 阶段,若Spray 阶段没有发现目的节点,那么包含报文的节点通过Direct Delivery方式把报文传送到目的节点。Binary Spray and Wait是Spray and Wait 算法的一种改进,算法机制是当源节点遇到新中继节点时,将一半报文发送给新中继节点,自己留下一半报文;随后源节点和中继节点重复进行上述过程,直到所有节点中只有一份报文,此时节点转入Wait阶段,采用直接传输给目的节点。Spray and Wait 算法优点是:传输量显著地少于Epidemic和其他泛洪算法;传输延迟较小,接近于最优;有更好的可扩展性,无论网络的规模大小、节点密度如何改变,都能保持较好的性能。

2.4 Prophet 算法

Prophet 算法定义了一个传输预测值来描述节点间成功传输的概率。当2 个节点相遇时,节点更新各自的传输预测值,并利用该值来决定是否转发报文。

2.5 MaxProp算法

MaxProp算法的核心是每个节点维护一个报文队列,按照该队列传输或删除报文,该队列是依据各报文到其目标节点传输开销排列的。传输开销是报文成功传输到目标节点概率的一个估计,是通过增量平均化方法来估算的。在MaxProp 算法中,节点可携带并多次转发报文,一个节点将持续地转发报文给任意其他节点直到报文超时、收到ack通知或由于缓冲区满等原因导致报文被抛弃。

MaxProp 算法基于传输开销来确定报文的优先级。若报文的传输成功概率较小,则会被赋予较低的优先级,使其不易得到传输机会,从而避免生成低效传输的报文副本,提高网络资源的利用率。

3.实验过程

3.1 志愿节点和恶意节点的配置

志愿节点的属性与普通节点一样:

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

3.2志愿节点的作用

志愿节点的加入有助于改善网络的性能,为定量分析志愿节点加入机会网络后对各路由算法的影响,采用图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 指标增损各异。

3.3有志愿节点参与下的泛洪攻击

为定量分析有志愿节点加入机会网络且志愿节点中存在部分恶意节点,恶意节点进行泛洪攻击对各路由算法的影响。采用表1 所示场景,共设置200 个正常节点,80 个志愿节点,在志愿节点中包括0到50 个恶意节点。实验结果如图11至图13所示。

 

 

图11.攻击对传输成功率的影响

 

图12.攻击对传输延迟的影响

 

 

图13.攻击对路由开销的影响

图11表明,在有志愿节点的情况下,泛洪攻击对Direct Delivery没有影响,而对其他四种算法有显著影响,且随着恶意节点的增加,传输成功率下降的趋势明显。

图12表明,泛洪攻击不会对Direct Delivery和MaxProp算法的传输延迟产生影响,而其他三种算法的传输延迟则显著下降。

图13表明,泛洪攻击会使Spray and Wait 算法的路由开销急剧增加,这将导致节点能量的大量损失。对Direct Delivery算法完全没有影响,而对其他三种算法影响不大。

3.4无志愿节点参与下的泛洪攻击

为定量分析没有志愿节点仅有恶意节点进行泛洪攻击对各路由算法的影响,采用表1 所示场景,共设置200 个正常节点,0 到100个恶意节点。实验结果如图14至图16所示。

 

图14.攻击对传输成功率的影响

 

图15.攻击对传输延迟的影响

 

 

 

图16.攻击对路由开销的

14和图11总体趋势类似,表明志愿节点是否存在不会改变总体的趋势。在无志愿节点参与的泛洪攻击下,同样是对Direct Delivery算法没有影响,其他四种算法性能下降明显。

15和图12的总体趋势类似,Direct Delivery MaxProp算法的传输延迟稍有提高,而其他三种算法则明显下降。

16表明泛洪攻击会使Spray and Wait 算法的路由开销急剧增加,对Direct Delivery 算法完全不能产生影响,对而其他三种算法影响相对轻微。

4.实验结论

本次试验的结果表明,志愿节点对机会网络贡献有限,志愿节点的贡献不能抵消恶意节点攻击对网络的影响。本次实验还表明,当恶意节点数量较少时,攻击难以奏效,要攻击成功,需要有较大比例的恶意节点,且即便是攻击成功也难以令机会网络完全崩溃,从该角度而言,机会网络的各种路由算法和传统网络相比是相当健壮的。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
KMP算法是一种字符串匹配算法,用于在一个文本串S内查找一个模式串P的出现位置。它的时间复杂度为O(n+m),其中n为文本串的长度,m为模式串的长度。 KMP算法的核心思想是利用已知信息来避免不必要的字符比较。具体来说,它维护一个next数组,其中next[i]表示当第i个字符匹配失败时,下一次匹配应该从模式串的第next[i]个字符开始。 我们可以通过一个简单的例子来理解KMP算法的思想。假设文本串为S="ababababca",模式串为P="abababca",我们想要在S中查找P的出现位置。 首先,我们可以将P的每个前缀和后缀进行比较,得到next数组: | i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | --- | - | - | - | - | - | - | - | - | | P | a | b | a | b | a | b | c | a | | next| 0 | 0 | 1 | 2 | 3 | 4 | 0 | 1 | 接下来,我们从S的第一个字符开始匹配P。当S的第七个字符和P的第七个字符匹配失败时,我们可以利用next[6]=4,将P向右移动4个字符,使得P的第五个字符与S的第七个字符对齐。此时,我们可以发现P的前五个字符和S的前五个字符已经匹配成功了。因此,我们可以继续从S的第六个字符开始匹配P。 当S的第十个字符和P的第八个字符匹配失败时,我们可以利用next[7]=1,将P向右移动一个字符,使得P的第一个字符和S的第十个字符对齐。此时,我们可以发现P的前一个字符和S的第十个字符已经匹配成功了。因此,我们可以继续从S的第十一个字符开始匹配P。 最终,我们可以发现P出现在S的第二个位置。 下面是KMP算法的C++代码实现:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值