本文描述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
本文系Spark & Shine原创,转载需注明出处本文最近一次修改时间 2022-03-27 16:17

results matching ""

    No results matching ""