本文描述The ONE仿真器可能存在的一个bug,msgTtl
。建议使用以秒为单位来设置TTL。
1. Bug描述
我在Two-way Relay网络(A -- R -- B
)上做了个简单测试,节点A与B每隔5秒产生一个消息(MessageEventGenerator ),updateIntervl
设为1秒(我稍微改了下The ONE源代码,每个updateInterval
所有节点只更新一次)。将msgTtl
设为2分钟时,得到如下结果:
sim_time: 200.0000
created: 80
started: 157
emissions: 157
nrofXor: 0
relayed: 156
aborted: 0
dropped: 0
removed: 0
delivered: 78
delivery_prob: 0.9750
结果符合逻辑。然而,将msgTtl
设为一分钟的时候,却得到这样的结果:
sim_time: 200.0000
created: 80
started: 79
emissions: 79
nrofXor: 0
relayed: 78
aborted: 0
dropped: 35
removed: 0
delivered: 39
delivery_prob: 0.4875
显然,不符合期望,因为一分钟的ttl,完全已经够了(实际上只需要5个unit time,A和B就可以将消息传输给彼此)。当我将msgTtl
设为10秒时,可以得到与2分钟一样的结果。坐等高人指点。
2. 设TTL以秒为单位
有了这次不合逻辑的仿真结果,强烈建议ttl设成以秒为单位。The ONE默认是分钟为单位,在设置文件添加如下行将ttl设成以秒为单位。
Scenario.ttlSeconds = true