微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据包有位错误丢失的数据包未正确接收,将其作为控制消息发送给上层

如何解决数据包有位错误丢失的数据包未正确接收,将其作为控制消息发送给上层

Veins 5.0中配置模拟环境后,不同节点同时发送和接收消息。但是,以下日志仅针对特定消息输出

数据包有位错误。迷路了

未正确接收数据包,将其作为控制消息发送给上层

浏览各种资料后,我修改omnetpp.ini代码如下,但是输出相同的传输丢失日志。

omnetpp.ini

*.**.nic.phy80211p.allowTxDuringRx = true
*.**.nic.mac1609_4.txPower = 20mW
*.**.nic.mac1609_4.bitrate = 27Mbps
*.**.nic.phy80211p.minPowerLevel = -110dBm
*.connectionManager.maxInterfdist = 2600m
...

此外,每个节点都会根据特定的时间间隔发送消息。如果传输时间重叠,是否会出现此错误?节点中实现的部分代码如下:

...
const simtime_t TIME_MSG_INTERVAL = 1.0;

A.cc

...
BaseFrame1609_4* wsm = new BaseFrame1609_4();
wsm -> encapsulate(msg);
populateWSM(wsm);
sendDelayedDown(wsm,uniform(0.01,0.50));

B.h

...
const simtime_t TIME_SYNC_INTERVAL = 1.0;

B.cc

...
BaseFrame1609_4* wsm = new BaseFrame1609_4();
wsm -> encapsulate(syncMsg);
populateWSM(wsm);
sendDelayedDown(wsm,0.50));

我已经读到数据包冲突或同时传输和接收是不可能的。但是有什么办法可以忽略这一点吗?

还是应该增加TxPower?我不知道原因。

解决方法

您所描述的是冲突:如果一个节点同时接收两个无线传输,则很难理解其中任何一个传输。 (想象两个人同时对你说话:在这种情况下,你也很难理解对方在说什么)。

通常,802.11 会尽量避免这种情况(这是 CSMA/CA、退避、...的全部意义所在),但也存在机制失败的情况:

一个众所周知的案例是“隐藏终端”情况,即发送方不知道另一个发送方的存在(例如,另一个发送方隐藏在建筑物后面)。

另一种鲜为人知的情况是,两个发送方同时开始传输:两个发送方都将看到没有其他人在传输,将从接收模式更改为传输模式,然后开始发送(完全不知道另一个发件人正在完全相同的时间执行此操作)。实际上,这种情况并不常见(毕竟,两个发送方需要非常精确地同时开始发送)。不幸的是,在模拟中很容易错误地做到这一点:只需将两个节点配置为在 t=42s 传输,它们都会尝试在 恰好 t=42s 传输。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。