DDS每个数据包和域ID大小的数据开销
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 |
但是有几件事情。 通常,数据还包括源时间戳。 虽然它可以在同一个RTPS消息中的多个“DATA”消息中共享,但您需要至少有一个。 这又增加了12个字节(见下文):
|
最后,对于键控数据,通常在“inlineQos”部分中发送KeyHash。 这又增加了16个字节,见下文:
1 2 3 4 5 6 7 8 9 10 |
|
通常,多个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大小的数据开销相关推荐
- android+udp传输大小,Android UDP数据包如何接收可变大小的数据包
我有一个Android应用程序,它监视UDP数据包并调用一个方法来处理收到的消息.我有一个问题,如果传入的消息更长,它将调用方法来处理消息.但是如果传入的消息较短,则不会调用该方法,但如果我发送短消息 ...
- 计算机网络课程设计——发送和接收TCP数据包以及发送和捕获ARP数据包
1.课程设计要求: 发送和接收TCP数据包:TCP是一种面向连接的.可靠的传输层协议.TCP协议工作在网络层IP协议的基础上.本课程设计的目的是设计一个发送和接收TCP数据包的程序,其功能是填充一个T ...
- java 捕获数据包,缓存从pcap捕获的数据包
我想要完成的事情: functionA:使用pcap捕获数据包 . 修改源/目标地址 . 重新计算校验和 . 注入pcap . functionB:创建两个线程 . 线程1发送一个魔术包以唤醒睡眠客户 ...
- linux数据包注释,关于 linux中TCP数据包(SKB)序列号的小笔记
关于 SKB序列号的小笔记 为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq 一直没有找到seq 不清楚在那里初始化了,就 ...
- php 根据一个数据组的id 取得另一个数据组对应的名称,怎样从两个spss的数据文件中选出id相同的数据,合并成一个文件...
求教高手怎样从两个spss的数据文件中选出id相同的数据,合并成一个文件.谢谢.排序后用merge file操作,怎么原数据没有变化?output中提示这些 Renaming has created ...
- ROS:bag数据包内容提取——雷达点云数据和imu数据
通常在利用ros采集传感器数据时,我们会得到一个包含多个传感器数据的bag数据包,下面将会介绍从bag数据包提取雷达点云数据和imu数据的方法. 系统版本:Ubuntu20.04 ROS版本:Noet ...
- arduino串口接收数据包_Arduino 串口接收转发十六进制数据,软串口收不到数据
我是Arduino初学者,今日尝试用Arduino nano 收串口发来16进制数据,再由软串口转发给下级设备,下级设备返回16进制数据.首先简单测试代码如下: #include SoftwareSe ...
- android数据包放在,安卓游戏数据包是什么_安卓游戏数据包放在哪里
现在随着各大游戏厂商的游戏效果越来越华丽,各种游戏也越来越大了.越来越多的游戏也需要用到游戏数据包了,今天小编就和机友们说说关于安卓游戏数据包是什么. 安卓游戏可以分为含数据包的和不含数据包的两个大类 ...
- 数据包格式_理解MQTT协议数据包结构
在本教程中,我们将更详细地介绍MQTT协议,以及MQTT消息或数据包的格式. 我们将研究: MQTT消息格式. MQTT消息头 消息字段和编码 控制消息编码示例 介绍 MQTT是基于二进制的协议,控制 ...
- python拦截数据包_使用Python进行TCP数据包注入(伪造)
数据包注入是对已经建立的网络连接通过构建任意协议(TCP...UDP...)然后用原始套接字发送的方式进行妨碍的过程,这种方法被广泛使用在网络渗透测试中,比如DDOS,端口扫描等. 一个数据包由IP头 ...
最新文章
- 2021-08-09 图像灰度二值化
- POJ - 1741 Tree(点分治模板题)
- 404 为什么是 404?
- 房子过户给子女哪种方式最合适?买卖?赠与?继承?不看就亏大了!
- plt,cv2图片像素值的立体显示
- react 动态添加组件属性_React的组件动态参数使用Underscore和Context来传递
- CMakeLists编译
- 设计模式在实际业务应用中的介绍之3——外观或门面模式Facade对AOP装配业务工厂的应用...
- 数据库和SQL基本知识点
- 一位全减器逻辑电路图_用74ls138实现一位全减器 - 数字电路图
- 【电子电路】USB串口驱动下载
- windows替换鼠标指针
- SQL基础编程——介绍及基本语法了解
- java 运算符优先级
- Spring Cloud Feign 请求时附带请求头
- 无线路由器使用有线的桥接方法。
- 微软PowerApps整合PowerBI
- 谷歌打不开?谷歌在华遭遇至今最大规模屏蔽
- 新浪微博橙v升级金v的多种方法
- 〖Python自动化办公篇⑮〗- PPT 文件自动化 - 创建 PPT 文件(9种样式)
热门文章
- 2021-08-07:与数组中元素的最大异或值。给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是
- nginx无网络启动失败——proxy_pass域名DNS解析出错
- 西安交大计算机考研分数线2020院线,西安交大考研分数线2020院线_全国硕士研究生招生考试网...
- 唯样商城:常见电阻种类
- 计算机wifi共享怎么设置,笔者教你win7如何设置wifi共享
- MySQL性能优化(六):分区
- 机器人核心期刊及会议
- 红色警戒2兼容性补丁、联网补丁、全屏显示设置
- GC暂停时间过长——未关闭Swap
- 主动降噪python_尝试使用Pyadi主动降噪时遇到错误