机会网络模拟软件-one中的report(中)

1. report

The ONE中有一系列report的参数来检测试验,比如说消息参数就有传输成功率和往返时间、节点接触次数,相互接触次数以及消息传输延迟时间,消息源节点和目的节点的距离等。还有一些用于和其他程序交互的参考模块。节点连接信息可以直接在DTN的模拟环境中体现出来,the ONE就是一个可以用来模拟该环境的模拟器。还有一些生成其他参数的report程序可以输出适合ns2移动节点扩展的移动轨迹。

1 AdjacencyGraphvizReport  节点连接次数报告,反应节点之间的亲密关系,从该报告中可以看到哪些节点连接紧密。节点生成在某段时间内所有节点之间的连接次数

egc2--d3 [weight=3] 表示从开始运行到结束节点c2d3的接触次数,只有运行结束才会产生该报告-----可以利用Graphviz生成邻接图。

2 ConnectivityDtnsim2Report 记录连接的信息,生成两个节点的连接情况

eg715.60 a0 <-> b1 up 表示在时间715.60的时候,节点a0请求和节点b1建立连接,991.60 a0 <-> b1 down表示991.60时间a0请求和b1断开连接

3 ContactsDuringAnICTReport 两个节点的接触次数 eg0 85,前面的数字表示节点a主动找b的连接次数,后面的数字表示节点b主动找a的连接次数,代码中并没有显示出具体节点,如果需要可以在代码中添加相应代码即可。???

4 ContactsPerHourReport 每个小时中所有节点接触的次数 eg0 4,表示第一个小时,接触41 13,表示第二个小时,接触13次。

5 ContactTimesReport 某个时间的接触次数,eg66.0 3 其中66.0表示时间,3表示节点接触次数

6 CreatedMessagesReport  生成的消息的信息,主要包括消息生成时间,消息id,消息大小,消息的源节点,消息的目的节点,ttl大小和是否有反馈消息

7 DeliveredMessagesReport 显示传输成功消息的传输信息,包括消息的接收时间、消息id、消息大小、传递消息的跳数、传递消息的时间、源节点、目的节点、消息余下的ttl有无返回结果以及消息的传输路径内容。

eg# time ID size hopCount deliveryTime fromHost toHost remainingTtl isResponse path

721.6000 M23 1488617 1 51.6000 b1 a0 299 N b1->a0    

  其中721.6000代表消息接收时间 ,M23代表消息id ,1488617代表消息大小1代表传递消息的跳数,51.6000代表消息的传递时间(生成消息时间-接收消息时间),b1消息的源节点,a0消息的目的节点 ,299代表TTl大小,N代表消息没有反馈信息,b1 ->a0代表消息的传输路径是从b1传递到a0

8  DistanceDelayReport  生成消息的一些传输信息,包括源节点和目的节点的距离,消息的产生时间,和消息的跳数以及消息id等内容。

eg# distance at msg send  delivery time   hop count  MSG_ID

81.3747     51.6000    1   M23

其中81.3747代表消息源节点和目的节点的距离,51.6000代表消息产生时间,1代表跳数,M23代表消息的id

9 DTN2Reporter  连接DTN2report 

10 EncountersVSUniqueEncountersReport   该报告反应了节点接触次数和接触的节点个数信息,该报告的行数为节点的个数,中间的数字是该节点和别的节点的接触次数,后面的数字为该节点接触的节点个数

eg

0 4 3
1 3 3
2 4 2
3 3 2
4 6 1

意思就是一共有五个节点,第一个节点接触次数为4,接触了3个节点

11 EnergyLevelReport ??无法运行

12 EventLogReport  记录消息的报告,主要记录内容有消息生成时间,action名字(没有找到调用该方法的地方,没有找到action的具体含义),节点(如果该action的第一个节点不为空就显示第一个节点,第二个节点不为空就显示第二个节点,都不为空就都显示),消息id,其他信息(有就显示,没有就不显示)

13 InterContactTimesReport没看懂 

14 MessageDelayReport 传输延迟消息的信息,包括延迟时间和延迟率 延迟时间=消息收到时间-消息创建时间延迟率=延迟消息个数/创建的消息个数

eg# messageDelay cumulativeProbability

303.0000   0.0033

15 MessageDeliveryReport 消息传输成功率的一个report,报告主要包含消息产生时间,生成消息个数,成功传输消息个数和传输成功率

eg# time  created  delivered   delivered / created

883.0000  30  10  0.3333

四个数字分别代表上述四个指标,其中传输成功率=(1.0 * delivered) / created;

