The ONE使用笔记:目录

本文将The ONE仿真器使用笔记整理成目录的形式,便于索引,包括概述、使用、路由协议、技术细节、网络编码、Report等。注:本人使用The ONE源码版本是1.5.1 RC2

使用篇

简单实例(无线双向中断网络)

概述篇

数据集

路由协议

技术细节

消息相关

仿真结果Reports

网络编码

仿真场景

BUG

发表评论

电子邮件地址不会被公开。 必填项已用*标注

52 thoughts on “The ONE使用笔记:目录

  • 2016年06月18日 星期六 at 11:32上午
    Permalink

    楼主,你好。 我想问下,ONE可以做基于移动代理的数据融合方面的东西吗? 可以的话,我应该关注哪些地方呢? 最近在研究这方面的东西,但实在没找到什么好的仿真软件。

    Reply
  • 2016年06月06日 星期一 at 03:35下午
    Permalink

    我想问一下楼主,要是想实现自己提出的路由策略,主要需要改写哪些部分,感觉整个仿真器涉及的类太多,对于一个小白,没办法仔细阅读每一部分,主要应该关注哪些地方呢?

    Reply
    • 2016年06月06日 星期一 at 07:17下午
      Permalink

      You can refer to an existing router, like Epidemic, and then focus on the function update().

      Reply
      • 2016年06月07日 星期二 at 02:35下午
        Permalink

        好的,谢谢楼主~

  • 2016年05月26日 星期四 at 04:38下午
    Permalink

    我想问一下楼主,我用createCreates.pl创建了一个load.txt想把数据包导入ONE,但是导入之后它好像不识别,运行之后CreatedMessagesReport为空,MessageStatsReport显示创建的消息及传递率之类的都为零,很郁闷不知道哪儿出问题了

    Reply
    • 2016年05月26日 星期四 at 09:20下午
      Permalink

      Check the setting Events.nrof. It should be something like,

      Events.nrof = 2
      Events1.class = ExternalEventsQueue
      Events1.filePath = nc/traces/infocom05.txt

      Reply
      • 2016年05月27日 星期五 at 11:05上午
        Permalink

        我把load.txt直接放在one.bat所在文件夹下,在settings中设置如下:
        Events.nrof = 1
        # Class of the first event generator
        Events1.class = ExternalEventsQueue
        Events1.filePath = load.txt
        还是出现上述的情况,之后我根据你的笔记写了一个生成消息的python文件,生成的txt可以正常导入ONE工作,所以我更加困惑用createCreates.pl创建消息的方式哪儿出现了问题

      • 2016年05月27日 星期五 at 07:26下午
        Permalink

        Sorry, I am not familiar with Perl. All my connection events are created by Python.

  • 2016年04月29日 星期五 at 12:45下午
    Permalink

    楼主你好,我想问下,您在ONE里设置过节点的休眠和唤醒方法吗? 请问这两种方法要如何设置呢?

    Reply
    • 2016年04月30日 星期六 at 05:49上午
      Permalink

      我自己没弄过。你大概是想节省能量吧?看看Energy模块有没有。

      Reply
    • 2016年07月20日 星期三 at 01:16下午
      Permalink

      你好,请问这个问题你解决了吗?我现在也想在ONE里设置节点的休眠和唤醒状态。

      Reply
  • 2016年04月22日 星期五 at 11:56上午
    Permalink

    你好,请问,我可以再ONE上计算网络的聚集系数吗?

    Reply
  • 2016年04月11日 星期一 at 10:58上午
    Permalink

    您好,如果我想仿真卫星固定的运动轨迹,用The One 大概该怎么去实现呢?请求给一个思路就行,谢谢

    Reply
    • 2016年04月11日 星期一 at 08:35下午
      Permalink

      思路一:自己写个移动模型;

      思路二:事先生成Standard Events,再导入The ONE仿真器。

      Reply
      • 2016年04月12日 星期二 at 04:40下午
        Permalink

        如果我跟你的x拓扑设计思想一样,通过将卫星的连接情况去读入,得到卫星的拓扑,这样行不行呢?

      • 2016年04月12日 星期二 at 05:34下午
        Permalink

        可行。卫星的固定运动轨迹,所以说你的节点是静态的?如果是静态的,那就很好办,大概模拟下节点坐标设置即可;但如果是动态的,还得控制节点移动。

      • 2016年04月13日 星期三 at 10:52上午
        Permalink

        因为卫星是在一个固定轨道上围绕地球运动的,所以运动轨迹是固定的。 就是 通过连接情况将动态转为静态,只在每个连接的时候进行路由的计算。 也就是说我可以把卫星固定,但是只在一些时间段,和一些卫星的间断连接,大概思想就是这样,麻烦指点一下 ,这样在The One中控制,和你的x拓扑设计相似,可不可以?谢谢

  • 2016年03月26日 星期六 at 10:10下午
    Permalink

    您好,如果我只想获得附近节点的connection,而不是通过getConnections()获得所有的,有什么办法吗?也就是说ONE中怎么通过距离或者位置之类的来进行区域行的分析,有关于距离的函数或方法吗?

    Reply
    • 2016年03月29日 星期二 at 09:07下午
      Permalink

      通过以下语句可以得到当前节点的所有邻居节点,即所有邻居节点跟当前节点的距离都小于transmission range.

      for (Connection con : getConnections())
      DTNHost to = con.getOtherNode(getHost());

      不过,你可能想要是获取每个节点的具体位置,DTNHost有个函数getLocation()可以达到你的目的,这样你就可以计算任意两个节点的距离了。

      基于位置的区域划分,这类方法蛮多的,取决于移动模型,动静态、全局局部等,建议找一篇geo-based community detection综述性文章来看。

      Reply
  • 2015年10月15日 星期四 at 10:33上午
    Permalink

    您好 想问您一个基本的问题 如果想让两组节点之间进行通信 而不通过事先定义好的接口 而是通过判断两组节点之间的距离 小于一定距离进行通信 这个是否可以实现呢?

    Reply
    • 2015年10月15日 星期四 at 04:28下午
      Permalink

      两组节点的距离,你怎么算? 如果是两个节点,那么他们的距离如果小于transmission range,就自动建立连接了。

      Reply
      • 2015年10月15日 星期四 at 04:44下午
        Permalink

        谢谢您的回答 带我的导师给我的思路是通过仿真器的底层 假设基站范围无限大 就不用考虑距离 直接用一个循环遍布所有网络节点来找到基站 用一个判断if(基站节点和用户节点距离小于多少)就可以进行通信 我想了几天没弄懂这个问题该怎么解决

      • 2015年10月15日 星期四 at 11:06下午
        Permalink

        如果我没理解错的话,你的整个网络包含两种节点:基站(固定的)、移动的节点。节点以某种形式移动,如果进入到某个基站的传输范围,就建立连接。你大概是仿真蜂窝网络吧?

        如果是这样的话,实现起来就很简单了,先将基站固定,再设置节点的移动模式;设置一个transmission range,就能自动建立和断开连接了。

      • 2015年10月16日 星期五 at 10:28上午
        Permalink

        谢谢您的回答,您好厉害,我是做蜂窝网络仿真的,是我对仿真平台理解还不到位,像您说的这种办法是应该在具体的路由算法里面进行修改么?

      • 2015年10月16日 星期五 at 10:01下午
        Permalink

        当然不是。咱们所讨论的是mobility model,你可以关注仿真器MovementModel。建议你花些时间,大概了解了The ONE仿真器。

      • 2015年10月22日 星期四 at 04:54下午
        Permalink

        请问怎样解决基站问题解决了么,不知怎么设,求教

  • 2015年09月10日 星期四 at 04:16下午
    Permalink

    你好 我想问个关于输出数据图表的问题 我看到ONE里有个文件夹toolkit 里面都是perl脚本文件 是否运行这些脚本文件可以自动生成数据图表。例如那种看路由算法的消息传输成功率的表格这种。 如果不是用那个脚本 那用什么可以绘制这种数据图表呢?

    Reply
    • 2015年09月10日 星期四 at 04:44下午
      Permalink

      可以用perl脚本,但你可能需要根据自己需要稍做修改。还有很多方法,可以绘图。我目前用的是atplotlib。

      Reply
      • 2015年09月11日 星期五 at 02:05下午
        Permalink

        是matplotlib吗?用python语言写的?

      • 2015年09月15日 星期二 at 12:44下午
        Permalink

        你好,我有个问题,就是消息传输时,它是分了messages和deliveredMessages以及其他的不同消息的存储区,那么接收到的消息是放在messages里的,已经完成传输的放在deliveredMessages中,那么就是说当节点A要发送一条消息的话,那么节点A碰到哪个节点就把消息传给该节点,节点判断如果不是目标节点的话就放在messages中而不是deliveredMessages中,然后当节点碰到目的节点的时候,该节点判断若是目标节点就增加一个response字段,然后返回给A吗? 是这么理解的吗? 如果是这样理解的话 是否可以理解成如果是放在messages中那就不算A把消息传给该节点? 这里一直不太理解,感觉如果这样理解的话DirectDeliverly和Epidemic的写法就说的通的感觉。

  • 2014年12月16日 星期二 at 12:25下午
    Permalink

    谢谢!~

    Reply