计算静脉中的端到端延迟

Computing End-To-End Delay in Veins

我已经阅读了很多关于计算 Veins 端到端延迟的 SO 帖子,但没有找到能够解释为什么延迟看起来太低的答案。

我正在使用:

频道切换已关闭。

我有以下代码,从发送节点发送消息:

if(sendMessage) {
  WaveShortMessage* wsm = new WaveShortMessage();
  sendDown(wsm);
}

接收节点使用wsm创建时间计算延迟,但我也尝试在发送端设置时间戳。结果是一样的

simtime_t delay = simTime() - wsm -> getCreationTime();
delayVector.record(delay);

延迟向量的示例输出如下:

项目#事件#时间值
0 165 14.400239402394 2.39402394E-4
1 186 14.500240403299 2.40403299E-4
2 207 14.600241404069 2.41404069E-4
3 228 14.700242404729 2.42404729E-4

这意味着端到端延迟(从创建到接收)大约相当于四分之一毫秒,这似乎很低 - 并且比文献中通常报道的要低很多.这似乎与其他人报告的问题一致(例如 end to end delay in Veins

我是不是在这个计算中遗漏了什么?我尝试通过添加大量车辆节点(在直线高速公路上 1000x50 沙箱内的 21 个节点,平均速度为 50 km/h)来增加网络负载,但结果似乎是一样的。差异可以忽略不计。我读过几篇研究论文,这些论文表明在高车辆密度下端到端延迟应该会急剧增加。

这种端到端延迟是可以预料的。如果您的应用程序的仿真模型没有明确地模拟处理延迟(例如,通过应用程序 运行 在缓慢的通用计算机上),您期望延迟帧的只是传播延迟(光速,在这里可以忽略不计)和排队MAC 上的延迟(从将帧插入 TX 队列到传输完成的时间)。

举个例子,对于在 6 Mbit/s 发送的 2400 位帧,这个延迟大约是 0.45 毫秒。您可能使用了稍短的帧,因此您的值似乎是合理的。

有关背景信息,请参阅 F. Klingler, F. Dressler, C. Sommer: "The Impact of Head of Line Blocking in Highly Dynamic WLANs" (DOI 10.1109/TVT.2018.2837157),其中还包括理论与静脉与实际测量值的比较。