模拟具有合理延迟和丢包的海量广播场景

Simulate a Massive Broadcasting Scenario with a Reasonable Delay and Packet Loss

我能够完成 Veins 中的基础教程。
在我的模拟中,12 辆汽车互相广播消息。我想计算与每条消息相关的延迟。我正在尝试通过以下方式实现它:

...
wsm->setDelayTime(simTime().dbl());
populateWSM(wsm);
sendDelayedDown(wsm, computeAsynchronousSendingTime(1, ChannelType::service));
...
...
delayVector.record(simTime().dbl()-wsm->getDelayTime());
...

在下图中您可以看到延迟 w.r.t。节点[0]。有两件事让我困惑:

  1. 为什么延迟在秒级?我希望它在毫秒范围内。
  2. 为什么延迟会随着模拟时间的增加而增加?

更新

我发现由于12辆汽车同时广播,computeAsynchronousSendingTime(1, ChannelType::service)将return后续汽车延迟更大。我可以使用 sendDown(wsm) 来规避这个问题。然而,在这种情况下,并不是所有的消息都被传递,因为汽车在传输时试图接收数据包。所以我想更新问题:如何模拟最真实的场景,合理的延迟和丢包?

如果有人遇到类似问题,computeAsynchronousSendingTime(1, ChannelType::service) returns 应该发送消息的绝对模拟时间。不过,我们对延迟感兴趣。因此,必须 运行 sendDelayedDown(wsm, computeAsynchronousSendingTime(1, ChannelType::service) - simTime());