当前位置: 首页 > 知识库问答 >
问题:

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

瞿和硕
2023-03-14

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

问题是数据包只能到达放置在最多12跳之外的节点(本例中为节点13)。例如,当发送者想要为节点16发送数据包时,我们得到了6lowpan的以下警告,数据包在根处被丢弃:“没有足够的Packetbuf空间来压缩标头(112个字节,还剩92个)。中止。”(line#706 sicslepan. c)我调查了这个问题,发现根正确创建了源路由标头,标头被添加到数据包中没有任何问题。但是,问题来自MAC层和无线电接口。数据包大于无线电驱动程序的MAX_PAYLOAD_LEN。所以无线电驱动程序无法处理数据包。Contiki-ng本身具有空无线电驱动程序,但我认为无线电驱动程序及其参数是由平台定义的。我需要减轻这个限制。是否可以修改Cooja mote源代码中的参数?如果是,我如何做到这一点?

共有1个答案

廖臻
2023-03-14

至少存在两个(可能是三个)缓冲区大小瓶颈,这些瓶颈决定了可以使用连续网络堆栈发送和处理的数据包的最大大小;三

>

  • 无线电的数据包缓冲区的大小。这通常由无线电的硬件决定,通常可以通过询问NETSTACK_RADIO驱动程序的RADIO_CONST_MAX_PAYLOAD_LEN参数来读取。

    数据包缓冲区的大小。默认情况下,这是125字节——当添加2字节的FCS时,小到足以容纳标准IEEE 802.15.4数据包的有效载荷(最大PHY层有效载荷为127字节)。可以通过定义PACKETBUF_CONF_SIZE的不同值来更改Packetbuf大小。

    如果使用IPv6,那么uIP缓冲区的大小也会改变。这被定义为UIP\U CONF\U BUFFER\U SIZE,默认情况下相当大(1280字节),与相关RFC定义的IPv6 MTU兼容。然而,一些平台将其设置为较小的值以节省内存。

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

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

    #define COOJA_RADIO_CONF_BUFSIZE 1000
    #define PACKETBUF_CONF_SIZE 1000
    

  •  类似资料:
    • 我有一个cosmos db集合,主键是id字段。问题是我的负载大于2MB,而cosmos不允许大于2MB的写操作。如果我将有效负载分成更小的块,然后写入cosmos,那么它将用相同的ID覆盖前面的记录。我想在相同的id下添加,而不是覆盖id下列出的任何内容。有办法克服这一点吗?请看下面我的结构。我正在保存用户对象。谢了。

    • 当安装了Veil,我们可以查看它的命令。这些命令很简单,如下面的屏幕截图所示。例如:命令用于退出程序,用于提供有关特定工具的信息,用于列出可用工具,用于更新Veil,启用任何工具的使用,如在给定的屏幕截图中显示: 在上面的屏幕截图中,我们可以看到Veil中使用了两种类型的工具: :此工具用于生成无法检测到的后门。 :此工具用于生成Evasion使用的有效负载,它更像是一种辅助工具。 有效负载是代码

    • AWS API网关的请求有效负载限制是多少? 我需要发送一个JSON有效载荷与编码文件和一些其他参数到API网关,然后将有效载荷传递给AWS Lambda。 我找不到与此相关的AWS文档。

    • 问题内容: 我正在使用 PHP , ExtJS 和 ajax存储 。 它不通过POST或GET发送数据(在创建,更新,销毁时)。在 Chrome控制台中, 我在“ 请求有效负载 ”字段中看到我的传出参数为JSON 。 $ _POST 和 $ _GET 为空。 如何在PHP中检索它? 问题答案: 如果我正确理解这种情况,那么您只是通过http正文传递了json数据,而不是数据。 您可以使用以下代码段

    • 问题内容: 我正在使用文件上传器,并且需要请求有效负载中的详细信息以进行裁剪。 我没有10位代表来发布POST请求的图片,但是它有 所以从avatar_data我所需要的,,,和。我知道我必须封送JSON,但是我不确定如何达到这一点? 问题答案: 实现接口。

    • 问题内容: 根据RFC 7516,应该可以加密称为JWE的有效负载/声明。 是否有任何支持该功能的python库? 我已经检查了PyJWT,python-jose和jwcrypto,但它们都只提供了(JWS)签名的示例。 抱歉,如果这是完全显而易见的,但是在涉及加密的事情上,我要格外谨慎。 问题答案: Jose和jwcrypto库都可以执行JWE。 对于jose: 对于jwcrypto: