How to overhear a neighbor mote Tx/Rx in Contiki?

Я хочу знать в сетях RPL, после того, как узел отправляет один пакет другому узлу (например, RPL-Collect / udp-sender), как узнать, будет ли этот узел пересылать этот пакет или нет? Я думаю, что необходимо подслушать передачу соседей, но есть ли еще один простой способ реализовать этот сценарий в Контики / Куджа?

1 ответ

Чтобы подслушать пакеты в дополнение к нормальной работе, вам нужно сделать несколько вещей:

  1. Убедитесь, что радио включено и находится в правом канале. Если вы всегда используете CSMA или ContikiMAC, вам не нужно делать ничего особенного. То же самое для минимального графика TSCH. В противном случае для TSCH необходимо запланировать ячейку Rx со смещением правого канала и в правильном временном интервале.

  2. Каким-то образом взломайте MAC-уровень для печати или учета пакетов, не адресованных вам - обычно MAC-уровень молча отбрасывает такие пакеты.

  3. Убедитесь, что аппаратная фильтрация кадров отключена (радиоприемник находится в смешанном режиме).

Пример:

radio_value_t radio_rx_mode;
/* Entering promiscuous mode so that the radio accepts all frames */
NETSTACK_RADIO.get_value(RADIO_PARAM_RX_MODE, &radio_rx_mode);
NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, radio_rx_mode & (~RADIO_RX_MODE_ADDRESS_FILTER));

Если вам просто нужно подслушать пакеты и не нужны обычные операции, все проще и проще. Тогда вы можете использовать SenSniff.

Другие вопросы по тегам