计算Veins-LTE中SimpleServerApp的端到端延迟

irl*_*rla 0 omnet++

我正在尝试计算Veins-LTE中SimpleServerApp的端到端延迟,我无法得到任何结果,当我打开结果文件时,所有与延迟相关的统计数据都是0或NaN.

我查看了Tic-Toc教程并尝试做类似的事情,但这样我甚至没有得到统计数据:

在模块上:

delayVector.record(delay);
delayHist.collect(delay);
Run Code Online (Sandbox Code Playgroud)

当调用finish()时:

delayHist.recordAs("delayFinish");
Run Code Online (Sandbox Code Playgroud)

哪里

simtime_t delay;
cOutVector delayVector;
cLongHistogram delayHist;
Run Code Online (Sandbox Code Playgroud)

然后我尝试从其他统计记录中复制该程序,但我认为不能在我的情况下使用,因为我想发送一个长:

在NED文件上:

@signal[delay](type="long");
@statistic[delay](title="delay"; source="delay"; record=vector, stats, histogram);
Run Code Online (Sandbox Code Playgroud)

在模块上:

emit(delay,delay); //where the first delay is the signal and the second one, the value.
Run Code Online (Sandbox Code Playgroud)

这就是我计算延迟的方法:

在发送模块上:

msg->setSendingTime();
Run Code Online (Sandbox Code Playgroud)

在接收模块上:

simtime_t delay = simTime() - msg->getSendingTime();
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助!

use*_*271 8

由于版本4.1OMNeT ++使用信号机制引入了统计/度量收集和记录的概念.

简而言之,信号机制的工作原理如下:给定值附加到(类型的内置对象)信号,并将此信息记录到输出文件(作为标量或向量),以后可以对其进行分析以便推断某些行为.

如果你真的不明白这个机制是如何工作的,请务必先阅读OMNeT ++手册的以下部分:

  1. 4.15基于信号的统计记录
  2. 12结果记录和分析

一旦你了解了这个概念,你就可以在输出结果方面获得你想要的东西.


就您的问题而言,如果您想使用信号机制,SimpleServerApp首先必须在文件中声明信号和相应的统计信息.ned:

@signal[nameOfSignal](type="sameAsTypeOfVariable");
@statistic[nameOfStatistic](title="nameToAppearInTheOutputFile"; source="nameOfTheSourceOfThisStatistic"; record=typeOfStat1, typeOfStat2, typeOfStat2);
Run Code Online (Sandbox Code Playgroud)

然后,你需要声明的信号变量.h:

simsignal_t nameOfMetricSignal;
Run Code Online (Sandbox Code Playgroud)

然后注册信号initialize().cc一样,你在使用的名称.ned为信号:

nameOfMetricSignal = registerSignal("nameOfSignal");

最后,你所要做的就是emit()信号.也就是说,将值附加到信号并让它被重新记录.您要执行此操作的位置取决于您的实现.

emit(nameOfMetricSignal, theVariableToBeAttached);


对于你来说,这将是:

  1. NED:

@signal[delay](type="float");

@statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);

  1. .h simsignal_t delaySignal;
  2. .cc delaySignal = registerSignal("delay");
  3. .cc emit(delaySignal, delay);

如果你得到0Nan可能是由于错误的数字划分,错误的信号类型与变量的类型相比.还要确保矢量和标量记录未关闭(false)omnetpp.ini