【发布时间】:2018-07-18 13:21:28
【问题描述】:
我想知道在RPL网络中,一个节点向另一个节点发送一个数据包后(例如RPL-Collect/udp-sender),如何知道预期节点是否会转发此数据包?我认为需要偷听邻居传输,但是在 Contiki/Cooja 中实现此场景的另一种简单方法是什么?
【问题讨论】:
标签: packet-sniffers contiki neighbours cooja
我想知道在RPL网络中,一个节点向另一个节点发送一个数据包后(例如RPL-Collect/udp-sender),如何知道预期节点是否会转发此数据包?我认为需要偷听邻居传输,但是在 Contiki/Cooja 中实现此场景的另一种简单方法是什么?
【问题讨论】:
标签: packet-sniffers contiki neighbours cooja
除了正常操作之外,要偷听数据包,您还需要做几件事:
确保无线电已打开并处于正确的频道。如果你使用永远在线的 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。
【讨论】:
NETSTACK_RDC.off(1)。 2. 在 contikimac.c 的input_packet() 函数中,我更改了接受所有数据包的基本语句,即使不是发给我们的数据包,但我不知道如何打印和计算这个缓冲数据很少的操作。 3. 我认为通过在 project-conf (promiscuous mode) 中将 CC2420_CONF_AUTOACK 设置为零来关闭硬件帧过滤,顺便添加@ 987654325@ 可以使用吗?你有什么意见?
CONTIKIMAC_CONF_SEND_SW_ACK。