‍16 MessageGraphvizReport‍ 该报告反成功传输消息的信息,在报告开头,显示有多少个消息被成功传输,之后详细列出来成功传输消息的传输路径

eg: 15 messages delivered at sim time 9000.0000

   digraph msggraph{

t3<——>t5;

……}

‍17 MessageLocationReport  需要参数 

18 MessageReport  成功传输的消息的信息,主要包括消息id、消息的创建时间和接收时间

19 MessageStatsReport  该报告是消息的一些综合信息,(不是单个消息的信息,而是所有消息的信息)主要包括创建消息个数(created),延迟的消息个数(relayed),中止失败的消息个数(aborted),丢弃的消息个数(dropped),移除的消息个数(removed),成功传输的消息个数(delivered),传输成功率(delivery_prob)有反馈的消息传输成功率(response_prob),开销率(overhead_ratio),平均延迟(NaNlatency_avg),中位数带宽延迟(NaNlatency_med),平均跳数,中继节点个数,平均节点缓存消息的时间,节点缓存消息的中间时间,平均往返时延,往返时延的中位数

其中传输成功率deliveryprob = (1.0 * delivered成功传输的消息个数) / Created创建消息个数; 开销率overHead = (1.0 * (Relayed延迟的消息个数-this.nrofDelivered成功传输的消息个数)) /this.nrofDelivered成功传输的消息个数; 有反馈的消息传输成功率responseProb = (1.0*this.nrofResponseDelivered) /  this.nrofResponseReqCreated

20 MovementNs2Report 显示节点的下一跳信息,主要有下一跳节点的x坐标和y坐标,以及节点的运行速度。

eg: ns- at 0.79999  “\$node-(1) setdest 1438.52160 400.64871 12.381985”

21 PingAppReporter 生成两个节点的一些信息(具体哪两个节点要在PingAppReporter中指定 ),报告中的内容有报告产生时间,节点a发送消息个数,接收消息个数,节点b发送消息个数,接收消息个数,和三个成功率,分别为节点a的传输成功率=节点a接收消息个数/节点a发送消息个数,节点b的传输成功率,还有节点ab的传输成功率=b接收的节点个数/节点a发送个数(注:具体的ab要在代码中确定)?

22 Report

23 TotalContactTimeReport报告显示所有节点接触的时间和,主要有生成报告的时间和所有节点接触的时间和

‍24 TotalEncountersReport

25 UniqueEncountersReport

‍26 ConnectivityONEReport

 

针对上面一些report分一下类,考察消息的report主要有‍CreatedMessagesReport(生成消息的信息) 、DeliveredMessagesReport (成功传输消息的传输信息)、DistanceDelayReport  (消息的传输距离)、EventLogReport  MessageDelayReport (传输延迟消息的信息)、MessageDeliveryReport (消息传输成功率)、MessageGraphvizReport‍ (成功传输消息的传输路径)、MessageStatsReport (综合信息,包括开销率,传输成功率,平均延迟等)

考察节点信息的主要有 AdjacencyGraphvizReport (节点连接次数报告)、ConnectivityDtnsim2Report (连接信息报告)、ContactsPerHourReport (每小时节点接触次数)、ContactTimesReport (某个时间节点接触次数)、EncountersVSUniqueEncountersReport   (节点接触次数和接触节点个数)、MovementNs2Report (当前节点的下一跳坐标,运行速度)、PingAppReporter (两个节点之间传输成功率)、TotalContactTimeReport(所有节点接触时间总和)、TotalEncountersReport(节点接触的最大次数)、UniqueEncountersReport (接触其他节点的个数)、ConnectivityONEReport  (节点连接的时间)


2. 今天在1.4版本模拟器中新建了链式的拓扑结构

建立新的拓扑结构,只需要更改Data文件夹下面的数据,和配置文件。

期间也遇到了小小的麻烦,第一个就是坐标问题,经过珊珊同学的思考,我们终于搞清楚模拟器中的坐标和定义时节点的坐标的联系了,贴上来,大家一起分享

