1

我想知道在RPL网络中,一个节点将一个数据包发送到另一个节点(例如RPL-Collect/udp-sender)后,如何知道预期的节点是否会转发这个数据包?我认为需要偷听邻居传输,但在Contiki/Cooja中实现此场景的另一种简单方法是什么?

4

1 回答 1

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

于 2018-07-19T15:49:45.267 回答