0

我正在通过 OMNeT++ 模拟器使用 Veins 框架,我面临一个奇怪的情况,即某些节点丢失了所有接收到的数据包。

为了让每个人都了解上下文,我正在模拟 100 个节点(25 个节点的 4 个流),所有节点都在覆盖范围内(显然),每个节点每秒发送 10 个数据包。根据节点进入网络的时刻(即:由 SUMO 创建),其中一些节点(通常只有 1 个,但可以是 2、3、4...)进入所有数据包都标记为丢失的模式(SNIRLostPackets ) 因为他们在接收到另一个数据包的同时接收到一个数据包(根据决定者,NIC 已经同步到另一个帧)。

这在 802.11 中不会发生,除非有隐藏节点并且发送者在发送各自的帧时看不到对方(都看到通道空闲)对吗?

因此,这种行为根本不是预期的,并且会破坏最终丢失的数据包统计信息。我调整了传输和干扰范围的传输功率,但没有任何变化。

它经常发生而忽略它,我想知道是否有人经历过这种行为以及它是如何解决的。

谢谢

4

1 回答 1

0

(好的,显然问题出现在接收到数据包(开始接收)的特殊情况下,但在接收结束时,节点已更改为 TX 状态。

然后,数据包被标记为“发送时已接收”,但节点已经将此帧标记为下一个正确接收。所以它会无休止地丢弃所有接收的。

这似乎是一个错误,可能的解决方法是添加这些行

if (!frame->getWasTransmitting()){
     curSyncFrame = 0;
 }

processSignalEnd函数(Decider80211p 文件)中,在 " (frame->getWasTransmitting() || phy11p->getRadioState() == Radio::TX)" 的情况下。

我不太确定这是否应该发生,因为节点在接收时不应该发送数据包。

希望能帮助到你。

于 2016-06-09T12:42:29.637 回答