Veins是否支持802.11p单播通信?
我在Veins框架中检查了类“Mac1609_4”的源代码。请参阅以下代码片段:
WaveShortMessage* wsm = dynamic_cast<WaveShortMessage*>(macPkt-> decapsulate());
long dest = macPkt->getDestAddr();
DBG_MAC << "Received frame name= " << macPkt->getName()
<< ", myState=" << " src=" << macPkt->getSrcAddr()
<< " dst=" << macPkt->getDestAddr() << " myAddr="
<< myMacAddress << std::endl;
if (macPkt->getDestAddr() == myMacAddress) {
DBG_MAC << "Received a data packet addressed to me." << std::endl;
statsReceivedPackets++;
sendUp(wsm);
}
似乎实现的MAC层可以接收单播数据包,但我找不到任何方法来发送单播通信所需的MAC层确认。有什么建议吗?
Christoph Sommer等人还有一个publication。在802.11p中,单播通信被认为是有害的。是不是因为文章中提到的原因,静脉框架不支持单播通信?
答案 0 :(得分:1)
Veins框架不支持单播传输。在出版物here的第IIIC部分中,据报道,静态MAC层被扩展为支持单播传输,这意味着官方版本不包括此功能。
该论文于2015年发布,而最新版本的Veins 4.3于上个月发布。由于在最新版本的“更改日志”中没有提及任何关于单播传输的内容,因此它意味着仍然不支持单播传输。
答案 1 :(得分:1)
最近,在第4.7章中提供了一个实验实现。从静脉网站的changelog内容可以看出: “将实验性单播支持添加到IEEE 802.11p”
要使用,只需在调用 populateWSM 方法时使用接收者的对象ID 更新每条消息(有关更多详细信息,请参见方法签名):
$ node streaming-example2.js
asdf
data: asdf
'error' event emitted with err: true
'close' event emitted
$
此外,您需要将 Mac1609_4 类的 useAcks 参数设置为 true 。 只需将这一行添加到omnetpp.ini文件中即可:
populateWSM(bsm, idReceiver);
但是请注意,此实现不适用于频道切换。尝试通过频道切换运行时,会引发以下错误消息:
错误:单播模型不支持频道切换-在模块(Mac1609_4)中
最好的问候。