网络仿真器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
微信赞赏
支付宝赞赏
Scenario.simulateConnections = false,请问这个为什么是false
`simulateConnections`意思是“Should connections between hosts be simulated”。值为`false`表示节点间的连接不仿真(逻辑抽象)。
本文说的是导入The ONE仿真器的标准事件格式。你说的应该是由
CreatedMessagesReport
产生的报告吧?博主,您好,表示节点的传输范围的那个圈是在哪里设置的?是否可以设置两个传输范围?
You can set the transmission range with
transmitRange
(unit: meters) in your setting file, for instance,btInterface.transmitRange = 10
楼主您好,我按照您的配置文件进行外部数据集配置,messagestatsreports结果都是0,能否发一份配置文件,感激不尽。
It is wired. Generate the report “FloatingMessageReport” using the batch mode.
OR take a look at “MessageDeliveryReport” and check if the field “relayed” equals 0.
Refer to http://sparkandshine.net/en/the-one-use-notes-delivered-messages-related-reports/#4_FloatingMessageReport for more info.
楼主你好,这里是刚刚学习ONE 的新人一枚。我在导入真实的trace的时候按照配置文件修改了,但是生成的有关于message的report都没有数据,是为什么呢
你检查下Network Interface设置对了没。
Pingback: The ONE使用笔记:创建自定义网络拓扑 | | Spark & Shine
请问楼主知有用过sumo生成适用于The ONE 的trace么?
没有耶,你是做vehicular ad-hoc networks?
是的,还在努力中!
请问一下,我导入了haggle6-infocom6这个数据集,但是仿真时始终只有5个节点,能解答一下么?谢谢
Where do you see 5 nodes, from GUI?
是的,就是从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
配置这样有问题么?其他的就是使用默认的
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.
谢谢,结果我已经做出来了,之前有部分参数设置存在问题。但这些数据集背景不是很懂,能简单说明一下infocom6该数据集的背景么?Bubble Rap那篇文章我也读过了,每一个数据集都提到了,但还是没太明白这些数据集是如何采集,统计基于什么?网上能找的资料也少的可怜,希望予以解答,谢谢
请问你是怎么把参数调整好的呢,我最近也在研究怎么把数据集导入the one中,导入过程中也遇到和你一样的问题,出来的report都为0,请问你是怎么解决的呢?
THE ONE能处理gps trace吗,还是一定要转换为标准事件。如果是的话,处理数据时是不是只要在通信范围内就都算conn up
据我所知,The ONE不能直接处理gps trace,需要额外的处理,可以写个脚本将其转换成标准事件。
恩,两个节点的距离小于transmission range视为两个节点建立连接。
thx,只是数据集有点大。。。