在 omnet++ 中计算延迟的正确方法是什么?

What is the proper way to calculate latency in omnet++?

我写了一个模拟模块。为了测量延迟,我使用了这个:

simTime().dbl() - tempLinkLayerFrame->getCreationTime().dbl();

这是正确的方法吗?如果没有,请给我建议,或者示例代码会很有帮助。

此外,simTime()延迟是微观方面的实际延迟 我可以在我的研究论文中写几秒钟?或者我需要 扩大规模?

此外,我发现通道数据速率和通道延迟对 link 延迟没有影响,相反,如果我改变触发持续时间,延迟会发生变化。例如

timer = new cMessage("SelfTimer");
scheduleAt(simTime() + 0.000000000249, timer);

如果这不是递归触发简单模块的正确方法,请提出一个建议。

假设simTimegetCreationTime都使用OMNeT++ class来表示时间,你可以直接对它们进行操作,因为class重载了相关的操作符。按照手册中的说明,我建议使用信号进行测量(例如,emit(latencySignal, simTime() - tempLinkLayerFrame->getCreationTime());)。

simTime() 以秒为单位,而不是微秒。

关于你的最后一个问题,如果你将这段代码用于所有节点,并且你在模拟中同时启动所有这些节点,就会出现问题。在那种情况下,您将拥有所有节点的完美同步,这意味着您只会在第一次传输中看到冲突。因此,在模拟开始时为每条新安排的消息添加随机抖动可能是个好主意。