One网络模拟器探索之三:配置文件
One中的配置文件是设置了整个仿真环境的条件,包括以下内容:
1. 想定参数:
1) 想定名称
2) 是否模拟连接
3) 时间步进
4) 仿真结束时间
2. Interface参数
1) 传输速度
2) 传输范围
3. 节点信息(可以以组为单位对节点进行配置)
1) 移动模型(如随机走动模型、基于地图的运动模型);
2) 数量
3) 缓存大小
4) 等待时间范围
5) 移动速度
6) 消息存活最大时间
4. 路由算法
下面对default_settings.txt进行分析:
View Code
1 # 2 # Default settings for the simulation 3 # 4 5 ## Scenario settings 6 #想定名称的作用,主要是生成report文件名称的一部分, 7 #最好每次运行的时候加一个编号,以免仿真结束生成的报告覆盖上一次结果。 8 Scenario.name = default_scenario 9 10 #是否模拟节点连接的动作, 11 #true则GUI界面中节点一直在动,而且会显示节点间的连接状况 12 Scenario.simulateConnections = true 13 14 #时间步进,单位为s, 15 #ONE是时间驱动模型,通过累加时间片来模拟时间的推进 16 #另一个比较有名的商业网络仿真器OPNET,则是事件驱动, 17 #事件驱动就是以事件为单位来模拟时间推进的过程。 18 Scenario.updateInterval = 0.1 19 20 # 43200s == 12h 21 #仿真整个过程持续时间 22 Scenario.endTime = 43200 23 24 #interface可以理解为DTN节点上的无线网卡, 25 #在仿真器中的功能主要是判断两个节点是否连通 26 #以及连通的传输速率,常量和变量都可以。 27 ## Interface-specific settings: 28 # type : 属于interface包中的哪个类,直接写类名称 29 # For different types, the sub-parameters are interface-specific 30 # 对于SimpleBroadcastInterface, 参数如下: 31 # transmitSpeed : interface传输速率 (比特每秒) 32 # transmitRange : interface传输范围 (米) 33 34 # "Bluetooth" interface for all nodes 35 btInterface.type = SimpleBroadcastInterface 36 # Transmit speed of 2 Mbps = 250kBps 37 btInterface.transmitSpeed = 250k 38 btInterface.transmitRange = 10 39 40 # High speed, long range, interface for group 4 41 highspeedInterface.type = SimpleBroadcastInterface 42 highspeedInterface.transmitSpeed = 10M 43 highspeedInterface.transmitRange = 1000 44 45 # Define 6 different node groups 46 Scenario.nrofHostGroups = 6 47 48 ## Group-specific settings: 49 # One中节点的组织是通过组实现的,属于同一组的所有节点的参数配置一样 50 # groupID : Group's identifier. Used as the prefix of host names 51 # nrofHosts: number of hosts in the group 52 # movementModel: movement model of the hosts (valid class name from movement package) 53 # waitTime: minimum and maximum wait times (seconds) after reaching destination 54 # speed: minimum and maximum speeds (m/s) when moving on a path 55 # bufferSize: size of the message buffer (bytes) 56 # router: router used to route messages (valid class name from routing package) 57 # activeTimes: Time intervals when the nodes in the group are active (start1, end1, start2, end2, ...) 58 # msgTtl : TTL (minutes) of the messages created by this host group, default=infinite 59 60 ## Group and movement model specific settings 61 # pois: Points Of Interest indexes and probabilities (poiIndex1, poiProb1, poiIndex2, poiProb2, ... ) 62 # for ShortestPathMapBasedMovement 63 # okMaps : which map nodes are OK for the group (map file indexes), default=all 64 # for all MapBasedMovent models 65 # routeFile: route's file path - for MapRouteMovement 66 # routeType: route's type - for MapRouteMovement 67 68 #当仿真场景中涉及到多个组,那么可以设置所有组都默认的设置 69 #然后在具体每个组再根据自己的特点进行设置,这样的设计可以简化节点配置 70 # Common settings for all groups 71 Group.movementModel = ShortestPathMapBasedMovement 72 Group.router = EpidemicOracleRouter 73 Group.bufferSize = 2000M 74 Group.waitTime = 0, 120 75 # All nodes have the bluetooth interface 76 Group.nrofInterfaces = 1 77 Group.interface1 = btInterface 78 # Walking speeds 79 Group.speed = 0.5, 1.5 80 # Message TTL of 300 minutes (5 hours) 81 Group.msgTtl = 300 82 83 Group.nrofHosts = 40 84 85 # group1 (pedestrians) specific settings 86 Group1.groupID = p 87 88 # group2 specific settings 89 Group2.groupID = c 90 # cars can drive only on roads 91 Group2.okMaps = 1 92 # 10-50 km/h 93 Group2.speed = 2.7, 13.9 94 95 # another group of pedestrians 96 Group3.groupID = w 97 98 # The Tram groups 99 Group4.groupID = t 100 #Group4.bufferSize = 1000M 101 Group4.movementModel = ShortestPathMapBasedMovement 102 Group4.routeFile = data/tram3.wkt 103 Group4.routeType = 1 104 Group4.waitTime = 10, 30 105 Group4.speed = 7, 10 106 Group4.nrofHosts = 2 107 Group4.nrofInterfaces = 2 108 Group4.interface1 = btInterface 109 Group4.interface2 = highspeedInterface 110 111 Group5.groupID = t 112 #Group5.bufferSize = 1000M 113 Group5.movementModel = ShortestPathMapBasedMovement 114 Group5.routeFile = data/tram4.wkt 115 Group5.routeType = 2 116 Group5.waitTime = 10, 30 117 Group5.speed = 7, 10 118 Group5.nrofHosts = 2 119 120 Group6.groupID = t 121 #Group6.bufferSize = 1000M 122 Group6.movementModel = ShortestPathMapBasedMovement 123 Group6.routeFile = data/tram10.wkt 124 Group6.routeType = 2 125 Group6.waitTime = 10, 30 126 Group6.speed = 7, 10 127 Group6.nrofHosts = 2 128 129 130 ## 消息生成参数 131 # 事件发生器数量 132 Events.nrof = 1 133 # 事件发生器一的类名 134 Events1.class = MessageEventGenerator 135 # (following settings are specific for the MessageEventGenerator class) 136 #消息生成的时间间隔,(在25~35秒之间生成一个消息) 137 Events1.interval = 25,35 138 # 消息大小 (500kB - 1MB) 139 Events1.size = 500k,1M 140 # 消息源节点和目的节点的地址范围 141 #(one中节点的地址就是一个整形数字) 142 Events1.hosts = 0,125 143 # 消息ID前缀 144 Events1.prefix = M 145 146 147 ## 移动模型的设置 148 # seed for movement models' pseudo random number generator (default = 0) 149 MovementModel.rngSeed = 1 150 # World's size for Movement Models without implicit size (width, height; meters) 151 MovementModel.worldSize = 4500, 3400 152 # How long time to move hosts in the world before real simulation 153 MovementModel.warmup = 1000 154 155 ## Map based movement -movement model specific settings 156 MapBasedMovement.nrofMapFiles = 4 157 158 MapBasedMovement.mapFile1 = data/roads.wkt 159 MapBasedMovement.mapFile2 = data/main_roads.wkt 160 MapBasedMovement.mapFile3 = data/pedestrian_paths.wkt 161 MapBasedMovement.mapFile4 = data/shops.wkt 162 163 ## Reports - all report names have to be valid report classes 164 #所有报告都是在report包中的类名指定 165 #报告的数量,或者最后需要输出多少种报告 166 Report.nrofReports = 5 167 #启动时间,或者说从什么时候开始收集数据 (模拟器的相对时间,单位是秒) 168 Report.warmup = 0 169 #报告生成的文件默认存放目录,相对于ONE源码顶级目录开始 170 #如果是多次仿真对比结果,需要每一次都修改为不同的目录,以免被覆盖 171 #或者修改最开始的Scenario的名称 172 Report.reportDir = reports/ 173 #需要生成哪些报告,每个报告在上面的目录下生成一个txt文件。 174 Report.report1 = MessageStatsReport 175 Report.report2 = MessageDelayReport 176 Report.report3 = MessageDeliveryReport 177 Report.report4 = MessageGraphvizReport 178 Report.report5 = MessageReport 179 180 181 ## Default settings for some routers settings 182 ProphetRouter.secondsInTimeUnit = 30 183 SprayAndWaitRouter.nrofCopies = 6 184 SprayAndWaitRouter.binaryMode = true 185 186 ## 优化设置,会影响到仿真的速度 187 ## 详细见core.world类 188 Optimization.cellSizeMult = 5 189 Optimization.randomizeUpdateOrder = true 190 191 192 #界面设置 193 ## GUI settings 194 195 # GUI underlay image settings 196 GUI.UnderlayImage.fileName = data/helsinki_underlay.png 197 # Image offset in pixels (x, y) 198 GUI.UnderlayImage.offset = 64, 20 199 # Scaling factor for the image 200 GUI.UnderlayImage.scale = 4.75 201 # Image rotation (radians) 202 GUI.UnderlayImage.rotate = -0.015 203 204 # how many events to show in the log panel (default = 30) 205 GUI.EventLogPanel.nrofEvents = 100 206 # Regular Expression log filter (see Pattern-class from the Java API for RE-matching details) 207 #GUI.EventLogPanel.REfilter = .*p[1-9]<->p[1-9]$