The ONE使用笔记:导入不含节点位置的数据集

网络仿真器NS2/NS3,接受的数据集包含坐标信息(即位置信息)。但有些外部数据集,如Infocom06,只包含节点相遇情况,没包含节点位置信息。最近了解到The ONE(The Opportunistic Network Environment simulator)仿真器可以处理这些数据。本文介绍将数据集转换成符合The ONE格式以及将其导入The ONE。

1. The ONE标准事件格式

将数据集转换成The ONE标准事件的格式,以CRAWDAD上的Infocom05为例,Infocom05数据集每行表示一对节点相遇情况(节点i,节点j,时间开始,时间结束,…, …),举例如下:

1    40    21574    21687    1    0
1    29    21578    21687    1    0
1    30    21687    21687    1    0

将每一行转换成如下格式,以上述第一行为例,如下(时间 CONN 节点i 节点j 连接建立/没有连接):

21574 CONN 1 40 up
21687 CONN 1 40 down

完成上面的转换,只需写一个简单awk脚本即可,源代码如下:

BEGIN { 
    CONN = "CONN"
    UP = "up" 
    DOWN = "down"
}

{
    node_i = $1
    node_j = $2
    time_start = $3
    time_end = $4

    print time_start, CONN, node_i, node_j, UP 
    print time_end, CONN, node_i, node_j, DOWN 
}

值得注意的是,上述的awk脚本需要进一步完善,如调整开始时间从0或1开始(我的是从1开始),节点从0开始。除此之外,上述的产生的数据集还不能直接使用,需要对其排序sort -k1,1n -k3,4n -k5,5dr

2. 导入The ONE

将上述新得到的数据集文件导入The ONE仿真器,体现在配置文件,即将移动模型设成静态StationaryMovement,事件类型设成外部事件队列。相关配置如下:

Scenario.simulateConnections = false
Group.movementModel = StationaryMovement
Group.nodeLocation = 0,1

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

其他配置可参考The ONE javadoc的常量值/one_1.5.1-RC2/doc/constant-values.html

另,我尝试着用The ONE仿真网络编码,欢迎交流sparkandshine@163.com

参考资料:
[1]Encounter traces for the ONE simulator

赞赏

微信赞赏支付宝赞赏

发表回复

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

79 thoughts on “The ONE使用笔记:导入不含节点位置的数据集

  • 2019年10月31日 星期四 at 12:17上午
    Permalink

    Scenario.simulateConnections = false,请问这个为什么是false

    Reply
    • 2020年01月11日 星期六 at 06:47下午
      Permalink

      `simulateConnections`意思是“Should connections between hosts be simulated”。值为`false`表示节点间的连接不仿真(逻辑抽象)。

      Reply
  • 2017年03月21日 星期二 at 04:51上午
    Permalink

    本文说的是导入The ONE仿真器的标准事件格式。你说的应该是由CreatedMessagesReport产生的报告吧?

    Reply
  • 2017年03月09日 星期四 at 05:46上午
    Permalink

    博主,您好,表示节点的传输范围的那个圈是在哪里设置的?是否可以设置两个传输范围?

    Reply
    • 2017年03月09日 星期四 at 11:57上午
      Permalink

      You can set the transmission range with transmitRange (unit: meters) in your setting file, for instance,

      btInterface.transmitRange = 10

      Reply
  • 2017年03月03日 星期五 at 07:12下午
    Permalink

    楼主您好,我按照您的配置文件进行外部数据集配置,messagestatsreports结果都是0,能否发一份配置文件,感激不尽。

    Reply
    • 2017年07月19日 星期三 at 12:02下午
      Permalink

      楼主你好,这里是刚刚学习ONE 的新人一枚。我在导入真实的trace的时候按照配置文件修改了,但是生成的有关于message的report都没有数据,是为什么呢

      Reply
      • 2017年07月21日 星期五 at 12:47上午
        Permalink

        你检查下Network Interface设置对了没。

  • Pingback: The ONE使用笔记:创建自定义网络拓扑 | | Spark & Shine

  • 2017年01月14日 星期六 at 04:37上午
    Permalink

    请问楼主知有用过sumo生成适用于The ONE 的trace么?

    Reply
      • 2017年02月21日 星期二 at 07:05下午
        Permalink

        是的,还在努力中!

  • 2016年10月05日 星期三 at 04:41上午
    Permalink

    请问一下,我导入了haggle6-infocom6这个数据集,但是仿真时始终只有5个节点,能解答一下么?谢谢

    Reply
      • 2016年10月05日 星期三 at 06:52下午
        Permalink

        是的,就是从GUI观测得。而且仿真结果也很差。
        Scenario.simulateConnections = false
        Group.movementModel = StationaryMovement
        Group.nodeLocation = 0,1
        Events.nrof = 1
        Events1.class = ExternalEventsQueue
        Events1.filePath = data/H-Infocom5.txt
        Events1.size = 500k,1M
        Events1.hosts = 0,125
        Events1.prefix = M
        配置这样有问题么?其他的就是使用默认的

      • 2016年10月06日 星期四 at 12:46上午
        Permalink

        You configures look fine for me. It is not precise or wise to observe how nodes move from GUI as the node location is not included into the trace.

        You said the simulation results are terrible. Did you mean the delivery probability? If yes, actually, such results make sense because Epidemic is flood-based protocol, leading to a lot of replications and transfers.

      • 2016年10月09日 星期日 at 12:27上午
        Permalink

        谢谢,结果我已经做出来了,之前有部分参数设置存在问题。但这些数据集背景不是很懂,能简单说明一下infocom6该数据集的背景么?Bubble Rap那篇文章我也读过了,每一个数据集都提到了,但还是没太明白这些数据集是如何采集,统计基于什么?网上能找的资料也少的可怜,希望予以解答,谢谢

    • 2018年05月28日 星期一 at 09:41下午
      Permalink

      请问你是怎么把参数调整好的呢,我最近也在研究怎么把数据集导入the one中,导入过程中也遇到和你一样的问题,出来的report都为0,请问你是怎么解决的呢?

      Reply
  • 2016年03月10日 星期四 at 09:34下午
    Permalink

    THE ONE能处理gps trace吗,还是一定要转换为标准事件。如果是的话,处理数据时是不是只要在通信范围内就都算conn up

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

      据我所知,The ONE不能直接处理gps trace,需要额外的处理,可以写个脚本将其转换成标准事件。

      恩,两个节点的距离小于transmission range视为两个节点建立连接。

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

        thx,只是数据集有点大。。。