我正在使用OMINT ++模拟器上的Veins框架,我面临一个奇怪的情况,即某些节点会丢失所有收到的数据包。
为了让每个人都在上下文中,我正在模拟100个节点(4个25个节点的流),所有节点都在覆盖范围内(显然),每个节点每秒发送10个数据包。根据节点进入网络的时刻(即:由SUMO创建),其中一些(通常只有1但可以是2,3,4 ......)进入一种模式,其中所有数据包都标记为丢失(SNIRLostPackets )当他们收到一个数据包而另一个数据包已经被接收时(根据决策者,NIC已经同步到另一个帧)。
除非有隐藏的节点,并且发送者在发送各自的帧时都看不到对方(两者都看到频道空闲),否则不会发生在802.11中发生的事情?
因此,根本不会出现这种情况并破坏最终丢失的数据包统计信息。我调整了传输和干扰范围的传输功率,但没有任何变化。
过于频繁地忽略它,我想知道是否有人经历过这种行为以及它是如何解决的。
谢谢
答案 0 :(得分:0)
(好吧,显然这个问题出现在接收数据包(开始接收)的特殊情况下,但是在接收结束时,节点已经变为TX状态。
然后,数据包被标记为"在发送"但是节点已将此帧标记为下一次正确接收。所以它会丢弃所有接收者,但没有尽头。
这似乎是一个错误,可能的解决方法是添加这些行
if (!frame->getWasTransmitting()){
curSyncFrame = 0;
}
在processSignalEnd
函数(Decider80211p文件)中的" (frame->getWasTransmitting() || phy11p->getRadioState() == Radio::TX)
"情况下。
我不确定这是否应该发生,因为节点不应该在接收时发送数据包。
希望它有所帮助。