2016-03-06 70 views
2

我写了一个模拟模块。对于测量延迟,我正在使用:什么是计算omnet ++延迟的正确方法?

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

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

此外,​​延迟是我可以写在我的研究论文中的微秒实际延迟时间吗?还是我需要 扩展它?

另外,我发现,信道数据速率和信道延迟对链路等待时间,而不是如果我变化触发持续时间的等待时间变化没有影响。例如

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

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

回答

2

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

​​以秒为单位,而不是微秒。

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

+0

的REN感谢您的回复。请建议在我的应用程序模块中引入多少抖动。 – user3243499

+1

@ user3243499我不知道我可以给你一个权威的答案,但如果你看看[中的OMNeT ++手册本段](https://omnetpp.org/doc/omnetpp/manual/usman.html#sec126) ,使用“正常(0s,0.001s)”的示例抖动。你可以做一些快速模拟,看看这是否合理。我建议在C++代码中使用'par('sendJitter')',并在NED文件中使用'volatile double sendJitter = normal(0s,0.001s)'。 –

+0

再次感谢。是的,现在我明白了为什么引入抖动是有道理的。请再提供一个帮助。 <--> GATE2我已经使用GATE1 <--> {;延迟= 5US数据速率= 100Mbps的}引入信道数据速率和延迟。但在模拟时,我发现这个数据速率和延迟对我的延迟没有任何影响。即使我将数据速率更改为0 Mbps,数据包也会传输。请解释这个以及如何真正使用这个频道。 [我已经检查过整个网络,但不幸的是没有发现任何有用的链接] – user3243499