1- DDS Connext v 5.2.0的数据开销是多少? 我读了一篇关于它的文件(https://www.rti.com/hubfs/docs/DDS_Over_Low_Bandwidth.pdf),它说是56字节。但我想知道每个数据包的动态数据和动态类型的存储位置。 我认为他们肯定需要更多空间。

2-是否可以增加域ID大小? 它是8位(0到232加保留ID)(例如将其增加到16位字)

数据类型通常(假设默认设置和合理大小的数据类型)在发现阶段通过网络发送,从而使您无需每次都发送它。

尽力而为的基本qos通道(假设您使用最终可扩展性)的开销实际上只是rtps标头,其中包括编写器的ID,序列号以及该机制使用的一些其他数据。

然而,使用可靠性迫使你发送acknacks(你可以控制它但它是机制的一部分),使用生动力迫使你发送心跳,即使你不做前者,rti的正常行为是定期发布多播发现数据(尽管如此,它几乎没有影响)

如果您选择使用可变类型(而不是使用最终可扩展性),则会有更多开销,因为每个样本必须包含存在哪些字段的数据。

如上所述,大约1KB的数据的rti开销最多是微不足道的(如果你可以利用批处理并且具有64KB大小的数据包,那么它甚至会好得多,尽管在这些情况下延迟可能会受到一些影响)

编辑:罗伊打败了我的答案,但我已经输入了大部分内容,所以即使它复制了他已经说过的一些内容,它仍然会发生...

(1)数据开销

动态类型不随每条数据消息一起发送。 相反,它只是在发现时与DataReader或DataWriter的声明一起发送,因此它不算作“数据开销”的一部分。

我不确定你的“动态数据”是什么意思。 数据以序列化形式发送。 如果应用程序没有编译时知识,“DynamicData”只是一个访问它的API。 但无论访问API如何,线路上的格式始终相同。 它是DDS-XTYPES规范中定义的名为XCDR的二进制格式。

开销没有单一的答案。 有多种情况和配置选项会影响它。 我将在下面解释它,但是数字56字节是一个很好的近似帽子,你会在常见的情况下看到。 如果有疑问,最简单的可能是运行wireshark并查看您在特定场景中获得的开销。

根据DDS-RTPS协议,在线路上发送应用数据的“最小”开销是48字节。 这是UDP / IP传输头的补充。 我在下面复制了DDS-RTPS规范中线路格式的草图:

0               8               16              24              32
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
000 |      ‘R’      |      ‘T’      |      ‘P’      |      ‘S’      |
    +---------------+---------------+---------------+---------------+
004 |           protocolVersion     |     vendorId                  |
    +---------------+---------------+---------------+---------------+
008 |                                                               |
    +                                                               +
012 |                       guidPrefix   (12 bytes)                 |
    +                                                               +
016 |                                                               |
    +---------------+---------------+---------------+---------------+
020 |    DATA       |X|X|X|X|K|D|Q|E|     octectsToNextHeader       |
    +---------------+---------------+---------------+---------------+
024 |           extraFlags          |     octectsToInlineQos        |
    +---------------+---------------+---------------+---------------+
028 |                       readerId              (4 Bytes)         |
    +---------------+---------------+---------------+---------------+
032 |                       writerId              (4 Bytes)         |
    +---------------+---------------+---------------+---------------+
036 |                                                               |
    +                       writerSequenceNumber  (8 Bytes)         +
040 |                                                               |
    +---------------+---------------+---------------+---------------+
040 |                                                               |
    ~                       inlineQos     (ommitted if Q==0)        ~
040 |                                                               |
    +---------------+---------------+---------------+---------------+
044 |   encapsulationIdentifier     |     encapsulationOptions      |
    +   -   -   -   +   -   -   -   +   -   -   -   +   -   -   -   +
048 |                                                               |
    ~                       serializedData                          ~
    |                                                               |
    +---------------+---------------+---------------+---------------+

但是有几件事情。 通常,数据还包括源时间戳。 虽然它可以在同一个RTPS消息中的多个“DATA”消息中共享,但您需要至少有一个。 这又增加了12个字节(见下文):

  0               8               16              24              32

    +---------------+---------------+---------------+---------------+

000 |    INFO_TS    |X|X|X|X|X|X|I|E|     octectsToNextHeader       |

    +---------------+---------------+---------------+---------------+

004 |                                                               |

    +                       timeStamp  (8 Bytes)                    +

008 |                                                               |

    +---------------+---------------+---------------+---------------+

最后,对于键控数据,通常在“inlineQos”部分中发送KeyHash。 这又增加了16个字节,见下文:

1

2

3

4

5

6

7

8

9

10

    0               8               16              24              32

    +---------------+---------------+---------------+---------------+

000 |           PID_KEYHASH         |     length = 8                |

    +---------------+---------------+---------------+---------------+

004 |                                                               |

    +                       keyHash  (8 Bytes)                      +

008 |                                                               |

    +---------------+---------------+---------------+---------------+

012 |           PID_SENTINEL        |     padding                   |

    +---------------+---------------+---------------+---------------+

通常,多个DATA可以适合相同的RTPS消息。 在这种情况下,RTPS报头和INFO_TS是共享的,每条消息的“额外”开销是28字节(或者带有KeyHash的44)。考虑到所有这些,我会说开销是60到76个字节。 但这是您在RTPS消息中发送单个DATA项。

最后,还有一个“批处理”功能,可以在Connext DDS中配置,它将在同一个DATA消息中组合多个有效负载。 使用此功能,每个数据消息的“开销”可以低至8个字节(没有时间戳或KeyHash ),16个字节(带有时间戳 ),24个字节(带有KeyHash)或32个字节(带有时间戳和KeyHash)。

(2)DomainId大小的增加

你能解释一下你的目标吗? domainId本身是32个字节。 但是,由于端口号保留,DDS-RTPS将域限制在0到200之间。 每个域保留250个端口的范围,以允许最多124个域参与者在具有确定性分配和非冲突端口号的单个IP地址上运行。

如果您要做的是增加域的数量,并且在同一IP地址上不需要这么多参与者,则可以更改这些默认的RTPS端口映射。我非常有兴趣了解你的用例,因为我们正在实现一个名为“虚拟域”的新功能,这可能有助于以更清洁的方式做类似的事情。

DDS每个数据包和域ID大小的数据开销相关推荐

  1. android+udp传输大小,Android UDP数据包如何接收可变大小的数据包

    我有一个Android应用程序,它监视UDP数据包并调用一个方法来处理收到的消息.我有一个问题,如果传入的消息更长,它将调用方法来处理消息.但是如果传入的消息较短,则不会调用该方法,但如果我发送短消息 ...

  2. 计算机网络课程设计——发送和接收TCP数据包以及发送和捕获ARP数据包

    1.课程设计要求: 发送和接收TCP数据包:TCP是一种面向连接的.可靠的传输层协议.TCP协议工作在网络层IP协议的基础上.本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个T ...

  3. java 捕获数据包,缓存从pcap捕获的数据包

    我想要完成的事情: functionA:使用pcap捕获数据包 . 修改源/目标地址 . 重新计算校验和 . 注入pcap . functionB:创建两个线程 . 线程1发送一个魔术包以唤醒睡眠客户 ...

  4. linux数据包注释,关于 linux中TCP数据包(SKB)序列号的小笔记

    关于  SKB序列号的小笔记 为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq  一直没有找到seq 不清楚在那里初始化了,就 ...

  5. php 根据一个数据组的id 取得另一个数据组对应的名称,怎样从两个spss的数据文件中选出id相同的数据,合并成一个文件...

    求教高手怎样从两个spss的数据文件中选出id相同的数据,合并成一个文件.谢谢.排序后用merge file操作,怎么原数据没有变化?output中提示这些 Renaming has created ...

  6. ROS:bag数据包内容提取——雷达点云数据和imu数据

    通常在利用ros采集传感器数据时,我们会得到一个包含多个传感器数据的bag数据包,下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法. 系统版本:Ubuntu20.04 ROS版本:Noet ...

  7. arduino串口接收数据包_Arduino 串口接收转发十六进制数据,软串口收不到数据

    我是Arduino初学者,今日尝试用Arduino nano 收串口发来16进制数据,再由软串口转发给下级设备,下级设备返回16进制数据.首先简单测试代码如下: #include SoftwareSe ...

  8. android数据包放在,安卓游戏数据包是什么_安卓游戏数据包放在哪里

    现在随着各大游戏厂商的游戏效果越来越华丽,各种游戏也越来越大了.越来越多的游戏也需要用到游戏数据包了,今天小编就和机友们说说关于安卓游戏数据包是什么. 安卓游戏可以分为含数据包的和不含数据包的两个大类 ...

  9. 数据包格式_理解MQTT协议数据包结构

    在本教程中,我们将更详细地介绍MQTT协议,以及MQTT消息或数据包的格式. 我们将研究: MQTT消息格式. MQTT消息头 消息字段和编码 控制消息编码示例 介绍 MQTT是基于二进制的协议,控制 ...

  10. python拦截数据包_使用Python进行TCP数据包注入(伪造)

    数据包注入是对已经建立的网络连接通过构建任意协议(TCP...UDP...)然后用原始套接字发送的方式进行妨碍的过程,这种方法被广泛使用在网络渗透测试中,比如DDOS,端口扫描等. 一个数据包由IP头 ...

最新文章

  1. 2021-08-09 图像灰度二值化
  2. POJ - 1741 Tree(点分治模板题)
  3. 404 为什么是 404?
  4. 房子过户给子女哪种方式最合适?买卖?赠与?继承?不看就亏大了!
  5. plt,cv2图片像素值的立体显示
  6. react 动态添加组件属性_React的组件动态参数使用Underscore和Context来传递
  7. CMakeLists编译
  8. 设计模式在实际业务应用中的介绍之3——外观或门面模式Facade对AOP装配业务工厂的应用...
  9. 数据库和SQL基本知识点
  10. 一位全减器逻辑电路图_用74ls138实现一位全减器 - 数字电路图
  11. 【电子电路】USB串口驱动下载
  12. windows替换鼠标指针
  13. SQL基础编程——介绍及基本语法了解
  14. java 运算符优先级
  15. Spring Cloud Feign 请求时附带请求头
  16. 无线路由器使用有线的桥接方法。
  17. 微软PowerApps整合PowerBI
  18. 谷歌打不开?谷歌在华遭遇至今最大规模屏蔽
  19. 新浪微博橙v升级金v的多种方法
  20. 〖Python自动化办公篇⑮〗- PPT 文件自动化 - 创建 PPT 文件(9种样式)

热门文章

  1. 2021-08-07:与数组中元素的最大异或值。给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是
  2. nginx无网络启动失败——proxy_pass域名DNS解析出错
  3. 西安交大计算机考研分数线2020院线,西安交大考研分数线2020院线_全国硕士研究生招生考试网...
  4. 唯样商城:常见电阻种类
  5. 计算机wifi共享怎么设置,笔者教你win7如何设置wifi共享
  6. MySQL性能优化(六):分区
  7. 机器人核心期刊及会议
  8. 红色警戒2兼容性补丁、联网补丁、全屏显示设置
  9. GC暂停时间过长——未关闭Swap
  10. 主动降噪python_尝试使用Pyadi主动降噪时遇到错误