2
votes

Does Veins support 802.11p unicast communication?

I checked the source code of the class "Mac1609_4" in Veins framework. Referring to the following snippet of the code:

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);
}

It seems that the implemented MAC layer can receive unicast packet but I couldn't find any method for sending MAC layer acknowledgements that are required in unicast communication. Any suggestions please?

There is also a publication by Christoph Sommer et al. that unicast communication is considered harmful in 802.11p. Is it true that because of the reasons mentioned in the paper, Veins framework doesn't support unicast communication?

2

2 Answers

2
votes

Recently, in veins 4.7 an experimental implementation is provided. As can be seen on the changelog content in veins website: "Add experimental unicast support to IEEE 802.11p"

To use, you just need to update every message with the object id of the receiver on the call of populateWSM method (see the method signature for more details):

populateWSM(bsm, idReceiver);

Additionally, you need to set the useAcks parameter of Mac1609_4 class to true. Just put this additional line on the omnetpp.ini file:

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

However is important to note that this implementation does not work with channel switching. When trying to run with channel switching the following error message is thrown:

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

Best Regards.

1
votes

Veins framework does not support unicast transmissions. In Section IIIC of the publication here it has been reported that MAC layer of Veins was extended to support unicast transmissions, this means the official release does not include this functionality.

The paper was published in 2015 while the latest release of Veins 4.3 came last month. Since there is nothing mentioned about unicast transmissions in the "Changelog" of the latest release, it implies that unicast transmissions are still not supported.