静脉中的单播通信

时间:2016-03-02 14:12:35

标签: omnet++ veins

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中,单播通信被认为是有害的。是不是因为文章中提到的原因,静脉框架不支持单播通信?

2 个答案:

答案 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)中

最好的问候。