Contiki-ng: обнюхивать соседние пакеты в Cooja и отвечать/отправлять как обычный узел

Я запускаю пример rpl-udp с udp-сервером и udp-клиентом. Я хочу разрешить udp-клиенту перехватывать пакеты от соседних узлов, но в то же время позволить ему вести себя как обычный узел. Как это возможно? Я добавил NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, 0), который отключает RADIO_RX_MODE_ADDRESS_FILTER (делает его равным 0), но когда я имитирую в Cooja (используя z1), узлы не обнюхивают все пакеты. Кроме того, я получаю много повторяющихся предупреждений, как показано ниже:

00:57.609 ID:7 [WARN: CSMA] drop duplicate link layer packet from c10c.0000.0000.0004, seqno 114

Есть ли какой-либо другой флаг, позволяющий прослушивать все пакеты и уменьшать количество дубликатов пакетов?

Спасибо за помощь!

Изменить: я попробовал это решение здесь https://sourceforge.net/p/contiki/mailman/message/34888182/, но я сталкиваюсь с той же проблемой (много повторных передач и дубликатов пакетов).


person phrick    schedule 15.04.2020    source источник


Ответы (1)


Вы не можете этого сделать, для MAC-протоколов Contiki-NG не существует беспорядочного режима. Пакеты, адресованные другим узлам, отфильтровываются на уровне CSMA, даже если радиостанция их принимает.

Способ реализации сниффера заключается в том, чтобы либо напрямую работать с NETSTACK_RADIO, либо создать свой собственный MAC-адрес, либо взломать функцию input_packet MAC-адреса CSMA.

person kfx    schedule 15.04.2020
comment
Почему нет беспорядочного режима для contiki-ng? Разве это не похоже на реализацию contiki-os? Я пытаюсь реализовать обнюхивание, а также нормальную работу узла в то же время без потери каких-либо пакетов. - person phrick; 15.04.2020
comment
@phrick Contiki-NG не имеет этой функции, потому что ее нет в Contiki. Или я ошибаюсь - с чего вы взяли, что Contiki делает? - person kfx; 16.04.2020
comment
да, проверьте здесь sourceforge.net/p/contiki/mailman/message/34888182 они делают это в contiki-os, но я получаю ретрансляции и не нюхаю все пакеты. - person phrick; 16.04.2020
comment
@phrick в ветке четко сказано, что этот подход не сработал для пользователя, и кто-то предлагает изменить код создателя, чтобы добиться того, чего он хотел. Когда говорят о неразборчивом режиме, на самом деле это уровень радиодрайвера, который вы уже поняли, как включить, но этого недостаточно. - person kfx; 17.04.2020
comment
если вы можете рассказать мне больше о том, как добиться этого, изменив MAC-уровень CSMA, я закрою этот вопрос. Спасибо. - person phrick; 19.04.2020
comment
@phrick Я дал вам несколько предложений здесь. Написание точного кода слишком сложно для ответа SO, извините. - person kfx; 24.04.2020