我想计算Veins示例场景中的端到端延迟。
我已经阅读了与此主题相关的旧邮件,但它们没有提供问题的真正解决方案。
我使用了getCreationTime()
和simTime()
个函数。产生的延迟约为1.70*10^-4
。
这种延迟对我来说没有意义。它应该更多。我现在需要一些帮助。我使用macPkt
函数创建mackPkt->creationTime()
的创建时间,并从中提取simTime()
以计算端到端延迟。但是,它没有意义。
我猜macPkt
不是发射机创建的数据包。我需要在发送器端创建数据包的时间。谁能帮我?计算端到端延迟是许多用户的问题。我希望这个问题可以帮助很多用户。
答案 0 :(得分:0)
您可以使用'WaveShortMessage'的'timestamp'字段来存储创建时间,然后在接收器处使用此字段来计算延迟。如果您使用自己的消息,只需添加自己的字段。
答案 1 :(得分:0)
我认为以下代码可以帮助您实现端到端的延迟,您应该更改
它基于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();
}
我认为OnWSM()
中的TraciDemo11p
方法适合接收WSM。