2016-06-08 3 views
0

Я работаю с картой Veins над симулятором OMNeT ++, и мне грозит странная ситуация, когда некоторые несколько узлов теряют все принятые пакеты.Вены - Неожиданное поведение с потерянными пакетами в определенных транспортных средствах

Чтобы разместить всех в контексте, я имитирую 100 узлов (4 потока из 25 узлов), все под покрытием (по-видимому) и отправляя по 10 пакетов в секунду каждый. В зависимости от момента, когда узлы входят в сеть (т. Е. Создаются SUMO), некоторые из них (обычно только 1, но могут быть 2, 3, 4 ...) входят в режим, когда все пакеты отмечены как потерянные (SNIRLostPackets), поскольку они получают пакет, в то время как другой пакет уже принимается (согласно Решителю, сетевой адаптер уже синхронизирован с другим фреймом).

Это не должно произойти в 802.11, если нет скрытых узлов, и отправители не видят друг друга в момент отправки своих соответствующих кадров (оба видят простоя канала) правильно?

Таким образом, этого поведения вообще не ожидается и уничтожает статистику окончательных потерянных пакетов. Я настроил мощность передачи и диапазон помех, но ничего не изменилось.

Это происходит слишком часто, чтобы игнорировать его, и я хотел бы знать, испытал ли кто-либо подобное поведение и как оно было решено.

Спасибо

ответ

0

(КИ, по-видимому, данная проблема возникает в особом случае, когда получен пакет (начал принимается) OK, но в конце приема, узел меняет состояние TX.

Затем пакет помечается как «получил при отправке», но узел уже отмечен этот кадр в качестве следующего правильно приема. Таким образом, он отбрасывает все принимающие те, без конца.

кажется Буг и Возможным обходным путем является добавление этих линий

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

в функции processSignalEnd (файл Decider80211p) внутри корпуса «(frame->getWasTransmitting() || phy11p->getRadioState() == Radio::TX)».

Я не совсем уверен, что это случай, если это произойдет или нет, поскольку узел не должен отправлять пакет при получении.

Надеюсь, это поможет.

+1

Возможно, вы установили 'allowTxDuringRx = true' (хак, который превращает узел в немой помех)? В противном случае это не должно быть возможным: как только узел начинает получать кадр, он отмечает канал как занятый. Это будет препятствовать попытке передать. Если вы не настроили помех, и это действительно ошибка, у вас есть тестовый пример для воспроизведения вашего отчета? –

Смежные вопросы