omn​​et – 在Veins的MAC层实现的ECDA中的WSM优先级

我将从应用程序层一次发送四条WSM消息到静脉中的MAC_11p. 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类中的’initiateTransmit’方法,显然该方法从队列到语音迭代队列.选择后台队列中的WSM消息进行传输,剩余的WSM消息将获得内部争用!

这是一个错误吗?

最佳答案 是的,这似乎是Veins 4.5中的一个错误.这种变化是在Veins 2.0-rc2和Veins 2.0之间引入的.

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

点赞