▎什么是RTPS
在DDS协议中,主要描述了实现数据分发服务的DCPS模型和QoS策略,但是我们还不清楚数据怎样在网络中传输,想要了解这些内容,就需要请出咱们的数据搬运工——RTPS。
RTPS全称是Real-Time Publish-Subscribe Protocol,实时发布订阅协议,定义了DDS基于有线传输的通信行为、报文格式等内容。
RTPS的主要特点包括:
- 支持QoS,可实现实时应用程序之间Best-Effort和Reliable两类通信
- 容错性,允许创建没有单点故障的网络,不依赖集中式服务器
- 可扩展性,允许复杂设备通过新的服务进行扩展,而不破坏向后兼容性和互操作性
- 即插即用,应用程序之间通过自动发现机制,可随时加入或离开网络,而不需要重新配置
- 模块化,允许简单设备实现协议的部分功能,仍可以参与网络通信
RTPS对底层传输要求:
- 应存在广义概念上的单播地址(16Byte以内)
- 具有端口广义概念(4B),可以是UDP端口,也可以是共享内存段等等
- 可以将数据包(具有序列号)发送特定地址/端口
- 可以在一个特定的地址/端口上接收一个数据包
- 消息在传输过程中不完整或者损坏,RTPS将删除消息,即RTPS假设消息完整且未损坏
▎RTPS的内容
RTPS定义了四部分内容,分别为:
- Structure Module:定义了RTPS entity和DDS entity之间的映射关系,以及用于数据交互的通信端点
- Message Module:定义了通信端点之间交互的报文格式
- Behavior Module:定义了通信端点之间的交互行为
- Discovery Module:定义了RTPS entity之间如何自动发现和配置
Structure Module
Structure Module 描述了作为通信参与者的RTPS实体的结构,如下图所示,RTPS实体是被应用程序可见的DDS实体相互通信而使用的协议级端点。