静脉中的单播通信

Unicast Communication in Veins

Veins是否支持802.11p单播通信?

我查看了 Veins 框架中 class "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 中被认为是有害的。是不是因为文中提到的原因,Veins框架不支持单播通信?

Veins 框架不支持单播传输。在出版物 here 的第 IIIC 节中,据报道 MAC Veins 层被扩展以支持单播传输,这意味着正式版本不包括此功能。

该论文发表于 2015 年,而最新版本的 Veins 4.3 于上个月发布。由于最新版本的"Changelog"中没有提到单播传输,这意味着仍然不支持单播传输。

最近在veins 4.7中提供了一个实验性的实现。从 veins 网站的变更日志内容可以看出: "Add experimental unicast support to IEEE 802.11p"

要使用,您只需在调用 populateWSM 方法时使用接收方的 object id 更新每条消息(参见更多细节的方法签名):

populateWSM(bsm, idReceiver);

另外,需要将Mac1609_4class的useAcks参数设置为。 只需将此附加行放在 omnetpp.ini 文件中:

*.**.nic.mac1609_4.useAcks = true

但是请务必注意,此实现不适用于频道切换。当尝试 运行 切换频道时,抛出以下错误消息:

Error: Unicast model does not support channel switching -- in module (Mac1609_4)

此致。