Contiki-ng:像普通节点一样嗅探 Cooja 中的邻居数据包和 respond/send

Contiki-ng: sniff neighbour packets in Cooja and respond/send like normal node

I 运行 rpl-udp 与 udp-server 和 udp-client 的示例。我想启用 udp-client 来嗅探来自邻居节点的数据包,但同时允许它像普通节点一样运行。这怎么可能?我添加了 NETSTACK_RADIO.set_value(RADIO_PARAM_RX_MODE, 0) 禁用 RADIO_RX_MODE_ADDRESS_FILTER (使其成为 0)但是当我在 Cooja 中模拟(使用 z1)时,节点不会嗅探所有数据包。此外,我收到许多重复的警告,如下所示:

00:57.609 ID:7 [WARN: CSMA] drop duplicate link layer packet from c10c.0000.0000.0004, seqno 114

是否有其他标志允许嗅探所有数据包并减少重复数据包?

感谢您的帮助!

编辑: 我在这里尝试了这个解决方案 https://sourceforge.net/p/contiki/mailman/message/34888182/ 但我遇到了同样的问题(有很多重传和重复的数据包)。

你不能那样做,Contiki-NG MAC 协议没有promiscious 模式。发往其他节点的数据包在 CSMA 级别被过滤掉,即使无线电接收到它们也是如此。

实现嗅探器的方法是直接使用 NETSTACK_RADIO,自己制作 MAC,或者破解 CSMA 的 input_packet 函数 MAC.