脉端到端延迟

end to end delay in Veins

本文关键字:延迟      更新时间:2023-10-16

我想在示例场景中计算端到端延迟。

我已经阅读了与这个主题相关的旧邮件,但它们并没有为这个问题提供真正的解决方案。

我使用getCreationTime()simTime()函数。由此产生的延迟约为1.70*10^-4

这个延迟对我来说没有意义。它应该更多。我现在需要一些帮助。我使用mackPkt->creationTime()函数获取macPkt的创建时间,并从中提取simTime()用于计算端到端延迟。然而,这没有意义。

我猜macPkt不是由发送器创建的数据包。我需要在发送端创建数据包的时间。有人能帮我吗?计算端到端时延是许多用户的难题。我希望这个问题对很多用户有帮助。

对于单跳传输,这种量级的延迟是可以预期的。关于更详细的细分,请参见计算静脉中的端到端延迟的讨论。

如果您讨论的是多跳的端到端延迟,请注意数据包创建时间可能是一个可靠的指标。在这里,你可以使用' WaveShortMessage '的' timestamp '字段来存储创建时间,然后在接收端使用该字段来计算延迟。如果您使用自己的消息,只需添加一个您自己的字段。

我认为下面的代码可以帮助你端到端延迟,你应该改变它基于TraciDemo11p

class Sink : public cSimpleModule
{
protected:
cStdDev eedStats;
virtual void initialize();
virtual void handleMessage(cMessage *msg);
virtual void finish();
};
Define_Module(Sink);
void Sink::initialize()
{
eedStats.setName("End-to-End Delay");
}
void Sink::handleMessage(cMessage *msg)
{
simtime_t eed = simTime() - msg->getCreationTime();
eedStats.collect(eed);
delete msg;
}
void Sink::finish()
{
recordScalar("Simulation duration", simTime());
eedStats.record();
}

我认为TraciDemo11p中的OnWSM()方法是适合接收WSM的地方。