假设我们新建节点为(XaYa),(XbYb),(XcYc

m=XaXbXc中的最小值, n= YaYbYc中的最大值

则以上三个点在模拟器中相应的坐标为(Xa-mn-Ya),(Xb-mn-Yb),(Xc-mn-Yc

为了这个问题,纠结了一个下午,点的坐标和路径直接相关,而路径建立的不对,就不能用地图模式进行实验。所以解决了节点坐标的问题之后,不能用地图模式进行实验的问题也迎刃而解了(我之前的实验一直不能用地图模式进行)。

1.3版本想对比1.4版本的模拟器还有个优点:reports的结果显而易见,1.3版本的还需要自己分析,自己计算,而1.4版本的直接就生成了可以作为性能考察指标的数据结果。

3. 需要探讨的论文思路

Maxprop算法

Prophet算法

Maxprop算法的性能是目前接触到的几个算法中性能最好的,在基于模型的拓扑结构上运行效果极其的好,好到无法超越,看了这么长时间,对该算法都没有思路

再讲讲第二个算法吧

prophet算法最初出自于《MobiHoc Poster:Probabilistic Routing in Intermittently Connected Netwoks》这篇文章,该算法的思想就是添加了概率的传递性。

PROPHET协议是一种基于概率策略的路由协议,利用节点间相遇的历史信息和传递性来选择下一跳节点,以传输可预测性P(a,b)作为概率度量标准,即:

1 p2=p1+1-p1*0.75(其中0.75也是作者取的数字,为什么选择这个数字,作者并未说明,可能是实验数据显示0.75比较合适)

其中,a表示任意节点,b表示节点a所知道的目的节点,已知abt1时刻相遇的概率是p1,求t2时刻的概率p2,。界定的传输可预测性以向量形式储存,且可在节点间进行交换。

该公式p2=p1+1-p1*a 是针对t1时刻相遇,t2时刻又相遇的节点接触概率的计算方法

2 对于不经常遇见的节点,他们之间的相遇概率会随着时间的增加而减少,计算公式为p2 = p1*rk此方)k为时间,r这里是参数

r值这里取的值为0.98,我经过多次实验发现0.98的效果也是最好。

 3 另外,传输可预测性具有传递性,即若节点A常与节点B连接,而节点B又常与节点C连接,则可以认为节点C与节点A能够以高成功率转发消息。传递性可表示为

p(a,c)=p(a,c)old+(1-p(a,c)old)*p(a,b)*p(b,c)*beta

其中beta属于[0,1],为常量因子,PROPHET协议的消息转发思想为,当节点AB连接时,若节点B具有更高的传输可预测性,则节点A将消息转发到节点B

ONE中的代码为

if (prophetSettings.contains(BETA_S)) {
   beta = prophetSettings.getDouble(BETA_S);
  }
  else {
   beta = DEFAULT_BETA;
  }

代码中定义是这样的:public static final String BETA_S = "beta";

找了几遍都没有找到BETA_S是多大,DEFAULT_BETA的值为0.25.

作者在文章中提到了三点future work

1 增加ACK机制

2 建立模拟场景来分析该算法的好坏

3 改善文章提到的两个方程式,提高传输成功率

针对上述三点改善的地方,第一点已经实现,在十字型拓扑结构下改善效果明显,多个节点情况下不是很明显

对于第二点还没有思路

对于第三点,也尝试了很多,目前还没有找到合适的方法……

这里描述一个别的作者针对第三点所做的改善,一个新作者改进了老作者根据ab节点t1时刻的传输成功率p1估算t2时刻的传输成功率,新作者认为用这个时刻来估计这个值,误差会比较大,他采取的方法是

p=(p1*t1+p2*t2)/(t1+t2)

他的思想不是采取t2时刻的接触概率,而是采取这一段时间的平均接触概率。比如说,现在要计算t2时刻他们的接触概率,新作者的意思是不采取t2时刻接触概率,而是用这段时间的平均概率来表示t2时刻的接触概率。新作者的思路是

先用老作者提出了的公式计算出p2p2=p1+1-p1*0.75计算出来p2
然后用p=(p1*t1+p2*t2)/(t1+t2)这个公式计算出来在[t1,t2]时间段的值  

添加可视化的折线图

作为参照标准的实验运行结果是:

数据传输成功率0.0447(节点传输半径设置的比较小,所以成功率很低)

丢包率 0.4680

开效率0.9008

平均延迟148.7397

节点个数增加一倍

数据传输成功率0.7165

丢包率0.510

开效率:0.9487

平均延迟:208.5433

发送速率增加1

数据传输成功率0.0457

丢包率0.292

开效率:0.4624

平均延迟:144.6739

传输半径增加1

数据传输成功率0.0645

丢包率0.454

开效率:1.1852

平均延迟:143.0825

 

缓冲大小增加1

数据传输成功率0.0774

丢包率0.487

开效率:0.8150

平均延迟:1014.4911

 

TTl大小增加1

数据传输成功率0.0447

丢包率0.467

开效率:1.0076

平均延迟:655.3519

 

消息大小增加1

数据传输成功率0.0232

丢包率0.529

开效率:0.8236

平均延迟:234.5695

在节点比较少的情况下,增加节点个数可以大大提高传输成功率

 

 


你可能感兴趣的:(机会网络模拟软件-one中的report(中))