首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Contiki-ng Cooja mote的无线电有效载荷限制

Contiki-ng Cooja mote的无线电有效载荷限制
EN

Stack Overflow用户
提问于 2021-12-11 10:11:13
回答 1查看 198关注 0票数 1

考虑如下所示的RPL网络。在这个网络中,节点1是DODAG的根。节点2是发送者,并向接收节点发送单播UDP数据包(节点3-18)。DODAG是在非存储模式下工作的,我正在使用Contiki-NG的Cooja mote来执行这个模拟。

问题是,数据包只能到达放置在12跳之外的节点(本例中的节点13 )。例如,当发送者想要为节点16发送数据包时,我们收到了6lowpan的警告,数据包被丢弃在根目录下:“没有足够的packetbuf空间来压缩报头(112字节,左92 )。中止。”(第706行sicslpan.c)我调查了这个问题,发现根目录正确地创建了源路由头,并且没有任何问题地将报头添加到数据包中。然而,问题来自MAC层和无线接口。该包大于无线电驱动程序的MAX_PAYLOAD_LEN。所以无线电驱动程序无法处理数据包。Contiki-ng有自己的空无线电驱动程序,但我认为无线电驱动程序及其参数是由平台定义的。我需要减轻这个限制。可以修改Cooja mote源代码中的参数吗?如果是的话,我怎么能做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 08:18:15

至少有两个,潜在的三个缓冲区大小瓶颈,这些瓶颈决定了可以用Contiki-NG网络堆栈发送和处理的数据包的最大大小;

  1. 广播的数据包缓冲区的大小。这通常由收音机的硬件决定,通常可以通过询问NETSTACK_RADIO驱动程序的NETSTACK_RADIO参数来读取。

  1. 数据包缓冲区的大小。默认情况下,这是125个字节--足够小到足以适应标准IEEE802.15.4数据包的有效负载(其最大PHY层有效载荷为127字节),当添加一个2字节FCS时。可以通过定义PACKETBUF_CONF_SIZE.

的不同值来更改packetbuf大小

如果使用

  1. ,则还可以使用uIP缓冲区的大小。这被定义为UIP_CONF_BUFFER_SIZE,默认情况下与相关IPv6定义的IPv6 MTU兼容相当大(1280字节)。但是,一些平台将其设置为更小的值以节省内存。

如果您使用模拟的Cooja节点,那么通过在COOJA_RADIO_CONF_BUFSIZE或Makefile中定义不同的project-conf.h值,可以在软件中更改无线数据包的缓冲区。默认值为125字节(因此,当添加2字节FCS时,大小是IEEE 802.15.4无线电的最大PHY层有效负载)。

要解决Cooja上的问题,可以尝试添加project-conf.h

代码语言:javascript
复制
#define COOJA_RADIO_CONF_BUFSIZE 1000
#define PACKETBUF_CONF_SIZE 1000
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70314260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档