Contiki-ng: прослушивать соседние пакеты в Cooja и отвечать / отправлять как обычный узел - PullRequest
0 голосов
/ 15 апреля 2020

Я запускаю пример 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/, но я столкнулся с той же проблемой (много повторных передач и дублирующих пакетов).

1 Ответ

0 голосов
/ 15 апреля 2020

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

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

...