How to overhear a neighbor mote Tx/Rx in Contiki?
Я хочу знать в сетях RPL, после того, как узел отправляет один пакет другому узлу (например, RPL-Collect / udp-sender), как узнать, будет ли этот узел пересылать этот пакет или нет? Я думаю, что необходимо подслушать передачу соседей, но есть ли еще один простой способ реализовать этот сценарий в Контики / Куджа?
1 ответ
Чтобы подслушать пакеты в дополнение к нормальной работе, вам нужно сделать несколько вещей:
Убедитесь, что радио включено и находится в правом канале. Если вы всегда используете CSMA или ContikiMAC, вам не нужно делать ничего особенного. То же самое для минимального графика TSCH. В противном случае для TSCH необходимо запланировать ячейку Rx со смещением правого канала и в правильном временном интервале.
Каким-то образом взломайте MAC-уровень для печати или учета пакетов, не адресованных вам - обычно MAC-уровень молча отбрасывает такие пакеты.
Убедитесь, что аппаратная фильтрация кадров отключена (радиоприемник находится в смешанном режиме).
Пример:
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.