ECDA 中的 WSM 优先级在 Veins 的 MAC 层中实现

WSM priority in ECDA implemented in Veins's MAC layer

我一次从应用层向 MAC_11p 静脉发送四个 WSM 消息。 WSM 消息按以下顺序在 CCH 信道上发送(优先级显示在括号中)。

wsm(3), wsm(3), wsm(1), wsm(2)

根据 EDCA 中的访问类别,3 是最高优先级:

enum t_access_category
{
    AC_BK = 0,  // background
    AC_BE = 1,  // best effort
    AC_VI = 2,  // video
    AC_VO = 3   // voice
};

我希望优先级为 3(语音)的 WSM 首先发送到 PHY_11p,但显然 MAC_11p 层按以下顺序发送消息:

wsm(1), wsm(3), wsm(3), wsm(2)

我是不是遗漏了什么?

我正在检查 ECDA class 中的 'initiateTransmit' 方法,显然该方法从背景到语音遍历队列。选择后台队列中的WSM消息进行传输,其余WSM消息将进行内部竞争!

这是一个错误吗?

是的,这似乎是 Veins 4.5 中的错误。变化是在 Veins 2.0-rc2 和 Veins 2.0 之间引入的。

我已将提交 https://github.com/sommer/veins/commit/d518253d 推送到 Veins 的主分支。它改变了内部冲突的行为,首先使用更高优先级的队列来解决。