网络仿真器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 up21687 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

参考资料:

[1] Encounter traces for the ONE simulator

本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2022-03-01 10:21

results matching ""

    No results matching ""