如何在 Contiki 中偷听邻居的微尘 Tx/Rx?

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

我想知道在RPL网络中,一个节点向另一个节点发送一个数据包后(例如RPL-Collect/udp-sender ), 如何知道预期的节点是否会转发此数据包?我认为 偷听 邻居传输是必要的,但在 Contiki/Cooja?

中实现此场景的另一种简单方法是什么?

要在正常操作之外偷听数据包,您需要做几件事:

  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