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

时间:2016-03-06 12:44:18

标签: c++ omnet++

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

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

这是正确的方法吗?如果没有,请建议我或示例代码将非常有用。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

假设simTimegetCreationTime都使用OMNeT ++类来表示时间,您可以直接对它们进行操作,因为该类会使相关运算符超载。根据手册所说的,我建议使用信号进行测量(例如emit(latencySignal, simTime() - tempLinkLayerFrame->getCreationTime());)。

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

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