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

时间:2015-06-13 11:34:45

标签: omnet++

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

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

在模块上:

delayVector.record(delay);
delayHist.collect(delay);

并且在调用finish()时:

delayHist.recordAs("delayFinish");

,其中

simtime_t delay;
cOutVector delayVector;
cLongHistogram delayHist;

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

在NED文件中:

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

在模块上:

emit(delay,delay); //where the first delay is the signal and the second one, the value.

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

在发送模块上:

msg->setSendingTime();

在接收模块上:

simtime_t delay = simTime() - msg->getSendingTime();

我很感激任何帮助!

1 个答案:

答案 0 :(得分:8)

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

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

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

  1. 4.15 Signal-Based Statistics Recording
  2. 12 Result Recording and Analysis
  3. 一旦你了解了这个概念,你就会觉得在输出结果方面得到你想要的东西会更舒服。

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

    .ned

    然后你需要在<{1}}中声明信号变量

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

    然后<{>>在.h中的simsignal_t nameOfMetricSignal; 中注册信号,与initialize()中用于信号的名称相同:

    .cc

    最后,你要做的就是 .ned信号。也就是说,将值附加到信号并让它被重新记录。您希望这样做的位置取决于您的实施。

    nameOfMetricSignal = registerSignal("nameOfSignal");

    对于你来说就像是:

    1. emit()
    2. emit(nameOfMetricSignal, theVariableToBeAttached);

      NED:

      1. @signal[delay](type="float"); @statistic[delay](title="delay"; source="delay"; record=mean, sum, stats, vector);
      2. .h simsignal_t delaySignal;
      3. .cc delaySignal = registerSignal("delay");
      4. 如果您得到的.ccemit(delaySignal, delay);可能会被错误的数字划分,则错误的信号类型与变量的类型相比。同时确保0

        中的矢量和标量录音未关闭(Nan